1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 12:12:47 +01:00
llvm-mirror/include/llvm/ADT
Serge Guelton 6a3f368498 Re-commit rL353927, patch included
Make llvm::Optional<T> trivially copyable when T is trivially copyable

This is an ever-recurring issue (see https://bugs.llvm.org/show_bug.cgi?id=39427 and https://bugs.llvm.org/show_bug.cgi?id=35978)
but I believe that thanks to https://reviews.llvm.org/D54472 we can now ship a decent implementation of this.

Basically the fact that llvm::is_trivially_copyable has a consistent behavior across compilers should prevent any ABI issue,
and using in-place new instead of memcpy should keep compiler bugs away.

This patch is slightly different from the original revision https://reviews.llvm.org/rL353927 but achieves the same goal. It just avoids
going through std::conditional which may the code more explicit.

llvm-svn: 353962
2019-02-13 18:12:04 +00:00
..
AllocatorList.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Any.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
APFloat.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
APInt.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
APSInt.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
ArrayRef.h Revert r351954 "Add a value_type to ArrayRef." 2019-01-25 15:25:52 +00:00
bit.h Replace llvm::isPodLike<...> by llvm::is_trivially_copyable<...> 2019-01-20 21:19:56 +00:00
BitmaskEnum.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
BitVector.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
BreadthFirstIterator.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
CachedHashString.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
DAGDeltaAlgorithm.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
DeltaAlgorithm.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
DenseMap.h Replace llvm::isPodLike<...> by llvm::is_trivially_copyable<...> 2019-01-20 21:19:56 +00:00
DenseMapInfo.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
DenseSet.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
DepthFirstIterator.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
edit_distance.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
EpochTracker.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
EquivalenceClasses.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
fallible_iterator.h [ADT] Add a fallible_iterator wrapper. 2019-02-05 23:17:11 +00:00
FoldingSet.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
FunctionExtras.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
GraphTraits.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Hashing.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
ilist_base.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
ilist_iterator.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
ilist_node_base.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
ilist_node_options.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
ilist_node.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
ilist.h [ADT] Notify ilist traits about in-list transfers 2019-01-23 22:59:52 +00:00
ImmutableList.h Replace llvm::isPodLike<...> by llvm::is_trivially_copyable<...> 2019-01-20 21:19:56 +00:00
ImmutableMap.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
ImmutableSet.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
IndexedMap.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
IntEqClasses.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
IntervalMap.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
IntrusiveRefCntPtr.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
iterator_range.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
iterator.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MapVector.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
None.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Optional.h Re-commit rL353927, patch included 2019-02-13 18:12:04 +00:00
PackedVector.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
PointerEmbeddedInt.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
PointerIntPair.h Fix llvm::is_trivially_copyable portability issues 2019-01-22 13:48:55 +00:00
PointerSumType.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
PointerUnion.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
PostOrderIterator.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
PriorityQueue.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
PriorityWorklist.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
SCCIterator.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
ScopedHashTable.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
ScopeExit.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Sequence.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
SetOperations.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
SetVector.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
simple_ilist.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
SmallBitVector.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
SmallPtrSet.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
SmallSet.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
SmallString.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
SmallVector.h [ADT] Move away from __attribute__((always_inline)). 2019-01-22 22:40:35 +00:00
SparseBitVector.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
SparseMultiSet.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
SparseSet.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Statistic.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
STLExtras.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
StringExtras.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
StringMap.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
StringRef.h [ADT] Move away from __attribute__((always_inline)). 2019-01-22 22:40:35 +00:00
StringSet.h Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
StringSwitch.h [ADT] Move away from __attribute__((always_inline)). 2019-01-22 22:40:35 +00:00
TinyPtrVector.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Triple.h [ADT] Refactor the Windows query functions (NFC) 2019-02-04 23:34:38 +00:00
Twine.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
UniqueVector.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
VariadicFunction.h Fix misspelled filenames in file headers 2019-02-07 14:38:25 +00:00