CBackend: Fix MSVC build.
authorMichael J. Spencer <bigcheesegs@gmail.com>
Tue, 14 Sep 2010 04:27:38 +0000 (04:27 +0000)
committerMichael J. Spencer <bigcheesegs@gmail.com>
Tue, 14 Sep 2010 04:27:38 +0000 (04:27 +0000)
This may produce warnings on MSVS, but it's better than failures.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113834 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/CBackend/CBackend.cpp
utils/TableGen/IntrinsicEmitter.cpp

index 8e84ed366679ad78e049f7a48ea34a2645878667..49391c3387d55674b5a4abc18999b068bf87c125 100644 (file)
 #include "llvm/System/Host.h"
 #include "llvm/Config/config.h"
 #include <algorithm>
+// Some ms header decided to define setjmp as _setjmp, undo this for this file.
+#ifdef _MSC_VER
+#undef setjmp
+#endif
 using namespace llvm;
 
 extern "C" void LLVMInitializeCBackendTarget() {
index abd221d19423451c71e2eb9a5ee73fd655d8783e..c2aabf7116e4a45749478a0d703b9cacf86e53f9 100644 (file)
@@ -69,15 +69,15 @@ void IntrinsicEmitter::run(raw_ostream &OS) {
 void IntrinsicEmitter::EmitPrefix(raw_ostream &OS) {
   OS << "// VisualStudio defines setjmp as _setjmp\n"
         "#if defined(_MSC_VER) && defined(setjmp)\n"
-        "#define setjmp_undefined_for_visual_studio\n"
-        "#undef setjmp\n"
+        "#  pragma push_macro(\"setjmp\")\n"
+        "#  undef setjmp\n"
         "#endif\n\n";
 }
 
 void IntrinsicEmitter::EmitSuffix(raw_ostream &OS) {
-  OS << "#if defined(_MSC_VER) && defined(setjmp_undefined_for_visual_studio)\n"
+  OS << "#if defined(_MSC_VER)\n"
         "// let's return it to _setjmp state\n"
-        "#define setjmp _setjmp\n"
+        "#  pragma pop_macro(\"setjmp\")\n"
         "#endif\n\n";
 }