llvm-6502/include/llvm
Philip Reames 204e21b51a [Statepoints 1/4] Statepoint infrastructure for garbage collection: IR Intrinsics
The statepoint intrinsics are intended to enable precise root tracking through the compiler as to support garbage collectors of all types. The addition of the statepoint intrinsics to LLVM should have no impact on the compilation of any program which does not contain them. There are no side tables created, no extra metadata, and no inhibited optimizations.

A statepoint works by transforming a call site (or safepoint poll site) into an explicit relocation operation. It is the frontend's responsibility (or eventually the safepoint insertion pass we've developed, but that's not part of this patch series) to ensure that any live pointer to a GC object is correctly added to the statepoint and explicitly relocated. The relocated value is just a normal SSA value (as seen by the optimizer), so merges of relocated and unrelocated values are just normal phis. The explicit relocation operation, the fact the statepoint is assumed to clobber all memory, and the optimizers standard semantics ensure that the relocations flow through IR optimizations correctly.

This is the first patch in a small series.  This patch contains only the IR parts; the documentation and backend support will be following separately.  The entire series can be seen as one combined whole in http://reviews.llvm.org/D5683.

Reviewed by: atrick, ributzka





git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@223078 91177308-0d34-0410-b5e6-96231b3b80d8
2014-12-01 21:18:12 +00:00
..
ADT Tidied up target triple OS detection. NFC 2014-11-22 19:12:10 +00:00
Analysis [stack protector] Set edge weights for newly created basic blocks. 2014-12-01 04:27:03 +00:00
AsmParser Pass a MemoryBufferRef when we can avoid taking ownership. 2014-08-26 21:49:01 +00:00
Bitcode Revert commits r222146 and r222137. 2014-11-17 19:26:40 +00:00
CodeGen Revert "Masked Vector Load and Store Intrinsics." 2014-11-28 21:29:14 +00:00
Config Expose LLVM version string via macro in llvm-config.h, and modify Go bindings 2014-11-19 03:34:17 +00:00
DebugInfo Reapply "[dwarfdump] Add support for dumping accelerator tables." 2014-11-14 16:15:53 +00:00
ExecutionEngine [MCJIT] Replace JITEventListener::anchor (temporarily removed in r222861), and 2014-11-27 01:41:16 +00:00
IR [Statepoints 1/4] Statepoint infrastructure for garbage collection: IR Intrinsics 2014-12-01 21:18:12 +00:00
IRReader Pass a MemoryBufferRef when we can avoid taking ownership. 2014-08-26 21:49:01 +00:00
LineEditor
Linker Partial revert of r222986. 2014-12-01 16:32:20 +00:00
LTO Remove StringMap::GetOrCreateValue in favor of StringMap::insert 2014-11-19 05:49:42 +00:00
MC [NVPTX] Do not emit .weak symbols for NVPTX 2014-12-01 21:16:17 +00:00
Object Widen ELFYAML relocation type to 32 bits 2014-11-27 17:20:48 +00:00
Option Add an overload of getLastArgNoClaim taking two OptSpecifiers. 2014-09-12 19:42:53 +00:00
ProfileData llvm-cov: Sink some reporting logic into CoverageMapping 2014-11-14 01:50:32 +00:00
Support Support: remove some variable names 2014-11-29 00:10:26 +00:00
TableGen Revert r222965 "Make MultiClass::DefPrototypes own their Records to fix memory leaks." 2014-11-30 00:43:50 +00:00
Target Revert "Masked Vector Load and Store Intrinsics." 2014-11-28 21:29:14 +00:00
Transforms DebugIR: Delete -debug-ir 2014-11-29 03:15:47 +00:00
CMakeLists.txt Remove llvm_headers_do_not_build for the benefit of XCode and Visual Studio users. 2014-08-14 00:51:47 +00:00
InitializePasses.h DebugIR: Delete -debug-ir 2014-11-29 03:15:47 +00:00
LinkAllIR.h
LinkAllPasses.h Remove the unused FindUsedTypes pass. 2014-11-24 20:53:26 +00:00
module.modulemap Try to make the modules buildbot happy again. 2014-11-26 03:44:47 +00:00
module.modulemap.build [modules] Add module maps for LLVM. These are not quite ready for prime-time 2014-05-21 02:46:14 +00:00
Pass.h Revert "[PM] Add pass run listeners to the pass manager." 2014-05-15 17:49:20 +00:00
PassAnalysisSupport.h
PassInfo.h Remove pimpl class from PassRegistry. 2014-06-12 16:06:51 +00:00
PassManager.h
PassRegistry.h [PM] Remove an unused and rather expensive mapping from an analysis 2014-10-06 00:30:59 +00:00
PassSupport.h Defining a new API for debug options that doesn't rely on static global cl::opts. 2014-10-15 21:54:35 +00:00