teak-llvm/llvm/lib/CodeGen/SelectionDAG
Sanjoy Das a1d39ba940 [Statepoints] Support for "patchable" statepoints.
Summary:
This change adds two new parameters to the statepoint intrinsic, `i64 id`
and `i32 num_patch_bytes`.  `id` gets propagated to the ID field
in the generated StackMap section.  If the `num_patch_bytes` is
non-zero then the statepoint is lowered to `num_patch_bytes` bytes of
nops instead of a call (the spill and reload code remains unchanged).
A non-zero `num_patch_bytes` is useful in situations where a language
runtime requires complete control over how a call is lowered.

This change brings statepoints one step closer to patchpoints.  With
some additional work (that is not part of this patch) it should be
possible to get rid of `TargetOpcode::STATEPOINT` altogether.

PlaceSafepoints generates `statepoint` wrappers with `id` set to
`0xABCDEF00` (the old default value for the ID reported in the stackmap)
and `num_patch_bytes` set to `0`.  This can be made more sophisticated
later.

Reviewers: reames, pgavlin, swaroop.sridhar, AndyAyers

Subscribers: llvm-commits

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

llvm-svn: 237214
2015-05-12 23:52:24 +00:00
..
CMakeLists.txt [Statepoints 3/4] Statepoint infrastructure for garbage collection: SelectionDAGBuilder 2014-12-02 18:50:36 +00:00
DAGCombiner.cpp propagate IR-level fast-math-flags to DAG nodes; 2nd try; NFC 2015-05-11 21:07:09 +00:00
FastISel.cpp [Fast-ISel] Don't mark the first use of a remat constant as killed. 2015-05-09 00:51:03 +00:00
FunctionLoweringInfo.cpp Fixing build warnings 2015-05-11 20:45:11 +00:00
InstrEmitter.cpp IR: Give 'DI' prefix to debug info metadata 2015-04-29 16:38:44 +00:00
InstrEmitter.h Remove the uses of getSubtargetImpl from InstrEmitter and remove 2014-10-09 01:35:29 +00:00
LegalizeDAG.cpp Migrate existing backends that care about software floating point 2015-05-12 01:26:05 +00:00
LegalizeFloatTypes.cpp Reapply r235977 "[DebugInfo] Add debug locations to constant SD nodes" 2015-04-28 14:05:47 +00:00
LegalizeIntegerTypes.cpp Reinstate revisions r234755, r234759, r234760 2015-04-30 17:15:56 +00:00
LegalizeTypes.cpp Reapply r235977 "[DebugInfo] Add debug locations to constant SD nodes" 2015-04-28 14:05:47 +00:00
LegalizeTypes.h Masked gather and scatter intrinsics - enabled codegen for KNL. 2015-05-03 07:12:25 +00:00
LegalizeTypesGeneric.cpp Reapply r235977 "[DebugInfo] Add debug locations to constant SD nodes" 2015-04-28 14:05:47 +00:00
LegalizeVectorOps.cpp Masked gather and scatter intrinsics - enabled codegen for KNL. 2015-05-03 07:12:25 +00:00
LegalizeVectorTypes.cpp [LegalizeVectorTypes] Allow single loads and stores for more short vectors 2015-05-05 19:32:57 +00:00
LLVMBuild.txt
Makefile
ResourcePriorityQueue.cpp unique_ptrify ResourcePriorityQueue::ResourceModel 2015-03-03 20:49:08 +00:00
ScheduleDAGFast.cpp Update SetVector to rely on the underlying set's insert to return a pair<iterator, bool> 2014-11-19 07:49:26 +00:00
ScheduleDAGRRList.cpp Use 'override/final' instead of 'virtual' for overridden methods 2015-04-11 02:11:45 +00:00
ScheduleDAGSDNodes.cpp Prefer SmallVector::append/insert over push_back loops. 2015-02-17 15:29:18 +00:00
ScheduleDAGSDNodes.h Use 'override/final' instead of 'virtual' for overridden methods 2015-04-11 02:11:45 +00:00
ScheduleDAGVLIW.cpp Use 'override/final' instead of 'virtual' for overridden methods 2015-04-11 02:11:45 +00:00
SDNodeDbgValue.h constify the getters in SDNodeDbgValue. 2014-10-13 20:43:47 +00:00
SelectionDAG.cpp propagate IR-level fast-math-flags to DAG nodes; 2nd try; NFC 2015-05-11 21:07:09 +00:00
SelectionDAGBuilder.cpp propagate IR-level fast-math-flags to DAG nodes; 2nd try; NFC 2015-05-11 21:07:09 +00:00
SelectionDAGBuilder.h [SelectionDAG] Delete SelectionDAGBuilder::removeValue. NFC. 2015-05-06 18:02:10 +00:00
SelectionDAGDumper.cpp Extend the statepoint intrinsic to allow statepoints to be marked as transitions from GC-aware code to code that is not GC-aware. 2015-05-08 18:07:42 +00:00
SelectionDAGISel.cpp [Fast-ISel] Clear kill flags on registers replaced by updateValueMap. 2015-05-08 20:46:54 +00:00
SelectionDAGPrinter.cpp Revert "Introduce a string_ostream string builder facilty" 2014-06-26 22:52:05 +00:00
StatepointLowering.cpp [Statepoints] Support for "patchable" statepoints. 2015-05-12 23:52:24 +00:00
StatepointLowering.h Run StatepointLowering.{cpp,h} through clang-format. 2015-04-29 21:52:45 +00:00
TargetLowering.cpp propagate IR-level fast-math-flags to DAG nodes; 2nd try; NFC 2015-05-11 21:07:09 +00:00
TargetSelectionDAGInfo.cpp Have TargetSelectionDAGInfo take a DataLayout initializer rather than 2014-06-06 19:04:48 +00:00