aboutsummaryrefslogtreecommitdiff
path: root/lib/Analysis/NaCl/PNaClABIVerifyFunctions.cpp
diff options
context:
space:
mode:
authorMark Seaborn <mseaborn@chromium.org>2013-04-12 12:49:49 -0700
committerMark Seaborn <mseaborn@chromium.org>2013-04-12 12:49:49 -0700
commit6ea81f7c3e816f7fb9c8ff9a9f2ea961865ff03c (patch)
treefa121c6d5aa45272c34be1291bf6b692db0beac1 /lib/Analysis/NaCl/PNaClABIVerifyFunctions.cpp
parent29d2ddad89f1124216210a1e3fc9a216ed83f01c (diff)
PNaCl ABI checker: Disallow invoke+landingpad instructions
The first release of the stable PNaCl ABI won't support zero-cost C++ exception handling. BUG=https://code.google.com/p/nativeclient/issues/detail?id=3377 TEST=toolchain trybots + gcc torture tests + Spec2k + LLVM regression tests Review URL: https://codereview.chromium.org/14044006
Diffstat (limited to 'lib/Analysis/NaCl/PNaClABIVerifyFunctions.cpp')
-rw-r--r--lib/Analysis/NaCl/PNaClABIVerifyFunctions.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/Analysis/NaCl/PNaClABIVerifyFunctions.cpp b/lib/Analysis/NaCl/PNaClABIVerifyFunctions.cpp
index 5e773e9751..4c4c935ec5 100644
--- a/lib/Analysis/NaCl/PNaClABIVerifyFunctions.cpp
+++ b/lib/Analysis/NaCl/PNaClABIVerifyFunctions.cpp
@@ -67,6 +67,9 @@ bool PNaClABIVerifyFunctions::runOnFunction(Function &F) {
default:
// We expand GetElementPtr out into arithmetic.
case Instruction::GetElementPtr:
+ // Zero-cost C++ exception handling is not supported yet.
+ case Instruction::Invoke:
+ case Instruction::LandingPad:
// indirectbr may interfere with streaming
case Instruction::IndirectBr:
// No vector instructions yet
@@ -84,7 +87,6 @@ bool PNaClABIVerifyFunctions::runOnFunction(Function &F) {
case Instruction::Switch:
case Instruction::Resume:
case Instruction::Unreachable:
- case Instruction::Invoke:
// Binary operations
case Instruction::Add:
case Instruction::FAdd:
@@ -134,7 +136,6 @@ bool PNaClABIVerifyFunctions::runOnFunction(Function &F) {
case Instruction::Select:
case Instruction::Call:
case Instruction::VAArg:
- case Instruction::LandingPad:
break;
}
// Check the types. First check the type of the instruction.