In preparation for removing exception handling in tablegen, add
PrintFatalError, which combines PrintError with exit(1).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166690 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/llvm/TableGen/Error.h b/include/llvm/TableGen/Error.h
index 5c1c3ad..3f7b7f4 100644
--- a/include/llvm/TableGen/Error.h
+++ b/include/llvm/TableGen/Error.h
@@ -40,6 +40,9 @@
 void PrintError(const Twine &Msg);
 void PrintError(const TGError &Error);
 
+LLVM_ATTRIBUTE_NORETURN void PrintFatalError(const std::string &Msg);
+LLVM_ATTRIBUTE_NORETURN void PrintFatalError(ArrayRef<SMLoc> ErrorLoc,
+                                             const std::string &Msg);
 
 extern SourceMgr SrcMgr;
 
diff --git a/lib/TableGen/Error.cpp b/lib/TableGen/Error.cpp
index 5dd688c..ad98fba 100644
--- a/lib/TableGen/Error.cpp
+++ b/lib/TableGen/Error.cpp
@@ -16,6 +16,8 @@
 #include "llvm/ADT/Twine.h"
 #include "llvm/Support/raw_ostream.h"
 
+#include <cstdlib>
+
 namespace llvm {
 
 SourceMgr SrcMgr;
@@ -63,4 +65,14 @@
   PrintError(Error.getLoc(), Error.getMessage());
 }
 
+void PrintFatalError(const std::string &Msg) {
+  PrintError(Twine(Msg));
+  std::exit(1);
+}
+
+void PrintFatalError(ArrayRef<SMLoc> ErrorLoc, const std::string &Msg) {
+  PrintError(ErrorLoc, Msg);
+  std::exit(1);
+}
+
 } // end namespace llvm