Make NORETURN working with MSVC. MSVC only accepts NORETURN in front of the
authorBenjamin Kramer <benny.kra@googlemail.com>
Sat, 14 Nov 2009 14:14:58 +0000 (14:14 +0000)
committerBenjamin Kramer <benny.kra@googlemail.com>
Sat, 14 Nov 2009 14:14:58 +0000 (14:14 +0000)
decl so move it there. GCC accepts it both in front and after decls.

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

include/llvm/Support/Compiler.h
include/llvm/Support/ErrorHandling.h

index 342a97d761ee624c655ab09378c0f163c19e04e2..67770c35d24c471e69c688ea12a866c1a94da293 100644 (file)
@@ -58,6 +58,8 @@
 
 #ifdef __GNUC__
 #define NORETURN __attribute__((noreturn))
+#elif defined(_MSC_VER)
+#define NORETURN __declspec(noreturn)
 #else
 #define NORETURN
 #endif
index 67bccf09269e6dea14ce516f43d9d3ba5ad1edcf..60677951a25da46a500185055443b9b710892a92 100644 (file)
@@ -60,15 +60,15 @@ namespace llvm {
   /// standard error, followed by a newline.
   /// After the error handler is called this function will call exit(1), it 
   /// does not return.
-  void llvm_report_error(const char *reason) NORETURN;
-  void llvm_report_error(const std::string &reason) NORETURN;
-  void llvm_report_error(const Twine &reason) NORETURN;
+  NORETURN void llvm_report_error(const char *reason);
+  NORETURN void llvm_report_error(const std::string &reason);
+  NORETURN void llvm_report_error(const Twine &reason);
 
   /// This function calls abort(), and prints the optional message to stderr.
   /// Use the llvm_unreachable macro (that adds location info), instead of
   /// calling this function directly.
-  void llvm_unreachable_internal(const char *msg=0, const char *file=0,
-                                 unsigned line=0) NORETURN;
+  NORETURN void llvm_unreachable_internal(const char *msg=0,
+                                          const char *file=0, unsigned line=0);
 }
 
 /// Prints the message and location info to stderr in !NDEBUG builds.