1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-25 05:52:53 +02:00
llvm-mirror/include/llvm/ADT
Chandler Carruth 2cfc282af1 [ADT] Add a sum type abstraction for pointer-like types.
This is a much more general and powerful form of PointerUnion. It
provides a reasonably complete sum type (from type theory) for
pointer-like types. It has several significant advantages over the
existing PointerUnion infrastructure:

1) It allows more than two pointer types to participate without awkward
   nesting structures.
2) It directly exposes the tag so that it is convenient to write
   switches over the possible members.
3) It can re-use the same type for multiple tag values, something that
   has been worked around by either abusing PointerIntPair or defining
   nonce types and doing unsafe pointer casting.
4) It supports customization of the PointerLikeTypeTraits used for
   specific member types. This means it could (in theory) be used even
   with types that are over-aligned on allocation to expose larger
   numbers of bits to the tag.

All in all, I think it is at least complimentary to the existing
infrastructure, and a strict improvement for some use cases.

Differential Revision: http://reviews.llvm.org/D15843

llvm-svn: 257282
2016-01-10 08:48:23 +00:00
..
APFloat.h Add isInteger() to APFloat. 2015-11-16 21:52:48 +00:00
APInt.h Fix APInt value initialization to give a zero value as any sane integer type 2015-09-04 04:08:36 +00:00
APSInt.h
ArrayRef.h Add hashing and DenseMapInfo for ArrayRef 2015-10-18 14:04:56 +00:00
BitVector.h [ADT] Make capacity_in_bytes support BitVector. NFC. 2015-11-16 04:02:36 +00:00
DAGDeltaAlgorithm.h
DeltaAlgorithm.h
DenseMap.h DenseMap: we're trying to call the reserved global placement allocation 2015-10-02 00:46:33 +00:00
DenseMapInfo.h Add hashing and DenseMapInfo for ArrayRef 2015-10-18 14:04:56 +00:00
DenseSet.h
DepthFirstIterator.h
edit_distance.h
EpochTracker.h
EquivalenceClasses.h
FoldingSet.h
GraphTraits.h
Hashing.h
ilist_node.h ADT: Avoid relying on UB in ilist_node::getNextNode() 2015-11-11 02:26:42 +00:00
ilist.h ADT: Avoid relying on UB in ilist_node::getNextNode() 2015-11-11 02:26:42 +00:00
ImmutableList.h Fix Clang-tidy modernize-use-nullptr warnings in examples and include directories; other minor cleanups. 2015-09-29 18:02:48 +00:00
ImmutableMap.h Fix Clang-tidy modernize-use-nullptr warnings in examples and include directories; other minor cleanups. 2015-09-29 18:02:48 +00:00
ImmutableSet.h
IndexedMap.h
IntEqClasses.h IntEqClasses: Let join() return the new leader 2016-01-08 01:16:39 +00:00
IntervalMap.h
IntrusiveRefCntPtr.h Fix Clang-tidy modernize-use-nullptr warnings in examples and include directories; other minor cleanups. 2015-09-29 18:02:48 +00:00
iterator_range.h Remove iterator_range::end. 2015-09-24 00:23:07 +00:00
iterator.h
MapVector.h
None.h
Optional.h
PackedVector.h
PointerIntPair.h [ptr-traits] Refactor how PointerIntPair does its pointer manipulation 2015-12-30 03:56:19 +00:00
PointerSumType.h [ADT] Add a sum type abstraction for pointer-like types. 2016-01-10 08:48:23 +00:00
PointerUnion.h [ADT] Run clang-format over PointerUnion.h and clean up its comments. 2015-12-28 19:52:46 +00:00
PostOrderIterator.h Remove unnecessary argument in ipo iterator 2015-10-13 07:26:04 +00:00
PriorityQueue.h
SCCIterator.h
ScopedHashTable.h Fix missing C++ mode comment 2015-09-21 15:59:41 +00:00
SetOperations.h [SimplifyCFG] Merge conditional stores 2015-11-04 15:28:04 +00:00
SetVector.h Avoid undefined behavior when vector is empty. 2015-12-10 16:35:06 +00:00
SmallBitVector.h Simplify SmallBitVector::applyMask by consolidating common code for 32- and 64-bit builds 2015-09-18 15:08:24 +00:00
SmallPtrSet.h
SmallSet.h
SmallString.h
SmallVector.h [ADT] Force inline several super boring and unusually hot methods on 2015-09-10 09:46:47 +00:00
SparseBitVector.h Fix Clang-tidy modernize-use-nullptr warnings in examples and include directories; other minor cleanups. 2015-09-29 18:02:48 +00:00
SparseMultiSet.h
SparseSet.h
Statistic.h Simplify memory management with std::unique_ptr. 2015-12-16 22:28:34 +00:00
STLExtras.h Introduce a range version of std::find, and use in SCEV 2015-12-01 07:49:27 +00:00
StringExtras.h
StringMap.h [llvm-dwp] Initial partial prototype 2015-12-01 00:48:39 +00:00
StringRef.h [ADT] Remove a couple of the always inline attributes I added. 2015-09-21 18:02:24 +00:00
StringSet.h [llvm-dwp] Initial partial prototype 2015-12-01 00:48:39 +00:00
StringSwitch.h [ADT] Micro-optimize and force inlining for string switches. 2015-09-10 09:25:59 +00:00
TinyPtrVector.h
Triple.h [ARM] Add ARMv8.2-A to TargetParser 2015-12-01 10:33:56 +00:00
Twine.h [ADT] Remove 'reinterpreted as a pointer' from some Twine comments. Integers have been stored directly in a union for some time. NFC 2016-01-10 08:27:13 +00:00
UniqueVector.h Fix ADT/UniqueVector.h to resolve implicit dependency. 2015-10-24 00:27:22 +00:00
VariadicFunction.h