llvm-6502/lib/Transforms
Philip Reames 9f3ecd086a [RewriteStatepointsForGC] Fix a relocation bug w.r.t values defined by invoke instructions
RewriteStatepointsForGC pass emits an alloca for each GC pointer which will be relocated. It then inserts stores after def and all relocations, and inserts loads before each use as well. In the end, mem2reg is used to update IR with relocations in SSA form.

However, there is a problem with inserting stores for values defined by invoke instructions. The code didn't expect a def was a terminator instruction, and inserting instructions after these terminators resulted in malformed IR.

This patch fixes this problem by handling invoke instructions as a special case. If the def is an invoke instruction, the store will be inserted at the beginning of the normal destination block. Since return value from invoke instruction does not dominate the unwind destination block, no action is needed there.

Patch by: Chen Li
Differential Revision: http://reviews.llvm.org/D7923




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@231183 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-04 00:13:52 +00:00
..
Hello
InstCombine InstCombine: Ensure select condition types are identical before merging 2015-03-03 22:40:36 +00:00
Instrumentation [sanitizer/coverage] Add AFL-style coverage counters (search heuristic for fuzzing). 2015-03-03 23:27:02 +00:00
IPO LowerBitSets: Use byte arrays instead of bit sets to represent in-memory bit sets. 2015-03-03 00:49:28 +00:00
ObjCARC [objc-arc-contract] We can not move retains over instructions which can not conservatively be proven to not decrement the retain's RCIdentity. 2015-02-20 00:02:49 +00:00
Scalar [RewriteStatepointsForGC] Fix a relocation bug w.r.t values defined by invoke instructions 2015-03-04 00:13:52 +00:00
Utils Remap frame variables for native Windows exception handling. 2015-02-23 20:01:56 +00:00
Vectorize Make ToVectorTy static. 2015-03-02 20:43:24 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile