llvm-6502/lib/IR
Sanjoy Das ead2d1fbe0 [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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237214 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-12 23:52:24 +00:00
..
AsmWriter.cpp [Statepoint] Clean up Statepoint.h: accessor names. 2015-05-06 02:36:26 +00:00
AttributeImpl.h Add missing dereferenceable_or_null getters 2015-05-06 17:41:54 +00:00
Attributes.cpp Change typeIncompatible to return an AttrBuilder instead of new-ing an AttributeSet. 2015-05-06 23:19:56 +00:00
AutoUpgrade.cpp AVX-512: Changed CC parameter in "cmp" intrinsic 2015-05-11 09:03:14 +00:00
BasicBlock.cpp
CMakeLists.txt [opaque pointer type] Explicit pointee type for GEPOperator/GEPConstantExpr. 2015-05-08 00:42:26 +00:00
Comdat.cpp
ConstantFold.cpp Recommit r236670: [opaque pointer type] Pass explicit pointer type through GEP constant folding"" 2015-05-07 17:28:58 +00:00
ConstantFold.h Recommit r236670: [opaque pointer type] Pass explicit pointer type through GEP constant folding"" 2015-05-07 17:28:58 +00:00
ConstantRange.cpp
Constants.cpp [opaque pointer type] Explicit pointee type for GEPOperator/GEPConstantExpr. 2015-05-08 00:42:26 +00:00
ConstantsContext.h [opaque pointer type] Explicit pointee type for GEPOperator/GEPConstantExpr. 2015-05-08 00:42:26 +00:00
Core.cpp
DataLayout.cpp
DebugInfo.cpp
DebugInfoMetadata.cpp
DebugLoc.cpp
DiagnosticInfo.cpp
DiagnosticPrinter.cpp
DIBuilder.cpp
Dominators.cpp [DomTree] verifyDomTree to unconditionally perform DT verification 2015-05-06 08:18:41 +00:00
Function.cpp Replace branch-to-unreachable with assertion. 2015-05-08 18:52:28 +00:00
GCOV.cpp
Globals.cpp
GVMaterializer.cpp
InlineAsm.cpp
Instruction.cpp
Instructions.cpp [opaque pointer type] Track explicit GEP pointee type through in-memory IR 2015-05-05 18:03:48 +00:00
IntrinsicInst.cpp
IRBuilder.cpp [Statepoints] Support for "patchable" statepoints. 2015-05-12 23:52:24 +00:00
IRPrintingPasses.cpp
LegacyPassManager.cpp
LLVMBuild.txt
LLVMContext.cpp Fix LLVMContext to match what MDKind names that the LL parser permits. Fixes PR21799! 2014-12-11 02:10:28 +00:00
LLVMContextImpl.cpp
LLVMContextImpl.h
Makefile
Mangler.cpp
MDBuilder.cpp
Metadata.cpp
MetadataImpl.h
MetadataTracking.cpp
Module.cpp
module.modulemap
Operator.cpp [opaque pointer type] Explicit pointee type for GEPOperator/GEPConstantExpr. 2015-05-08 00:42:26 +00:00
Pass.cpp
PassManager.cpp
PassRegistry.cpp
Statepoint.cpp
SymbolTableListTraitsImpl.h
Type.cpp
TypeFinder.cpp
Use.cpp
User.cpp
Value.cpp
ValueSymbolTable.cpp Changed renaming of local symbols by inserting a dot vefore the numeric suffix. 2015-05-12 16:47:30 +00:00
ValueTypes.cpp
Verifier.cpp [Statepoints] Support for "patchable" statepoints. 2015-05-12 23:52:24 +00:00