aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/StackMaps.cpp
AgeCommit message (Collapse)AuthorFilesLines
2013-12-14[Stackmap] Refactor operand parsing.Juergen Ributzka1-91/+74
llvm-svn: 197329
2013-12-14[Stackmap] Liveness Analysis PassJuergen Ributzka1-13/+105
This optional register liveness analysis pass can be enabled with either -enable-stackmap-liveness, -enable-patchpoint-liveness, or both. The pass traverses each basic block in a machine function. For each basic block the instructions are processed in reversed order and if a patchpoint or stackmap instruction is encountered the current live-out register set is encoded as a register mask and attached to the instruction. Later on during stackmap generation the live-out register mask is processed and also emitted as part of the stackmap. This information is optional and intended for optimization purposes only. This will enable a client of the stackmap to reason about the registers it can use and which registers need to be preserved. Reviewed by Andy llvm-svn: 197317
2013-12-13Revert "Liveness Analysis Pass"Andrew Trick1-106/+13
This reverts commit r197254. This was an accidental merge of Juergen's patch. It will be checked in shortly, but wasn't meant to go in quite yet. Conflicts: include/llvm/CodeGen/StackMaps.h lib/CodeGen/StackMaps.cpp test/CodeGen/X86/stackmap-liveness.ll llvm-svn: 197260
2013-12-13Grow the stackmap/patchpoint format to hold 64-bit IDs.Andrew Trick1-7/+6
llvm-svn: 197255
2013-12-13Liveness Analysis PassAndrew Trick1-12/+105
llvm-svn: 197254
2013-11-29Refactor a lot of patchpoint/stackmap related code to simplify and make itLang Hames1-6/+58
target independent. Most of the x86 specific stackmap/patchpoint handling was necessitated by the use of the native address-mode format for frame index operands. PEI has now been modified to treat stackmap/patchpoint similarly to DEBUG_INFO, allowing us to use a simple, platform independent register/offset pair for frame indexes on stackmap/patchpoints. Notes: - Folding is now platform independent and automatically supported. - Emiting patchpoints with direct memory references now just involves calling the TargetLoweringBase::emitPatchPoint utility method from the target's XXXTargetLowering::EmitInstrWithCustomInserter method. (See X86TargetLowering for an example). - No more ugly platform-specific operand parsers. This patch shouldn't change the generated output for X86. llvm-svn: 195944
2013-11-27Show stackmap entry encodings in stackmap debug logs. This makes it easier toLang Hames1-23/+27
cross-reference debug output with encoded stack-maps, and to create stackmap test-cases. llvm-svn: 195874
2013-11-19Obvious pasto survived a couple rounds of cleanup.Andrew Trick1-2/+1
Caught by Aaron Ballman. llvm-svn: 195138
2013-11-19Add an abstraction to handle patchpoint operands.Andrew Trick1-4/+84
Hard-coded operand indices were scattered throughout lowering stages and layers. It was super bug prone. llvm-svn: 195093
2013-11-17Added a size field to the stack map record to handle subregister spills.Andrew Trick1-5/+15
Implementing this on bigendian platforms could get strange. I added a target hook, getStackSlotRange, per Jakob's recommendation to make this as explicit as possible. llvm-svn: 194942
2013-11-08[Stackmap] Add AnyReg calling convention support for patchpoint intrinsic.Juergen Ributzka1-1/+12
The idea of the AnyReg Calling Convention is to provide the call arguments in registers, but not to force them to be placed in a paticular order into a specified set of registers. Instead it is up tp the register allocator to assign any register as it sees fit. The same applies to the return value (if applicable). Differential Revision: http://llvm-reviews.chandlerc.com/D2009 Reviewed by Andy llvm-svn: 194293
2013-11-08Fix some minor issues with r194282 to get the tree healthy again.Lang Hames1-1/+2
llvm-svn: 194284
2013-11-08Add a method to get the object-file appropriate stack map section.Lang Hames1-2/+1
Thanks to Eric Christopher for the tips on the appropriate way to do this. llvm-svn: 194282
2013-10-31Unused variableAndrew Trick1-0/+1
llvm-svn: 193819
2013-10-31Add support for stack map generation in the X86 backend.Andrew Trick1-0/+213
Originally implemented by Lang Hames. llvm-svn: 193811