Revert "Fix locking for printing error messages." This reverts commit 187b3dfab5cca45e2af192bf7f5db09bcc156314. A unit test fails when it shouldn't. BUG= https://code.google.com/p/nativeclient/issues/detail?id=4138 Review URL: https://codereview.chromium.org/1071423003
diff --git a/src/IceClFlags.cpp b/src/IceClFlags.cpp index fda4e06..9e24665 100644 --- a/src/IceClFlags.cpp +++ b/src/IceClFlags.cpp
@@ -245,43 +245,6 @@ AppName = IceString(argv[0]); } -void ClFlags::resetClFlags(ClFlags &OutFlags) { - // bool fields - OutFlags.AllowErrorRecovery = false; - OutFlags.AllowUninitializedGlobals = false; - OutFlags.DataSections = false; - OutFlags.DecorateAsm = false; - OutFlags.DisableInternal = false; - OutFlags.DisableIRGeneration = false; - OutFlags.DisableTranslation = false; - OutFlags.DumpStats = false; - OutFlags.FunctionSections = false; - OutFlags.GenerateUnitTestMessages = false; - OutFlags.PhiEdgeSplit = false; - OutFlags.RandomNopInsertion = false; - OutFlags.RandomRegAlloc = false; - OutFlags.SubzeroTimingEnabled = false; - OutFlags.TimeEachFunction = false; - OutFlags.UseSandboxing = false; - // Enum and integer fields. - OutFlags.Opt = Opt_m1; - OutFlags.OutFileType = FT_Iasm; - OutFlags.RandomMaxNopsPerInstruction = 0; - OutFlags.RandomNopProbabilityAsPercentage = 0; - OutFlags.TArch = TargetArch_NUM; - OutFlags.VMask = IceV_None; - // IceString fields. - OutFlags.DefaultFunctionPrefix = ""; - OutFlags.DefaultGlobalPrefix = ""; - OutFlags.TestPrefix = ""; - OutFlags.TimingFocusOn = ""; - OutFlags.TranslateOnly = ""; - OutFlags.VerboseFocusOn = ""; - // size_t and 64-bit fields. - OutFlags.NumTranslationThreads = 0; - OutFlags.RandomSeed = 0; -} - void ClFlags::getParsedClFlags(ClFlags &OutFlags) { if (::DisableIRGeneration) ::DisableTranslation = true;
diff --git a/src/IceClFlags.h b/src/IceClFlags.h index c89e695..0762002 100644 --- a/src/IceClFlags.h +++ b/src/IceClFlags.h
@@ -26,10 +26,27 @@ ClFlags &operator=(const ClFlags &) = delete; public: - ClFlags() { resetClFlags(*this); } + ClFlags() + : // bool fields. + AllowErrorRecovery(false), + AllowUninitializedGlobals(false), DataSections(false), + DecorateAsm(false), DisableInternal(false), DisableIRGeneration(false), + DisableTranslation(false), DumpStats(false), FunctionSections(false), + GenerateUnitTestMessages(false), PhiEdgeSplit(false), + RandomNopInsertion(false), RandomRegAlloc(false), + SubzeroTimingEnabled(false), TimeEachFunction(false), + UseSandboxing(false), + // Enum and integer fields. + Opt(Opt_m1), OutFileType(FT_Iasm), RandomMaxNopsPerInstruction(0), + RandomNopProbabilityAsPercentage(0), TArch(TargetArch_NUM), + VMask(IceV_None), + // IceString fields. + DefaultFunctionPrefix(""), DefaultGlobalPrefix(""), TestPrefix(""), + TimingFocusOn(""), TranslateOnly(""), VerboseFocusOn(""), + // size_t and 64-bit fields. + NumTranslationThreads(0), RandomSeed(0) {} static void parseFlags(int argc, char *argv[]); - static void resetClFlags(ClFlags &OutFlags); static void getParsedClFlags(ClFlags &OutFlags); static void getParsedClFlagsExtra(ClFlagsExtra &OutFlagsExtra);
diff --git a/src/PNaClTranslator.cpp b/src/PNaClTranslator.cpp index ce46239..35cdcf7 100644 --- a/src/PNaClTranslator.cpp +++ b/src/PNaClTranslator.cpp
@@ -486,12 +486,10 @@ ErrorStatus.assign(Ice::EC_Bitcode); ++NumErrors; Ice::GlobalContext *Context = Translator.getContext(); - { // Lock while printing out error message. - Ice::OstreamLocker L(Context); - raw_ostream &OldErrStream = setErrStream(Context->getStrDump()); - NaClBitcodeParser::ErrorAt(Level, Bit, Message); - setErrStream(OldErrStream); - } + Ice::OstreamLocker L(Context); + raw_ostream &OldErrStream = setErrStream(Context->getStrDump()); + NaClBitcodeParser::ErrorAt(Level, Bit, Message); + setErrStream(OldErrStream); if (Level >= naclbitc::Error && !Translator.getFlags().getAllowErrorRecovery()) Fatal();
diff --git a/unittest/BitcodeMunge.cpp b/unittest/BitcodeMunge.cpp index 689279e..fd7100c 100644 --- a/unittest/BitcodeMunge.cpp +++ b/unittest/BitcodeMunge.cpp
@@ -19,25 +19,19 @@ namespace IceTest { -void IceTest::SubzeroBitcodeMunger::resetFlags() { - Ice::ClFlags::resetClFlags(Flags); - resetMungeFlags(); -} +bool IceTest::SubzeroBitcodeMunger::runTest(const char *TestName, + const uint64_t Munges[], + size_t MungeSize) { + const bool AddHeader = true; + setupTest(TestName, Munges, MungeSize, AddHeader); -void IceTest::SubzeroBitcodeMunger::resetMungeFlags() { + Ice::ClFlags Flags; Flags.setAllowErrorRecovery(true); Flags.setGenerateUnitTestMessages(true); Flags.setOptLevel(Ice::Opt_m1); Flags.setOutFileType(Ice::FT_Iasm); Flags.setTargetArch(Ice::Target_X8632); Flags.setVerbose(Ice::IceV_Instructions); -} - -bool IceTest::SubzeroBitcodeMunger::runTest(const char *TestName, - const uint64_t Munges[], - size_t MungeSize) { - const bool AddHeader = true; - setupTest(TestName, Munges, MungeSize, AddHeader); Ice::GlobalContext Ctx(DumpStream, DumpStream, nullptr, Flags); Ice::PNaClTranslator Translator(&Ctx); Translator.translateBuffer(TestName, MungedInput.get());
diff --git a/unittest/BitcodeMunge.h b/unittest/BitcodeMunge.h index 0b99864..6b639a7 100644 --- a/unittest/BitcodeMunge.h +++ b/unittest/BitcodeMunge.h
@@ -17,8 +17,6 @@ #include "llvm/Bitcode/NaCl/NaClBitcodeMunge.h" -#include "IceClFlags.h" - namespace IceTest { // Class to run tests on Subzero's bitcode parser. Runs a Subzero @@ -29,9 +27,7 @@ public: SubzeroBitcodeMunger(const uint64_t Records[], size_t RecordSize, uint64_t RecordTerminator) - : llvm::NaClBitcodeMunger(Records, RecordSize, RecordTerminator) { - resetMungeFlags(); - } + : llvm::NaClBitcodeMunger(Records, RecordSize, RecordTerminator) {} /// Runs PNaClTranslator to translate bitcode records (with defined /// record Munges), and puts output into DumpResults. Returns true @@ -43,15 +39,6 @@ uint64_t NoMunges[] = {0}; return runTest(TestName, NoMunges, 0); } - - /// Sets flags back to default assumptions for munging. - void resetFlags(); - - /// Flags to use to run tests. Use to change default assumptions. - Ice::ClFlags Flags; - -private: - void resetMungeFlags(); }; } // end of namespace IceTest
diff --git a/unittest/IceParseInstsTest.cpp b/unittest/IceParseInstsTest.cpp index 191eff9..5d45888 100644 --- a/unittest/IceParseInstsTest.cpp +++ b/unittest/IceParseInstsTest.cpp
@@ -63,12 +63,6 @@ EXPECT_FALSE(Munger.runTest("Nonexistent call arg")); EXPECT_EQ("Error(66:4): Invalid function record: <34 0 4 2 100>\n", Munger.getTestResults()); - - // Show that we generate a fatal error when not allowing error recovery. - Munger.Flags.setAllowErrorRecovery(false); - EXPECT_DEATH( - Munger.runTest("Nonexistent call arg"), - ".*ERROR: Unable to continue.*"); } /// Test how we recognize alignments in alloca instructions.