LLVM backend for 6502
Go to file
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
autoconf revert r147542 after comments from Joerg Sonnenberger 2012-01-05 18:28:46 +00:00
bindings
cmake revert r147542 after comments from Joerg Sonnenberger 2012-01-05 18:28:46 +00:00
docs Fix dead link 2012-01-07 04:11:27 +00:00
examples
include Detect when a value is undefined on an edge to a landing pad. 2012-01-11 02:07:05 +00:00
lib Detect when a value is undefined on an edge to a landing pad. 2012-01-11 02:07:05 +00:00
projects revert r147542 after comments from Joerg Sonnenberger 2012-01-05 18:28:46 +00:00
runtime
test Detect when a value is undefined on an edge to a landing pad. 2012-01-11 02:07:05 +00:00
tools Remove unnecessary default cases in switches that cover all enum values. 2012-01-10 16:47:17 +00:00
unittests
utils Record asm variant id in MatchEntry and check it while matching instruction. 2012-01-10 17:50:43 +00:00
.gitignore
CMakeLists.txt
configure revert r147542 after comments from Joerg Sonnenberger 2012-01-05 18:28:46 +00:00
CREDITS.TXT
LICENSE.TXT
llvm.spec.in
LLVMBuild.txt
Makefile
Makefile.common
Makefile.config.in
Makefile.rules
README.txt

Low Level Virtual Machine (LLVM)
================================

This directory and its subdirectories contain source code for the Low Level
Virtual Machine, a toolkit for the construction of highly optimized compilers,
optimizers, and runtime environments.

LLVM is open source software. You may freely distribute it under the terms of
the license agreement found in LICENSE.txt.

Please see the HTML documentation provided in docs/index.html for further
assistance with LLVM.

If you're writing a package for LLVM, see docs/Packaging.html for our
suggestions.