diff options
author | Eli Bendersky <eliben@chromium.org> | 2013-05-09 15:16:09 -0700 |
---|---|---|
committer | Eli Bendersky <eliben@chromium.org> | 2013-05-09 15:16:09 -0700 |
commit | 42ac59f56fb0d473f84b6be738a64e80b09557d1 (patch) | |
tree | 14b1e8cdea77da4c187478579140f2ca5e2ef73f /lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp | |
parent | 4d0b8cd45df240218ff2e59a640912961072c681 (diff) |
Support @llvm.nacl.{set|long}jmp intrinsics by translating them to library calls
This is similar to the way @llvm.{set|long}jmp are handled.
The previously defined nacl-specific intrinsics are no longer used
and are overridden.
For the library call, call setjmp/longjmp without a preceding
underscore as these symbols exist in our runtime support code
(pnacl/support/setjmp_XXX.S)
BUG=https://code.google.com/p/nativeclient/issues/detail?id=3429
R=mseaborn@chromium.org
Review URL: https://codereview.chromium.org/14715018
Diffstat (limited to 'lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp')
-rw-r--r-- | lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp b/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp index b7a7e2e133..9113fb1b6f 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp +++ b/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp @@ -5215,6 +5215,13 @@ SelectionDAGBuilder::visitIntrinsicCall(const CallInst &I, unsigned Intrinsic) { setValue(&I, DAG.getNode(ISD::NACL_TARGET_ARCH, dl, DestVT)); return 0; } + // Native Client Intrinsics for setjmp/longjmp + case Intrinsic::nacl_setjmp: { + return "setjmp"; + } + case Intrinsic::nacl_longjmp: { + return "longjmp"; + } // @LOCALMOD-END } } |