Index: lib/Transforms/Utils/ModuleUtils.cpp =================================================================== --- lib/Transforms/Utils/ModuleUtils.cpp +++ lib/Transforms/Utils/ModuleUtils.cpp @@ -163,7 +163,6 @@ GlobalValue::InternalLinkage, CtorName, &M); BasicBlock *CtorBB = BasicBlock::Create(M.getContext(), "", Ctor); IRBuilder<> IRB(ReturnInst::Create(M.getContext(), CtorBB)); - IRB.CreateCall(InitFunction, InitArgs); if (!VersionCheckName.empty()) { Function *VersionCheckFunction = checkSanitizerInterfaceFunction(M.getOrInsertFunction( @@ -171,6 +170,7 @@ AttributeList())); IRB.CreateCall(VersionCheckFunction, {}); } + IRB.CreateCall(InitFunction, InitArgs); return std::make_pair(Ctor, InitFunction); } Index: test/DebugInfo/AArch64/asan-stack-vars.ll =================================================================== --- test/DebugInfo/AArch64/asan-stack-vars.ll +++ test/DebugInfo/AArch64/asan-stack-vars.ll @@ -239,8 +239,8 @@ declare i8* @objc_autoreleaseReturnValue(i8* returned) define internal void @asan.module_ctor() { - call void @__asan_init() call void @__asan_version_mismatch_check_v8() + call void @__asan_init() ret void } Index: test/Instrumentation/AddressSanitizer/basic-myriad.ll =================================================================== --- test/Instrumentation/AddressSanitizer/basic-myriad.ll +++ test/Instrumentation/AddressSanitizer/basic-myriad.ll @@ -81,4 +81,5 @@ } ; CHECK: define internal void @asan.module_ctor() +; CHECK: call void @__asan_version_mismatch_check_v ; CHECK: call void @__asan_init() Index: test/Instrumentation/AddressSanitizer/basic.ll =================================================================== --- test/Instrumentation/AddressSanitizer/basic.ll +++ test/Instrumentation/AddressSanitizer/basic.ll @@ -223,6 +223,7 @@ } ; CHECK: define internal void @asan.module_ctor() +; CHECK: call void @__asan_version_mismatch_check_v ; CHECK: call void @__asan_init() ; PROF