Index: src/PNaClTranslator.cpp |
diff --git a/src/PNaClTranslator.cpp b/src/PNaClTranslator.cpp |
index dfe93ff99957601bf4c5c5366dd14e335ba79d92..6a74dd2a8811ae30bf92d4b48a93aac49fa4cdb8 100644 |
--- a/src/PNaClTranslator.cpp |
+++ b/src/PNaClTranslator.cpp |
@@ -32,8 +32,6 @@ |
#include "IceOperand.h" |
#include "PNaClTranslator.h" |
-#include <memory> |
- |
namespace { |
using namespace llvm; |
@@ -159,7 +157,7 @@ public: |
typedef std::vector<Ice::FunctionDeclaration *> FunctionDeclarationListType; |
TopLevelParser(Ice::Translator &Translator, NaClBitcodeHeader &Header, |
- NaClBitstreamCursor &Cursor, bool &ErrorStatus) |
+ NaClBitstreamCursor &Cursor, Ice::ErrorCode &ErrorStatus) |
: NaClBitcodeParser(Cursor), Translator(Translator), Header(Header), |
ErrorStatus(ErrorStatus), NumErrors(0), NumFunctionIds(0), |
NumFunctionBlocks(0), BlockParser(nullptr) {} |
@@ -362,7 +360,7 @@ private: |
// The bitcode header. |
NaClBitcodeHeader &Header; |
// The exit status that should be set to true if an error occurs. |
- bool &ErrorStatus; |
+ Ice::ErrorCode &ErrorStatus; |
// The number of errors reported. |
unsigned NumErrors; |
// The types associated with each type ID. |
@@ -425,7 +423,7 @@ private: |
}; |
bool TopLevelParser::Error(const std::string &Message) { |
- ErrorStatus = true; |
+ ErrorStatus.assign(Ice::EC_Bitcode); |
++NumErrors; |
Ice::GlobalContext *Context = Translator.getContext(); |
Ice::OstreamLocker L(Context); |
@@ -2812,7 +2810,6 @@ private: |
void ExitBlock() override { |
InstallGlobalNamesAndGlobalVarInitializers(); |
- getTranslator().emitConstants(); |
} |
void ProcessRecord() override; |
@@ -2945,7 +2942,7 @@ void PNaClTranslator::translate(const std::string &IRFilename) { |
MemoryBuffer::getFileOrSTDIN(IRFilename); |
if (std::error_code EC = ErrOrFile.getError()) { |
errs() << "Error reading '" << IRFilename << "': " << EC.message() << "\n"; |
- ErrorStatus = true; |
+ ErrorStatus.assign(EC.value()); |
return; |
} |
@@ -2958,7 +2955,7 @@ void PNaClTranslator::translateBuffer(const std::string &IRFilename, |
if (MemBuf->getBufferSize() % 4 != 0) { |
errs() << IRFilename |
<< ": Bitcode stream should be a multiple of 4 bytes in length.\n"; |
- ErrorStatus = true; |
+ ErrorStatus.assign(EC_Bitcode); |
return; |
} |
@@ -2969,7 +2966,7 @@ void PNaClTranslator::translateBuffer(const std::string &IRFilename, |
NaClBitcodeHeader Header; |
if (Header.Read(BufPtr, EndBufPtr) || !Header.IsSupported()) { |
errs() << "Invalid PNaCl bitcode header.\n"; |
- ErrorStatus = true; |
+ ErrorStatus.assign(EC_Bitcode); |
return; |
} |
@@ -2981,7 +2978,7 @@ void PNaClTranslator::translateBuffer(const std::string &IRFilename, |
int TopLevelBlocks = 0; |
while (!InputStream.AtEndOfStream()) { |
if (Parser.Parse()) { |
- ErrorStatus = true; |
+ ErrorStatus.assign(EC_Bitcode); |
return; |
} |
++TopLevelBlocks; |
@@ -2991,7 +2988,7 @@ void PNaClTranslator::translateBuffer(const std::string &IRFilename, |
errs() << IRFilename |
<< ": Contains more than one module. Found: " << TopLevelBlocks |
<< "\n"; |
- ErrorStatus = true; |
+ ErrorStatus.assign(EC_Bitcode); |
} |
} |