diff options
Diffstat (limited to 'llvm/lib/Transforms')
-rw-r--r-- | llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp | 39 |
1 files changed, 6 insertions, 33 deletions
diff --git a/llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp b/llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp index 1f97e909851..c0b219d1d1b 100644 --- a/llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp +++ b/llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp @@ -273,20 +273,9 @@ Function *SanitizerCoverageModule::CreateInitCallsForSections( auto SecStart = SecStartEnd.first; auto SecEnd = SecStartEnd.second; Function *CtorFunc; - Value *SecStartPtr = nullptr; - // Account for the fact that on windows-msvc __start_* symbols actually - // point to a uint64_t before the start of the array. - if (TargetTriple.getObjectFormat() == Triple::COFF) { - auto SecStartI8Ptr = IRB.CreatePointerCast(SecStart, Int8PtrTy); - auto GEP = IRB.CreateGEP(SecStartI8Ptr, - ConstantInt::get(IntptrTy, sizeof(uint64_t))); - SecStartPtr = IRB.CreatePointerCast(GEP, Ty); - } else { - SecStartPtr = IRB.CreatePointerCast(SecStart, Ty); - } std::tie(CtorFunc, std::ignore) = createSanitizerCtorAndInitFunctions( M, SanCovModuleCtorName, InitFunctionName, {Ty, Ty}, - {SecStartPtr, IRB.CreatePointerCast(SecEnd, Ty)}); + {IRB.CreatePointerCast(SecStart, Ty), IRB.CreatePointerCast(SecEnd, Ty)}); if (TargetTriple.supportsCOMDAT()) { // Use comdat to dedup CtorFunc. @@ -408,20 +397,9 @@ bool SanitizerCoverageModule::runOnModule(Module &M) { Function *InitFunction = declareSanitizerInitFunction( M, SanCovPCsInitName, {IntptrPtrTy, IntptrPtrTy}); IRBuilder<> IRBCtor(Ctor->getEntryBlock().getTerminator()); - Value *SecStartPtr = nullptr; - // Account for the fact that on windows-msvc __start_pc_table actually - // points to a uint64_t before the start of the PC table. - if (TargetTriple.getObjectFormat() == Triple::COFF) { - auto SecStartI8Ptr = IRB.CreatePointerCast(SecStartEnd.first, Int8PtrTy); - auto GEP = IRB.CreateGEP(SecStartI8Ptr, - ConstantInt::get(IntptrTy, sizeof(uint64_t))); - SecStartPtr = IRB.CreatePointerCast(GEP, IntptrPtrTy); - } else { - SecStartPtr = IRB.CreatePointerCast(SecStartEnd.first, IntptrPtrTy); - } - IRBCtor.CreateCall( - InitFunction, - {SecStartPtr, IRB.CreatePointerCast(SecStartEnd.second, IntptrPtrTy)}); + IRBCtor.CreateCall(InitFunction, + {IRB.CreatePointerCast(SecStartEnd.first, IntptrPtrTy), + IRB.CreatePointerCast(SecStartEnd.second, IntptrPtrTy)}); } // We don't reference these arrays directly in any of our runtime functions, // so we need to prevent them from being dead stripped. @@ -831,13 +809,8 @@ void SanitizerCoverageModule::InjectCoverageAtBlock(Function &F, BasicBlock &BB, std::string SanitizerCoverageModule::getSectionName(const std::string &Section) const { - if (TargetTriple.getObjectFormat() == Triple::COFF) { - if (Section == SanCovCountersSectionName) - return ".SCOV$CM"; - if (Section == SanCovPCsSectionName) - return ".SCOVP$M"; - return ".SCOV$GM"; // For SanCovGuardsSectionName. - } + if (TargetTriple.getObjectFormat() == Triple::COFF) + return ".SCOV$M"; if (TargetTriple.isOSBinFormatMachO()) return "__DATA,__" + Section; return "__" + Section; |