If the target prefers it, use _setjmp/_longjmp should be used instead of setjmp/longjmp for llvm.setjmp/llvm.longjmp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23481 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp b/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
index ea26967..ad7a8af 100644
--- a/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
+++ b/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
@@ -736,8 +736,12 @@
       case Intrinsic::returnaddress: visitFrameReturnAddress(I, false); return;
       case Intrinsic::frameaddress:  visitFrameReturnAddress(I, true); return;
 
-      case Intrinsic::setjmp:  RenameFn = "setjmp"; break;
-      case Intrinsic::longjmp: RenameFn = "longjmp"; break;
+      case Intrinsic::setjmp:
+        RenameFn = "_setjmp"+!TLI.usesUnderscoreSetJmpLongJmp();
+        break;
+      case Intrinsic::longjmp:
+        RenameFn = "_longjmp"+!TLI.usesUnderscoreSetJmpLongJmp();
+        break;
       case Intrinsic::memcpy:  visitMemIntrinsic(I, ISD::MEMCPY); return;
       case Intrinsic::memset:  visitMemIntrinsic(I, ISD::MEMSET); return;
       case Intrinsic::memmove: visitMemIntrinsic(I, ISD::MEMMOVE); return;