aboutsummaryrefslogtreecommitdiffstats
path: root/lib/TableGen
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2013-03-20 20:43:11 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2013-03-20 20:43:11 +0000
commitf8ea5a5a27222f3b0f6daaddc47f79fb969c7448 (patch)
tree2c7591084215204aebae95211fad2641000c08fb /lib/TableGen
parent6115ed0e4347f17504f72e4d37545b4230b2cb50 (diff)
downloadexternal_llvm-f8ea5a5a27222f3b0f6daaddc47f79fb969c7448.zip
external_llvm-f8ea5a5a27222f3b0f6daaddc47f79fb969c7448.tar.gz
external_llvm-f8ea5a5a27222f3b0f6daaddc47f79fb969c7448.tar.bz2
Make sure TableGen exits with an error code after printing errors.
This makes it possible to report multiple errors in one invocation. There are already calls to PrintError in CodeGenDAGPatterns.cpp which previously would not cause TableGen to fail. <rdar://problem/13463339> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177573 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/TableGen')
-rw-r--r--lib/TableGen/Error.cpp6
-rw-r--r--lib/TableGen/Main.cpp7
2 files changed, 11 insertions, 2 deletions
diff --git a/lib/TableGen/Error.cpp b/lib/TableGen/Error.cpp
index ec84a72..928b120 100644
--- a/lib/TableGen/Error.cpp
+++ b/lib/TableGen/Error.cpp
@@ -20,9 +20,15 @@
namespace llvm {
SourceMgr SrcMgr;
+unsigned ErrorsPrinted = 0;
static void PrintMessage(ArrayRef<SMLoc> Loc, SourceMgr::DiagKind Kind,
const Twine &Msg) {
+ // Count the total number of errors printed.
+ // This is used to exit with an error code if there were any errors.
+ if (Kind == SourceMgr::DK_Error)
+ ++ErrorsPrinted;
+
SMLoc NullLoc;
if (Loc.empty())
Loc = NullLoc;
diff --git a/lib/TableGen/Main.cpp b/lib/TableGen/Main.cpp
index e1cd623..dc4167b 100644
--- a/lib/TableGen/Main.cpp
+++ b/lib/TableGen/Main.cpp
@@ -117,11 +117,14 @@ int TableGenMain(char *argv0, TableGenMainFn *MainFn) {
if (MainFn(Out.os(), Records))
return 1;
+ if (ErrorsPrinted > 0) {
+ errs() << argv0 << ": " << ErrorsPrinted << " errors.\n";
+ return 1;
+ }
+
// Declare success.
Out.keep();
return 0;
-
- return 1;
}
}