From aa2b11dcf3dea813d2cb8a4b4ceae103db81c987 Mon Sep 17 00:00:00 2001 From: Mehdi Amini Date: Fri, 11 Nov 2016 22:18:42 +0000 Subject: [PATCH] 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 --- unittests/MC/DwarfLineTables.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) 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. -- 2.11.0