From: Mehdi Amini Date: Fri, 11 Nov 2016 22:18:42 +0000 (+0000) Subject: Fix static initialization order fiasco in MCTests X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=aa2b11dcf3dea813d2cb8a4b4ceae103db81c987;p=llvm Fix static initialization order fiasco in MCTests Reported by Kostya on llvm-dev, uncovered by an ASAN bot git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286647 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/unittests/MC/DwarfLineTables.cpp b/unittests/MC/DwarfLineTables.cpp index 4bfb5acea03..d66c832df0b 100644 --- a/unittests/MC/DwarfLineTables.cpp +++ b/unittests/MC/DwarfLineTables.cpp @@ -46,21 +46,25 @@ struct Context { operator MCContext &() { return *Ctx; }; }; -Context Ctxt; +Context &getContext() { + static Context Ctxt; + return Ctxt; +} } void verifyEncoding(MCDwarfLineTableParams Params, int LineDelta, int AddrDelta, ArrayRef ExpectedEncoding) { SmallString<16> Buffer; raw_svector_ostream EncodingOS(Buffer); - MCDwarfLineAddr::Encode(Ctxt, Params, LineDelta, AddrDelta, EncodingOS); + MCDwarfLineAddr::Encode(getContext(), Params, LineDelta, AddrDelta, + EncodingOS); ArrayRef Encoding(reinterpret_cast(Buffer.data()), Buffer.size()); EXPECT_EQ(ExpectedEncoding, Encoding); } TEST(DwarfLineTables, TestDefaultParams) { - if (!Ctxt) + if (!getContext()) return; MCDwarfLineTableParams Params; @@ -110,7 +114,7 @@ TEST(DwarfLineTables, TestDefaultParams) { } TEST(DwarfLineTables, TestCustomParams) { - if (!Ctxt) + if (!getContext()) return; // Some tests against the example values given in the standard. @@ -164,7 +168,7 @@ TEST(DwarfLineTables, TestCustomParams) { } TEST(DwarfLineTables, TestCustomParams2) { - if (!Ctxt) + if (!getContext()) return; // Corner case param values.