diff options
author | Daniel Dunbar <daniel@zuster.org> | 2010-09-09 22:42:56 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2010-09-09 22:42:56 +0000 |
commit | 93bd4d1e6b81b71ce56888e760ce0c9abe44023f (patch) | |
tree | 9eac7c2142d0e000fadbd2f74e289a4610acfac3 /lib/MC/MCParser | |
parent | 61ca48e0da42edbb4cc98305cb9e617473da7bba (diff) | |
download | external_llvm-93bd4d1e6b81b71ce56888e760ce0c9abe44023f.zip external_llvm-93bd4d1e6b81b71ce56888e760ce0c9abe44023f.tar.gz external_llvm-93bd4d1e6b81b71ce56888e760ce0c9abe44023f.tar.bz2 |
llvm-mc: Make sure we exit != 0 if any errors are encountered.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113551 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/MC/MCParser')
-rw-r--r-- | lib/MC/MCParser/AsmParser.cpp | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/lib/MC/MCParser/AsmParser.cpp b/lib/MC/MCParser/AsmParser.cpp index 310574f..34197cf 100644 --- a/lib/MC/MCParser/AsmParser.cpp +++ b/lib/MC/MCParser/AsmParser.cpp @@ -102,6 +102,9 @@ private: /// Boolean tracking whether macro substitution is enabled. unsigned MacrosEnabled : 1; + /// Flag tracking whether any errors have been encountered. + unsigned HadError : 1; + public: AsmParser(const Target &T, SourceMgr &SM, MCContext &Ctx, MCStreamer &Out, const MCAsmInfo &MAI); @@ -304,6 +307,7 @@ void AsmParser::Warning(SMLoc L, const Twine &Msg) { } bool AsmParser::Error(SMLoc L, const Twine &Msg) { + HadError = true; PrintMessage(L, Msg.str(), "error"); PrintMacroInstantiations(); return true; @@ -361,17 +365,17 @@ bool AsmParser::Run(bool NoInitialTextSection, bool NoFinalize) { // Prime the lexer. Lex(); - - bool HadError = false; - + + HadError = false; AsmCond StartingCondState = TheCondState; // While we have input, parse each statement. while (Lexer.isNot(AsmToken::Eof)) { if (!ParseStatement()) continue; - // We had an error, remember it and recover by skipping to the next line. - HadError = true; + // We had an error, validate that one was emitted and recover by skipping to + // the next line. + assert(HadError && "Parse statement returned an error, but none emitted!"); EatToEndOfStatement(); } @@ -383,10 +387,8 @@ bool AsmParser::Run(bool NoInitialTextSection, bool NoFinalize) { const std::vector<MCDwarfFile *> &MCDwarfFiles = getContext().getMCDwarfFiles(); for (unsigned i = 1; i < MCDwarfFiles.size(); i++) { - if (!MCDwarfFiles[i]){ + if (!MCDwarfFiles[i]) TokError("unassigned file number: " + Twine(i) + " for .file directives"); - HadError = true; - } } // Finalize the output stream if there are no errors and if the client wants |