1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-20 11:33:24 +02:00
llvm-mirror/include/llvm/ADT
Chandler Carruth 8079aabce6 [MI] Change the array of MachineMemOperand pointers to be
a generically extensible collection of extra info attached to
a `MachineInstr`.

The primary change here is cleaning up the APIs used for setting and
manipulating the `MachineMemOperand` pointer arrays so chat we can
change how they are allocated.

Then we introduce an extra info object that using the trailing object
pattern to attach some number of MMOs but also other extra info. The
design of this is specifically so that this extra info has a fixed
necessary cost (the header tracking what extra info is included) and
everything else can be tail allocated. This pattern works especially
well with a `BumpPtrAllocator` which we use here.

I've also added the basic scaffolding for putting interesting pointers
into this, namely pre- and post-instruction symbols. These aren't used
anywhere yet, they're just there to ensure I've actually gotten the data
structure types correct. I'll flesh out support for these in
a subsequent patch (MIR dumping, parsing, the works).

Finally, I've included an optimization where we store any single pointer
inline in the `MachineInstr` to avoid the allocation overhead. This is
expected to be the overwhelmingly most common case and so should avoid
any memory usage growth due to slightly less clever / dense allocation
when dealing with >1 MMO. This did require several ergonomic
improvements to the `PointerSumType` to reasonably support the various
usage models.

This also has a side effect of freeing up 8 bits within the
`MachineInstr` which could be repurposed for something else.

The suggested direction here came largely from Hal Finkel. I hope it was
worth it. ;] It does hopefully clear a path for subsequent extensions
w/o nearly as much leg work. Lots of thanks to Reid and Justin for
careful reviews and ideas about how to do all of this.

Differential Revision: https://reviews.llvm.org/D50701

llvm-svn: 339940
2018-08-16 21:30:05 +00:00
..
AllocatorList.h [ADT] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC). 2017-06-13 22:11:49 +00:00
Any.h Fix linker failure with Any. 2018-07-20 17:50:53 +00:00
APFloat.h Remove \brief commands from doxygen comments. 2018-05-01 15:54:18 +00:00
APInt.h [ADT] Replace APInt::WORD_MAX with APInt::WORDTYPE_MAX 2018-08-16 11:08:23 +00:00
APSInt.h Remove \brief commands from doxygen comments. 2018-05-01 15:54:18 +00:00
ArrayRef.h Revert "ADT: Move ArrayRef comparison operators into the class" 2018-06-28 12:10:21 +00:00
BitmaskEnum.h
BitVector.h Remove \brief commands from doxygen comments. 2018-05-01 15:54:18 +00:00
BreadthFirstIterator.h [ADT] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC). 2017-06-13 22:11:49 +00:00
CachedHashString.h Add CachedHashStringRef::data(). 2018-07-10 15:10:49 +00:00
DAGDeltaAlgorithm.h [ADT] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC). 2017-06-13 22:11:49 +00:00
DeltaAlgorithm.h [ADT] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC). 2017-06-13 22:11:49 +00:00
DenseMap.h Fix few g++ 8 warning with non obvious copy object operations 2018-08-09 18:29:07 +00:00
DenseMapInfo.h [ADT] Allow llvm::hash_code as DenseMap key. 2018-06-20 13:56:25 +00:00
DenseSet.h Remove trailing space 2018-07-30 19:41:25 +00:00
DepthFirstIterator.h Remove \brief commands from doxygen comments. 2018-05-01 15:54:18 +00:00
edit_distance.h Remove \brief commands from doxygen comments. 2018-05-01 15:54:18 +00:00
EpochTracker.h Remove \brief commands from doxygen comments. 2018-05-01 15:54:18 +00:00
EquivalenceClasses.h [NFC] Add missing unit tests for EquivalenceClasses 2017-11-27 11:20:58 +00:00
FoldingSet.h [ADT] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-10-28 00:24:26 +00:00
FunctionExtras.h Fix MSVC "signed/unsigned mismatch" warning. NFCI. 2018-07-10 09:46:57 +00:00
GraphTraits.h [ADT] Add some documentation for GraphTraits. 2018-08-02 00:21:12 +00:00
Hashing.h Remove \brief commands from doxygen comments. 2018-05-01 15:54:18 +00:00
ilist_base.h [ADT] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC). 2017-06-13 22:11:49 +00:00
ilist_iterator.h [ADT] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC). 2017-06-13 22:11:49 +00:00
ilist_node_base.h
ilist_node_options.h IWYU for llvm-config.h, removals. Also see r331184. 2018-04-30 15:26:01 +00:00
ilist_node.h Remove \brief commands from doxygen comments. 2018-05-01 15:54:18 +00:00
ilist.h Remove \brief commands from doxygen comments. 2018-05-01 15:54:18 +00:00
ImmutableList.h [ADT] Implemented unittests for ImmutableList 2018-08-13 17:32:48 +00:00
ImmutableMap.h [ADT] Annotate immutable list/set/map update methods with LLVM_NODISCARD. 2018-05-31 17:32:29 +00:00
ImmutableSet.h [ADT] Annotate immutable list/set/map update methods with LLVM_NODISCARD. 2018-05-31 17:32:29 +00:00
IndexedMap.h [ADT] Partial re-commit of r303383. Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC). 2017-06-14 21:42:24 +00:00
IntEqClasses.h
IntervalMap.h [ADT] Partial re-commit of r303383. Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC). 2017-06-14 21:42:24 +00:00
IntrusiveRefCntPtr.h [ADT] Partial re-commit of r303383. Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC). 2017-06-14 21:42:24 +00:00
iterator_range.h [ADT] drop_begin: use adl_begin/adl_end. NFC. 2018-06-27 19:39:03 +00:00
iterator.h Expose CFG Update struct. Define GraphTraits to get children given a snapshot CFG. 2018-08-14 16:44:28 +00:00
MapVector.h Remove \brief commands from doxygen comments. 2018-05-01 15:54:18 +00:00
None.h Remove \brief commands from doxygen comments. 2018-05-01 15:54:18 +00:00
Optional.h [ADT] Make moving Optional not reset the Optional it moves from. 2018-01-25 17:24:22 +00:00
PackedVector.h Remove \brief commands from doxygen comments. 2018-05-01 15:54:18 +00:00
PointerEmbeddedInt.h PointerLikeTypeTraits: class->struct & remove the base definition 2017-08-09 18:34:21 +00:00
PointerIntPair.h [ADT] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-10-28 00:24:26 +00:00
PointerSumType.h [MI] Change the array of MachineMemOperand pointers to be 2018-08-16 21:30:05 +00:00
PointerUnion.h Use branch funnels for virtual calls when retpoline mitigation is enabled. 2018-03-09 19:11:44 +00:00
PostOrderIterator.h Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
PriorityQueue.h
PriorityWorklist.h Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
SCCIterator.h Revert "CallGraphSCCPass: iterate over all functions." 2018-07-13 16:32:31 +00:00
ScopedHashTable.h [ADT] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC). 2017-06-13 22:11:49 +00:00
ScopeExit.h Give scope_exit helper correct move semantics 2018-01-25 16:55:48 +00:00
Sequence.h [ADT] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-16 23:10:25 +00:00
SetOperations.h
SetVector.h Remove \brief commands from doxygen comments. 2018-05-01 15:54:18 +00:00
simple_ilist.h [ADT] Partial re-commit of r303383. Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC). 2017-06-14 21:42:24 +00:00
SmallBitVector.h [ADT] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC). 2017-06-13 22:11:49 +00:00
SmallPtrSet.h Remove \brief commands from doxygen comments. 2018-05-01 15:54:18 +00:00
SmallSet.h Recommit r334887: [SmallSet] Add SmallSetIterator. 2018-07-24 10:32:54 +00:00
SmallString.h
SmallVector.h Fix few g++ 8 warning with non obvious copy object operations 2018-08-09 18:29:07 +00:00
SparseBitVector.h [ADT] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-16 23:10:25 +00:00
SparseMultiSet.h Report fatal error in the case of out of memory 2018-02-20 05:41:26 +00:00
SparseSet.h Report fatal error in the case of out of memory 2018-02-20 05:41:26 +00:00
Statistic.h Remove \brief commands from doxygen comments. 2018-05-01 15:54:18 +00:00
STLExtras.h [tablegen] Improve performance of -gen-register-info by replacing barely-necessary std::map with a sorted vector 2018-08-08 00:19:59 +00:00
StringExtras.h [ADT] Replace std::isprint by llvm::isPrint. 2018-07-26 15:31:41 +00:00
StringMap.h Use uniform mechanism for OOM errors handling 2018-06-09 05:19:45 +00:00
StringRef.h [ADT] Add StringRef::rsplit(StringRef Separator). 2018-06-08 12:42:12 +00:00
StringSet.h [ADT] Fix some Clang-tidy modernize-use-using warnings; other minor fixes (NFC). 2017-05-16 23:10:25 +00:00
StringSwitch.h Remove \brief commands from doxygen comments. 2018-05-01 15:54:18 +00:00
TinyPtrVector.h [PM/LoopUnswitch] Add partial non-trivial unswitching for invariant 2018-06-21 06:14:03 +00:00
Triple.h [OpenEmbedded] Add OpenEmbedded vendor 2018-07-05 23:41:17 +00:00
Twine.h [ADT] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-10-28 00:24:26 +00:00
UniqueVector.h Remove \brief commands from doxygen comments. 2018-05-01 15:54:18 +00:00
VariadicFunction.h Remove \brief commands from doxygen comments. 2018-05-01 15:54:18 +00:00