summaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
authorFilip Pizlo <fpizlo@apple.com>2014-02-20 23:57:31 +0000
committerFilip Pizlo <fpizlo@apple.com>2014-02-20 23:57:31 +0000
commit23ffb3ea10530e36f8b779570f8e1cc686708051 (patch)
tree4291515fbec21d92799692b7eda5cae024cb2bcc /utils
parent0aabe661a4315def30ddb2b4dbf290b513ffb747 (diff)
downloadllvm-23ffb3ea10530e36f8b779570f8e1cc686708051.tar.gz
llvm-23ffb3ea10530e36f8b779570f8e1cc686708051.tar.bz2
llvm-23ffb3ea10530e36f8b779570f8e1cc686708051.tar.xz
Stackmaps are used for OSR exits, which is a custom kind of unwinding. Hence, they
should not be marked nounwind. Marking them nounwind caused crashes in the WebKit FTL JIT, because if we enable sufficient optimizations, LLVM starts eliding compact_unwind sections (or any unwind data for that matter), making deoptimization via stackmaps impossible. This changes the stackmap intrinsic to be may-throw, adds a test for exactly the sympton that WebKit saw, and fixes TableGen to handle un-attributed intrinsics. Thanks to atrick and philipreames for reviewing this. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@201826 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils')
-rw-r--r--utils/TableGen/IntrinsicEmitter.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/utils/TableGen/IntrinsicEmitter.cpp b/utils/TableGen/IntrinsicEmitter.cpp
index 173e506532..d366861992 100644
--- a/utils/TableGen/IntrinsicEmitter.cpp
+++ b/utils/TableGen/IntrinsicEmitter.cpp
@@ -666,6 +666,7 @@ EmitAttributes(const std::vector<CodeGenIntrinsic> &Ints, raw_ostream &OS) {
OS << " }\n";
} else {
OS << " return AttributeSet();\n";
+ OS << " }\n";
}
}