llvm-6502/lib
Jakob Stoklund Olesen 2aad2f6e60 Detect when a value is undefined on an edge to a landing pad.
Consider this code:

int h() {
  int x;
  try {
    x = f();
    g();
  } catch (...) {
    return x+1;
  }
  return x;
}

The variable x is undefined on the first edge to the landing pad, but it
has the f() return value on the second edge to the landing pad.

SplitAnalysis::getLastSplitPoint() would assume that the return value
from f() was live into the landing pad when f() throws, which is of
course impossible.

Detect these cases, and treat them as if the landing pad wasn't there.
This allows spill code to be inserted after the function call to f().

<rdar://problem/10664933>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147912 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-11 02:07:05 +00:00
..
Analysis Don't avoid recursing for pointer types, just reference types. Expand on 2012-01-11 00:01:29 +00:00
Archive
AsmParser Add 'llvm_unreachable' to passify GCC's understanding of the constraints 2012-01-10 18:08:01 +00:00
Bitcode Add 'llvm_unreachable' to passify GCC's understanding of the constraints 2012-01-10 18:08:01 +00:00
CodeGen Detect when a value is undefined on an edge to a landing pad. 2012-01-11 02:07:05 +00:00
DebugInfo
ExecutionEngine Fix typo in string 2012-01-06 07:49:17 +00:00
Linker Link symbols with different visibilities according to the rules in the 2012-01-05 23:02:01 +00:00
MC Let asm parser query asm syntax dialect. 2012-01-10 21:49:42 +00:00
Object Remove unused variables. 2011-12-25 01:20:19 +00:00
Support Teach the triple library about the androideabi environment. 2012-01-10 19:46:00 +00:00
TableGen
Target Fixed order of operands in comment to match code. 2012-01-10 22:53:20 +00:00
Transforms If the global variable is removed by the linker, then don't constant merge it 2012-01-11 00:13:08 +00:00
VMCore Add 'llvm_unreachable' to passify GCC's understanding of the constraints 2012-01-10 18:08:01 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile