llvm-6502/include/llvm
Philip Reames 2e38beb32f Add a pass for inserting safepoints into (nearly) arbitrary IR
This pass is responsible for figuring out where to place call safepoints and safepoint polls. It doesn't actually make the relocations explicit; that's the job of the RewriteStatepointsForGC pass (http://reviews.llvm.org/D6975).

Note that this code is not yet finalized.  Its moving in tree for incremental development, but further cleanup is needed and will happen over the next few days.  It is not yet part of the standard pass order.  

Planned changes in the near future:
 - I plan on restructuring the statepoint rewrite to use the functions add to the IRBuilder a while back. 
 - In the current pass, the function "gc.safepoint_poll" is treated specially but is not an intrinsic. I plan to make identifying the poll function a property of the GCStrategy at some point in the near future.
 - As follow on patches, I will be separating a collection of test cases we have out of tree and submitting them upstream. 
 - It's not explicit in the code, but these two patches are introducing a new state for a statepoint which looks a lot like a patchpoint. There's no a transient form which doesn't yet have the relocations explicitly represented, but does prevent reordering of memory operations. Once this is in, I need to update actually make this explicit by reserving the 'unused' argument of the statepoint as a flag, updating the docs, and making the code explicitly check for such a thing. This wasn't really planned, but once I split the two passes - which was done for other reasons - the intermediate state fell out. Just reminds us once again that we need to merge statepoints and patchpoints at some point in the not that distant future.

Future directions planned:
 - Identifying more cases where a backedge safepoint isn't required to ensure timely execution of a safepoint poll.
 - Tweaking the insertion process to generate easier to optimize IR. (For example, investigating making SplitBackedge) the default.
 - Adding opt-in flags for a GCStrategy to use this pass. Once done, add this pass to the actual pass ordering.

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



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228090 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-04 00:37:33 +00:00
..
ADT STLExtras: Provide less/equal functors with templated function call operators, plus a deref'ing functor template utility 2015-02-02 18:35:10 +00:00
Analysis [LoopVectorize] Fix rebase glitch in r227751 2015-02-03 17:59:53 +00:00
AsmParser
Bitcode IR: Assembly and bitcode for GenericDebugNode 2015-02-03 21:54:14 +00:00
CodeGen [PBQP] Provide more information in the debug prints 2015-02-03 23:40:24 +00:00
Config [Cygming] Seek also chkstk_ms, or JIT fails with DLL builds. It is fixup for r227519. 2015-01-30 13:01:19 +00:00
DebugInfo/DWARF Move DebugInfo to DebugInfo/DWARF. 2015-01-30 18:07:45 +00:00
ExecutionEngine [Orc] Make the ObjectLinkingLayer take ownership of object files until 2015-02-02 04:32:17 +00:00
IR Add a pass for inserting safepoints into (nearly) arbitrary IR 2015-02-04 00:37:33 +00:00
IRReader
LineEditor
Linker Use the DiagnosticHandler to print diagnostics when reading bitcode. 2015-01-10 00:07:30 +00:00
LTO [LTO API] split lto_codegen_compile to lto_codegen_optimize and 2015-02-03 18:39:15 +00:00
MC Compute the ELF SectionKind from the flags. 2015-01-29 17:33:21 +00:00
Object dd the option, -link-opt-hints to llvm-objdump used with -macho to print the 2015-01-27 21:28:24 +00:00
Option
ProfileData InstrProf: Make CounterMappingRegions less confusing to construct 2015-02-03 23:59:33 +00:00
Support Support: Add string => unsigned mapping for DW_TAG 2015-02-03 21:16:49 +00:00
TableGen
Target Only access TLOF via the TargetMachine, not TargetLowering. 2015-02-03 07:22:52 +00:00
Transforms Add a pass for inserting safepoints into (nearly) arbitrary IR 2015-02-04 00:37:33 +00:00
CMakeLists.txt
InitializePasses.h Add a pass for inserting safepoints into (nearly) arbitrary IR 2015-02-04 00:37:33 +00:00
LinkAllIR.h
LinkAllPasses.h Add straight-line strength reduction to LLVM 2015-02-03 19:37:06 +00:00
module.modulemap Bring the modules buildbot back to life after r226940. 2015-01-24 01:55:52 +00:00
module.modulemap.build
Pass.h
PassAnalysisSupport.h
PassInfo.h
PassManager.h
PassRegistry.h
PassSupport.h