[llvm] r366153 - Revert "[NewPM] Port Sancov"
Leonard Chan via llvm-commits
llvm-commits at lists.llvm.org
Tue Jul 16 10:29:09 PDT 2019
My bad. For reference, I reverted this because it was causing some linker
errors due to use of undefined sancov symbols.
On Tue, Jul 16, 2019, 10:09 Philip Reames <listmail at philipreames.com> wrote:
> Reminder: Please indicate *why* something is reverted when doing so.
>
> On 7/15/19 4:18 PM, Leonard Chan via llvm-commits wrote:
> > Author: leonardchan
> > Date: Mon Jul 15 16:18:31 2019
> > New Revision: 366153
> >
> > URL: http://llvm.org/viewvc/llvm-project?rev=366153&view=rev
> > Log:
> > Revert "[NewPM] Port Sancov"
> >
> > This reverts commit 5652f35817f07b16f8b3856d594cc42f4d7ee29c.
> >
> > Removed:
> >
> llvm/trunk/include/llvm/Transforms/Instrumentation/SanitizerCoverage.h
> > Modified:
> > llvm/trunk/include/llvm/InitializePasses.h
> > llvm/trunk/include/llvm/Transforms/Instrumentation.h
> > llvm/trunk/lib/Passes/PassBuilder.cpp
> > llvm/trunk/lib/Passes/PassRegistry.def
> > llvm/trunk/lib/Transforms/Instrumentation/Instrumentation.cpp
> > llvm/trunk/lib/Transforms/Instrumentation/SanitizerCoverage.cpp
> >
> llvm/trunk/test/Instrumentation/SanitizerCoverage/abort-in-entry-block.ll
> >
> llvm/trunk/test/Instrumentation/SanitizerCoverage/backedge-pruning.ll
> > llvm/trunk/test/Instrumentation/SanitizerCoverage/chains.ll
> >
> llvm/trunk/test/Instrumentation/SanitizerCoverage/cmp-tracing-api-x86_32.ll
> >
> llvm/trunk/test/Instrumentation/SanitizerCoverage/cmp-tracing-api-x86_64.ll
> > llvm/trunk/test/Instrumentation/SanitizerCoverage/cmp-tracing.ll
> > llvm/trunk/test/Instrumentation/SanitizerCoverage/coff-comdat.ll
> >
> llvm/trunk/test/Instrumentation/SanitizerCoverage/coff-pc-table-inline-8bit-counters.ll
> > llvm/trunk/test/Instrumentation/SanitizerCoverage/coff-used-ctor.ll
> >
> llvm/trunk/test/Instrumentation/SanitizerCoverage/const-cmp-tracing.ll
> > llvm/trunk/test/Instrumentation/SanitizerCoverage/coverage-dbg.ll
> > llvm/trunk/test/Instrumentation/SanitizerCoverage/coverage.ll
> > llvm/trunk/test/Instrumentation/SanitizerCoverage/coverage2-dbg.ll
> > llvm/trunk/test/Instrumentation/SanitizerCoverage/div-tracing.ll
> > llvm/trunk/test/Instrumentation/SanitizerCoverage/gep-tracing.ll
> >
> llvm/trunk/test/Instrumentation/SanitizerCoverage/inline-8bit-counters.ll
> >
> llvm/trunk/test/Instrumentation/SanitizerCoverage/interposable-symbol-nocomdat.ll
> > llvm/trunk/test/Instrumentation/SanitizerCoverage/no-func.ll
> > llvm/trunk/test/Instrumentation/SanitizerCoverage/pc-table.ll
> >
> llvm/trunk/test/Instrumentation/SanitizerCoverage/postdominator_check.ll
> > llvm/trunk/test/Instrumentation/SanitizerCoverage/seh.ll
> >
> llvm/trunk/test/Instrumentation/SanitizerCoverage/stack-depth-variable-declared-by-user.ll
> > llvm/trunk/test/Instrumentation/SanitizerCoverage/stack-depth.ll
> > llvm/trunk/test/Instrumentation/SanitizerCoverage/switch-tracing.ll
> >
> llvm/trunk/test/Instrumentation/SanitizerCoverage/trace-pc-guard-comdat.ll
> >
> llvm/trunk/test/Instrumentation/SanitizerCoverage/trace-pc-guard-inline-8bit-counters.ll
> >
> llvm/trunk/test/Instrumentation/SanitizerCoverage/trace-pc-guard-nocomdat.ll
> > llvm/trunk/test/Instrumentation/SanitizerCoverage/tracing-comdat.ll
> > llvm/trunk/test/Instrumentation/SanitizerCoverage/tracing.ll
> >
> llvm/trunk/test/Instrumentation/SanitizerCoverage/unreachable-critedge.ll
> > llvm/trunk/test/Instrumentation/SanitizerCoverage/wineh.ll
> >
> > Modified: llvm/trunk/include/llvm/InitializePasses.h
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/InitializePasses.h?rev=366153&r1=366152&r2=366153&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/include/llvm/InitializePasses.h (original)
> > +++ llvm/trunk/include/llvm/InitializePasses.h Mon Jul 15 16:18:31 2019
> > @@ -360,9 +360,7 @@ void initializeSROALegacyPassPass(PassRe
> > void initializeSafeStackLegacyPassPass(PassRegistry&);
> > void initializeSafepointIRVerifierPass(PassRegistry&);
> > void initializeSampleProfileLoaderLegacyPassPass(PassRegistry&);
> > -void
> initializeSanitizerCoverageFunctionCheckLegacyPassPass(PassRegistry &);
> > -void initializeSanitizerCoverageLegacyPassPass(PassRegistry &);
> > -void initializeModuleSanitizerCoverageLegacyPassPass(PassRegistry &);
> > +void initializeSanitizerCoverageModulePass(PassRegistry&);
> > void initializeScalarEvolutionWrapperPassPass(PassRegistry&);
> > void initializeScalarizeMaskedMemIntrinPass(PassRegistry&);
> > void initializeScalarizerLegacyPassPass(PassRegistry&);
> >
> > Modified: llvm/trunk/include/llvm/Transforms/Instrumentation.h
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Transforms/Instrumentation.h?rev=366153&r1=366152&r2=366153&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/include/llvm/Transforms/Instrumentation.h (original)
> > +++ llvm/trunk/include/llvm/Transforms/Instrumentation.h Mon Jul 15
> 16:18:31 2019
> > @@ -181,6 +181,10 @@ struct SanitizerCoverageOptions {
> > SanitizerCoverageOptions() = default;
> > };
> >
> > +// Insert SanitizerCoverage instrumentation.
> > +ModulePass *createSanitizerCoverageModulePass(
> > + const SanitizerCoverageOptions &Options =
> SanitizerCoverageOptions());
> > +
> > /// Calculate what to divide by to scale counts.
> > ///
> > /// Given the maximum count, calculate a divisor that will scale all
> the
> >
> > Removed:
> llvm/trunk/include/llvm/Transforms/Instrumentation/SanitizerCoverage.h
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Transforms/Instrumentation/SanitizerCoverage.h?rev=366152&view=auto
> >
> ==============================================================================
> > ---
> llvm/trunk/include/llvm/Transforms/Instrumentation/SanitizerCoverage.h
> (original)
> > +++
> llvm/trunk/include/llvm/Transforms/Instrumentation/SanitizerCoverage.h
> (removed)
> > @@ -1,62 +0,0 @@
> > -//===--------- Definition of the SanitizerCoverage class --------*- C++
> -*-===//
> > -//
> > -// The LLVM Compiler Infrastructure
> > -//
> > -// Part of the LLVM Project, under the Apache License v2.0 with LLVM
> Exceptions.
> > -// See https://llvm.org/LICENSE.txt for license information.
> > -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
> > -//
> >
> -//===----------------------------------------------------------------------===//
> > -//
> > -// This file declares the SanitizerCoverage class which is a port of
> the legacy
> > -// SanitizerCoverage pass to use the new PassManager infrastructure.
> > -//
> >
> -//===----------------------------------------------------------------------===//
> > -
> > -#ifndef LLVM_TRANSFORMS_INSTRUMENTATION_SANITIZERCOVERAGE_H
> > -#define LLVM_TRANSFORMS_INSTRUMENTATION_SANITIZERCOVERAGE_H
> > -
> > -#include "llvm/IR/Function.h"
> > -#include "llvm/IR/Module.h"
> > -#include "llvm/IR/PassManager.h"
> > -#include "llvm/Transforms/Instrumentation.h"
> > -
> > -namespace llvm {
> > -
> > -/// This is the SanitizerCoverage pass used in the new pass manager. The
> > -/// pass instruments functions for coverage.
> > -class SanitizerCoveragePass : public
> PassInfoMixin<SanitizerCoveragePass> {
> > -public:
> > - explicit SanitizerCoveragePass(
> > - SanitizerCoverageOptions Options = SanitizerCoverageOptions())
> > - : Options(Options) {}
> > - PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
> > -
> > -private:
> > - SanitizerCoverageOptions Options;
> > -};
> > -
> > -/// This is the ModuleSanitizerCoverage pass used in the new pass
> manager. This
> > -/// adds initialization calls to the module for trace PC guards and 8bit
> > -/// counters if they are requested.
> > -class ModuleSanitizerCoveragePass
> > - : public PassInfoMixin<ModuleSanitizerCoveragePass> {
> > -public:
> > - explicit ModuleSanitizerCoveragePass(
> > - SanitizerCoverageOptions Options = SanitizerCoverageOptions())
> > - : Options(Options) {}
> > - PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM);
> > -
> > -private:
> > - SanitizerCoverageOptions Options;
> > -};
> > -
> > -// Insert SanitizerCoverage instrumentation.
> > -FunctionPass *createSanitizerCoverageLegacyPassPass(
> > - const SanitizerCoverageOptions &Options =
> SanitizerCoverageOptions());
> > -ModulePass *createModuleSanitizerCoverageLegacyPassPass(
> > - const SanitizerCoverageOptions &Options =
> SanitizerCoverageOptions());
> > -
> > -} // namespace llvm
> > -
> > -#endif
> >
> > Modified: llvm/trunk/lib/Passes/PassBuilder.cpp
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Passes/PassBuilder.cpp?rev=366153&r1=366152&r2=366153&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/lib/Passes/PassBuilder.cpp (original)
> > +++ llvm/trunk/lib/Passes/PassBuilder.cpp Mon Jul 15 16:18:31 2019
> > @@ -101,7 +101,6 @@
> > #include "llvm/Transforms/Instrumentation/MemorySanitizer.h"
> > #include "llvm/Transforms/Instrumentation/PGOInstrumentation.h"
> > #include "llvm/Transforms/Instrumentation/PoisonChecking.h"
> > -#include "llvm/Transforms/Instrumentation/SanitizerCoverage.h"
> > #include "llvm/Transforms/Instrumentation/ThreadSanitizer.h"
> > #include "llvm/Transforms/Scalar/ADCE.h"
> > #include "llvm/Transforms/Scalar/AlignmentFromAssumptions.h"
> > @@ -144,8 +143,8 @@
> > #include "llvm/Transforms/Scalar/LowerWidenableCondition.h"
> > #include "llvm/Transforms/Scalar/MakeGuardsExplicit.h"
> > #include "llvm/Transforms/Scalar/MemCpyOptimizer.h"
> > -#include "llvm/Transforms/Scalar/MergeICmps.h"
> > #include "llvm/Transforms/Scalar/MergedLoadStoreMotion.h"
> > +#include "llvm/Transforms/Scalar/MergeICmps.h"
> > #include "llvm/Transforms/Scalar/NaryReassociate.h"
> > #include "llvm/Transforms/Scalar/NewGVN.h"
> > #include "llvm/Transforms/Scalar/PartiallyInlineLibCalls.h"
> >
> > Modified: llvm/trunk/lib/Passes/PassRegistry.def
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Passes/PassRegistry.def?rev=366153&r1=366152&r2=366153&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/lib/Passes/PassRegistry.def (original)
> > +++ llvm/trunk/lib/Passes/PassRegistry.def Mon Jul 15 16:18:31 2019
> > @@ -86,7 +86,6 @@ MODULE_PASS("wholeprogramdevirt", WholeP
> > MODULE_PASS("verify", VerifierPass())
> > MODULE_PASS("asan-module",
> ModuleAddressSanitizerPass(/*CompileKernel=*/false, false, true, false))
> > MODULE_PASS("kasan-module",
> ModuleAddressSanitizerPass(/*CompileKernel=*/true, false, true, false))
> > -MODULE_PASS("sancov-module", ModuleSanitizerCoveragePass())
> > MODULE_PASS("poison-checking", PoisonCheckingPass())
> > #undef MODULE_PASS
> >
> > @@ -246,7 +245,6 @@ FUNCTION_PASS("khwasan", HWAddressSaniti
> > FUNCTION_PASS("msan", MemorySanitizerPass({}))
> > FUNCTION_PASS("kmsan", MemorySanitizerPass({0, false,
> /*Kernel=*/true}))
> > FUNCTION_PASS("tsan", ThreadSanitizerPass())
> > -FUNCTION_PASS("sancov-func", SanitizerCoveragePass())
> > #undef FUNCTION_PASS
> >
> > #ifndef FUNCTION_PASS_WITH_PARAMS
> >
> > Modified: llvm/trunk/lib/Transforms/Instrumentation/Instrumentation.cpp
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Instrumentation/Instrumentation.cpp?rev=366153&r1=366152&r2=366153&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/lib/Transforms/Instrumentation/Instrumentation.cpp
> (original)
> > +++ llvm/trunk/lib/Transforms/Instrumentation/Instrumentation.cpp Mon
> Jul 15 16:18:31 2019
> > @@ -116,7 +116,7 @@ void llvm::initializeInstrumentation(Pas
> > initializeMemorySanitizerLegacyPassPass(Registry);
> > initializeHWAddressSanitizerLegacyPassPass(Registry);
> > initializeThreadSanitizerLegacyPassPass(Registry);
> > - initializeSanitizerCoverageLegacyPassPass(Registry);
> > + initializeSanitizerCoverageModulePass(Registry);
> > initializeDataFlowSanitizerPass(Registry);
> > }
> >
> >
> > Modified: llvm/trunk/lib/Transforms/Instrumentation/SanitizerCoverage.cpp
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Instrumentation/SanitizerCoverage.cpp?rev=366153&r1=366152&r2=366153&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/lib/Transforms/Instrumentation/SanitizerCoverage.cpp
> (original)
> > +++ llvm/trunk/lib/Transforms/Instrumentation/SanitizerCoverage.cpp Mon
> Jul 15 16:18:31 2019
> > @@ -10,7 +10,6 @@
> > //
> >
> //===----------------------------------------------------------------------===//
> >
> > -#include "llvm/Transforms/Instrumentation/SanitizerCoverage.h"
> > #include "llvm/ADT/ArrayRef.h"
> > #include "llvm/ADT/SmallVector.h"
> > #include "llvm/Analysis/EHPersonalities.h"
> > @@ -177,158 +176,24 @@ SanitizerCoverageOptions OverrideFromCL(
> > return Options;
> > }
> >
> > -bool canInstrumentWithSancov(const Function &F) {
> > - if (F.empty())
> > - return false;
> > - if (F.getName().find(".module_ctor") != std::string::npos)
> > - return false; // Should not instrument sanitizer init functions.
> > - if (F.getName().startswith("__sanitizer_"))
> > - return false; // Don't instrument __sanitizer_* callbacks.
> > - // Don't touch available_externally functions, their actual body is
> elewhere.
> > - if (F.getLinkage() == GlobalValue::AvailableExternallyLinkage)
> > - return false;
> > - // Don't instrument MSVC CRT configuration helpers. They may run
> before normal
> > - // initialization.
> > - if (F.getName() == "__local_stdio_printf_options" ||
> > - F.getName() == "__local_stdio_scanf_options")
> > - return false;
> > - if (isa<UnreachableInst>(F.getEntryBlock().getTerminator()))
> > - return false;
> > - // Don't instrument functions using SEH for now. Splitting basic
> blocks like
> > - // we do for coverage breaks WinEHPrepare.
> > - // FIXME: Remove this when SEH no longer uses landingpad pattern
> matching.
> > - if (F.hasPersonalityFn() &&
> > -
> isAsynchronousEHPersonality(classifyEHPersonality(F.getPersonalityFn())))
> > - return false;
> > - return true;
> > -}
> > -
> > -/// This is a class for instrumenting the module to add calls to
> initializing
> > -/// the trace PC guards and 8bit counter globals. This should only be
> done
> > -/// though if there is at least one function that can be instrumented
> with
> > -/// Sancov.
> > -class ModuleSanitizerCoverage {
> > +class SanitizerCoverageModule : public ModulePass {
> > public:
> > - ModuleSanitizerCoverage(const SanitizerCoverageOptions &Options)
> > - : Options(OverrideFromCL(Options)) {}
> > -
> > - bool instrumentModule(Module &M) {
> > - if (Options.CoverageType == SanitizerCoverageOptions::SCK_None)
> > - return false;
> > -
> > - Function *Ctor = nullptr;
> > - LLVMContext *C = &(M.getContext());
> > - const DataLayout *DL = &M.getDataLayout();
> > - TargetTriple = Triple(M.getTargetTriple());
> > - IntptrTy = Type::getIntNTy(*C, DL->getPointerSizeInBits());
> > - Type *IntptrPtrTy = PointerType::getUnqual(IntptrTy);
> > - IRBuilder<> IRB(*C);
> > - Type *Int32PtrTy = PointerType::getUnqual(IRB.getInt32Ty());
> > - Int8PtrTy = PointerType::getUnqual(IRB.getInt8Ty());
> > - Int8Ty = IRB.getInt8Ty();
> > -
> > - // Check that the __sancov_lowest_stack marker does not already
> exist.
> > - Constant *SanCovLowestStackConstant =
> > - M.getOrInsertGlobal(SanCovLowestStackName, IntptrTy);
> > - GlobalVariable *SanCovLowestStack =
> > - dyn_cast<GlobalVariable>(SanCovLowestStackConstant);
> > - if (!SanCovLowestStack) {
> > - C->emitError(StringRef("'") + SanCovLowestStackName +
> > - "' should not be declared by the user");
> > - return true;
> > - }
> > -
> > - // We want to emit guard init calls if the module contains a
> function that
> > - // we can instrument with SanitizerCoverage. We ignore any
> functions that
> > - // were inserted by SanitizerCoverage and get the result from the
> analysis
> > - // that checks for a valid function that the analysis may have run
> over.
> > - if (!llvm::any_of(
> > - M, [](const Function &F) { return
> canInstrumentWithSancov(F); }))
> > - return false;
> > -
> > - // Emit the init calls.
> > - if (Options.TracePCGuard)
> > - Ctor = CreateInitCallsForSections(M,
> SanCovModuleCtorTracePcGuardName,
> > - SanCovTracePCGuardInitName,
> Int32PtrTy,
> > - SanCovGuardsSectionName);
> > - if (Options.Inline8bitCounters)
> > - Ctor = CreateInitCallsForSections(M,
> SanCovModuleCtor8bitCountersName,
> > - SanCov8bitCountersInitName,
> Int8PtrTy,
> > - SanCovCountersSectionName);
> > - if (Ctor && Options.PCTable) {
> > - auto SecStartEnd =
> > - CreateSecStartEnd(M, SanCovPCsSectionName, IntptrPtrTy);
> > - FunctionCallee InitFunction = declareSanitizerInitFunction(
> > - M, SanCovPCsInitName, {IntptrPtrTy, IntptrPtrTy});
> > - IRBuilder<> IRBCtor(Ctor->getEntryBlock().getTerminator());
> > - IRBCtor.CreateCall(InitFunction, {SecStartEnd.first,
> SecStartEnd.second});
> > - }
> > - return Ctor;
> > - }
> > -
> > -private:
> > - Function *CreateInitCallsForSections(Module &M, const char *CtorName,
> > - const char *InitFunctionName,
> Type *Ty,
> > - const char *Section);
> > - std::pair<Value *, Value *> CreateSecStartEnd(Module &M, const char
> *Section,
> > - Type *Ty);
> > - std::string getSectionStart(const std::string &Section) const {
> > - if (TargetTriple.isOSBinFormatMachO())
> > - return "\1section$start$__DATA$__" + Section;
> > - return "__start___" + Section;
> > - }
> > - std::string getSectionEnd(const std::string &Section) const {
> > - if (TargetTriple.isOSBinFormatMachO())
> > - return "\1section$end$__DATA$__" + Section;
> > - return "__stop___" + Section;
> > + SanitizerCoverageModule(
> > + const SanitizerCoverageOptions &Options =
> SanitizerCoverageOptions())
> > + : ModulePass(ID), Options(OverrideFromCL(Options)) {
> > +
> initializeSanitizerCoverageModulePass(*PassRegistry::getPassRegistry());
> > }
> > + bool runOnModule(Module &M) override;
> > + bool runOnFunction(Function &F);
> > + static char ID; // Pass identification, replacement for typeid
> > + StringRef getPassName() const override { return
> "SanitizerCoverageModule"; }
> >
> > - SanitizerCoverageOptions Options;
> > - Triple TargetTriple;
> > - Type *IntptrTy, *Int8PtrTy, *Int8Ty;
> > -};
> > -
> > -class ModuleSanitizerCoverageLegacyPass : public ModulePass {
> > -public:
> > - static char ID;
> > -
> > - ModuleSanitizerCoverageLegacyPass(
> > - SanitizerCoverageOptions Options = SanitizerCoverageOptions())
> > - : ModulePass(ID), Options(Options) {
> > - initializeModuleSanitizerCoverageLegacyPassPass(
> > - *PassRegistry::getPassRegistry());
> > - }
> > -
> > - bool runOnModule(Module &M) override {
> > - ModuleSanitizerCoverage ModuleSancov(Options);
> > - return ModuleSancov.instrumentModule(M);
> > - };
> > -
> > - StringRef getPassName() const override {
> > - return "ModuleSanitizerCoverageLegacyPass";
> > - }
> > -
> > -private:
> > - SanitizerCoverageOptions Options;
> > -};
> > -
> > -char ModuleSanitizerCoverageLegacyPass::ID = 0;
> > -
> > -class SanitizerCoverage {
> > -public:
> > - SanitizerCoverage(Function &F, const SanitizerCoverageOptions
> &Options)
> > - : CurModule(F.getParent()), Options(OverrideFromCL(Options)) {
> > - initializeModule(*F.getParent());
> > + void getAnalysisUsage(AnalysisUsage &AU) const override {
> > + AU.addRequired<DominatorTreeWrapperPass>();
> > + AU.addRequired<PostDominatorTreeWrapperPass>();
> > }
> >
> > - ~SanitizerCoverage() { finalizeModule(*CurModule); }
> > -
> > - bool instrumentFunction(Function &F, const DominatorTree *DT,
> > - const PostDominatorTree *PDT);
> > -
> > private:
> > - void initializeModule(Module &M);
> > - void finalizeModule(Module &M);
> > void InjectCoverageForIndirectCalls(Function &F,
> > ArrayRef<Instruction *>
> IndirCalls);
> > void InjectTraceForCmp(Function &F, ArrayRef<Instruction *>
> CmpTraceTargets);
> > @@ -347,6 +212,11 @@ private:
> > void CreateFunctionLocalArrays(Function &F, ArrayRef<BasicBlock *>
> AllBlocks);
> > void InjectCoverageAtBlock(Function &F, BasicBlock &BB, size_t Idx,
> > bool IsLeafFunc = true);
> > + Function *CreateInitCallsForSections(Module &M, const char *CtorName,
> > + const char *InitFunctionName,
> Type *Ty,
> > + const char *Section);
> > + std::pair<Value *, Value *> CreateSecStartEnd(Module &M, const char
> *Section,
> > + Type *Ty);
> >
> > void SetNoSanitizeMetadata(Instruction *I) {
> > I->setMetadata(I->getModule()->getMDKindID("nosanitize"),
> > @@ -354,6 +224,8 @@ private:
> > }
> >
> > std::string getSectionName(const std::string &Section) const;
> > + std::string getSectionStart(const std::string &Section) const;
> > + std::string getSectionEnd(const std::string &Section) const;
> > FunctionCallee SanCovTracePCIndir;
> > FunctionCallee SanCovTracePC, SanCovTracePCGuard;
> > FunctionCallee SanCovTraceCmpFunction[4];
> > @@ -380,63 +252,10 @@ private:
> > SanitizerCoverageOptions Options;
> > };
> >
> > -class SanitizerCoverageLegacyPass : public FunctionPass {
> > -public:
> > - static char ID; // Pass identification, replacement for typeid
> > -
> > - SanitizerCoverageLegacyPass(
> > - SanitizerCoverageOptions Options = SanitizerCoverageOptions())
> > - : FunctionPass(ID), Options(Options) {
> > -
> initializeSanitizerCoverageLegacyPassPass(*PassRegistry::getPassRegistry());
> > - }
> > -
> > - bool runOnFunction(Function &F) override {
> > - const DominatorTree *DT =
> > - &getAnalysis<DominatorTreeWrapperPass>().getDomTree();
> > - const PostDominatorTree *PDT =
> > - &getAnalysis<PostDominatorTreeWrapperPass>().getPostDomTree();
> > - SanitizerCoverage Sancov(F, Options);
> > - return Sancov.instrumentFunction(F, DT, PDT);
> > - }
> > -
> > - StringRef getPassName() const override {
> > - return "SanitizerCoverageLegacyPass";
> > - }
> > -
> > - void getAnalysisUsage(AnalysisUsage &AU) const override {
> > - // Make the module sancov pass required by this pass so that it
> runs when
> > - // -sancov is passed.
> > - AU.addRequired<ModuleSanitizerCoverageLegacyPass>();
> > - AU.addRequired<DominatorTreeWrapperPass>();
> > - AU.addRequired<PostDominatorTreeWrapperPass>();
> > - }
> > -
> > -private:
> > - SanitizerCoverageOptions Options;
> > -};
> > -
> > } // namespace
> >
> > -PreservedAnalyses SanitizerCoveragePass::run(Function &F,
> > - FunctionAnalysisManager
> &AM) {
> > - const DominatorTree *DT = &AM.getResult<DominatorTreeAnalysis>(F);
> > - const PostDominatorTree *PDT =
> &AM.getResult<PostDominatorTreeAnalysis>(F);
> > - SanitizerCoverage Sancov(F, Options);
> > - if (Sancov.instrumentFunction(F, DT, PDT))
> > - return PreservedAnalyses::none();
> > - return PreservedAnalyses::all();
> > -}
> > -
> > -PreservedAnalyses ModuleSanitizerCoveragePass::run(Module &M,
> > -
> ModuleAnalysisManager &AM) {
> > - ModuleSanitizerCoverage ModuleSancov(Options);
> > - if (ModuleSancov.instrumentModule(M))
> > - return PreservedAnalyses::none();
> > - return PreservedAnalyses::all();
> > -}
> > -
> > std::pair<Value *, Value *>
> > -ModuleSanitizerCoverage::CreateSecStartEnd(Module &M, const char
> *Section,
> > +SanitizerCoverageModule::CreateSecStartEnd(Module &M, const char
> *Section,
> > Type *Ty) {
> > GlobalVariable *SecStart =
> > new GlobalVariable(M, Ty, false,
> GlobalVariable::ExternalLinkage, nullptr,
> > @@ -446,7 +265,6 @@ ModuleSanitizerCoverage::CreateSecStartE
> > new GlobalVariable(M, Ty, false, GlobalVariable::ExternalLinkage,
> > nullptr, getSectionEnd(Section));
> > SecEnd->setVisibility(GlobalValue::HiddenVisibility);
> > -
> > IRBuilder<> IRB(M.getContext());
> > Value *SecEndPtr = IRB.CreatePointerCast(SecEnd, Ty);
> > if (!TargetTriple.isOSBinFormatCOFF())
> > @@ -460,7 +278,7 @@ ModuleSanitizerCoverage::CreateSecStartE
> > return std::make_pair(IRB.CreatePointerCast(GEP, Ty), SecEndPtr);
> > }
> >
> > -Function *ModuleSanitizerCoverage::CreateInitCallsForSections(
> > +Function *SanitizerCoverageModule::CreateInitCallsForSections(
> > Module &M, const char *CtorName, const char *InitFunctionName,
> Type *Ty,
> > const char *Section) {
> > auto SecStartEnd = CreateSecStartEnd(M, Section, Ty);
> > @@ -492,11 +310,12 @@ Function *ModuleSanitizerCoverage::Creat
> > return CtorFunc;
> > }
> >
> > -void SanitizerCoverage::initializeModule(Module &M) {
> > +bool SanitizerCoverageModule::runOnModule(Module &M) {
> > if (Options.CoverageType == SanitizerCoverageOptions::SCK_None)
> > - return;
> > + return false;
> > C = &(M.getContext());
> > DL = &M.getDataLayout();
> > + CurModule = &M;
> > CurModuleUniqueId = getUniqueModuleId(CurModule);
> > TargetTriple = Triple(M.getTargetTriple());
> > FunctionGuardArray = nullptr;
> > @@ -564,6 +383,11 @@ void SanitizerCoverage::initializeModule
> > Constant *SanCovLowestStackConstant =
> > M.getOrInsertGlobal(SanCovLowestStackName, IntptrTy);
> > SanCovLowestStack =
> dyn_cast<GlobalVariable>(SanCovLowestStackConstant);
> > + if (!SanCovLowestStack) {
> > + C->emitError(StringRef("'") + SanCovLowestStackName +
> > + "' should not be declared by the user");
> > + return true;
> > + }
> > SanCovLowestStack->setThreadLocalMode(
> > GlobalValue::ThreadLocalMode::InitialExecTLSModel);
> > if (Options.StackDepth && !SanCovLowestStack->isDeclaration())
> > @@ -577,14 +401,33 @@ void SanitizerCoverage::initializeModule
> > SanCovTracePC = M.getOrInsertFunction(SanCovTracePCName, VoidTy);
> > SanCovTracePCGuard =
> > M.getOrInsertFunction(SanCovTracePCGuardName, VoidTy,
> Int32PtrTy);
> > -}
> >
> > -void SanitizerCoverage::finalizeModule(Module &M) {
> > + for (auto &F : M)
> > + runOnFunction(F);
> > +
> > + Function *Ctor = nullptr;
> > +
> > + if (FunctionGuardArray)
> > + Ctor = CreateInitCallsForSections(M,
> SanCovModuleCtorTracePcGuardName,
> > + SanCovTracePCGuardInitName,
> Int32PtrTy,
> > + SanCovGuardsSectionName);
> > + if (Function8bitCounterArray)
> > + Ctor = CreateInitCallsForSections(M,
> SanCovModuleCtor8bitCountersName,
> > + SanCov8bitCountersInitName,
> Int8PtrTy,
> > + SanCovCountersSectionName);
> > + if (Ctor && Options.PCTable) {
> > + auto SecStartEnd = CreateSecStartEnd(M, SanCovPCsSectionName,
> IntptrPtrTy);
> > + FunctionCallee InitFunction = declareSanitizerInitFunction(
> > + M, SanCovPCsInitName, {IntptrPtrTy, IntptrPtrTy});
> > + IRBuilder<> IRBCtor(Ctor->getEntryBlock().getTerminator());
> > + IRBCtor.CreateCall(InitFunction, {SecStartEnd.first,
> SecStartEnd.second});
> > + }
> > // We don't reference these arrays directly in any of our runtime
> functions,
> > // so we need to prevent them from being dead stripped.
> > if (TargetTriple.isOSBinFormatMachO())
> > appendToUsed(M, GlobalsToAppendToUsed);
> > appendToCompilerUsed(M, GlobalsToAppendToCompilerUsed);
> > + return true;
> > }
> >
> > // True if block has successors and it dominates all of them.
> > @@ -675,11 +518,28 @@ static bool IsInterestingCmp(ICmpInst *C
> > return true;
> > }
> >
> > -bool SanitizerCoverage::instrumentFunction(Function &F, const
> DominatorTree *DT,
> > - const PostDominatorTree
> *PDT) {
> > - if (Options.CoverageType == SanitizerCoverageOptions::SCK_None)
> > +bool SanitizerCoverageModule::runOnFunction(Function &F) {
> > + if (F.empty())
> > + return false;
> > + if (F.getName().find(".module_ctor") != std::string::npos)
> > + return false; // Should not instrument sanitizer init functions.
> > + if (F.getName().startswith("__sanitizer_"))
> > + return false; // Don't instrument __sanitizer_* callbacks.
> > + // Don't touch available_externally functions, their actual body is
> elewhere.
> > + if (F.getLinkage() == GlobalValue::AvailableExternallyLinkage)
> > return false;
> > - if (!canInstrumentWithSancov(F))
> > + // Don't instrument MSVC CRT configuration helpers. They may run
> before normal
> > + // initialization.
> > + if (F.getName() == "__local_stdio_printf_options" ||
> > + F.getName() == "__local_stdio_scanf_options")
> > + return false;
> > + if (isa<UnreachableInst>(F.getEntryBlock().getTerminator()))
> > + return false;
> > + // Don't instrument functions using SEH for now. Splitting basic
> blocks like
> > + // we do for coverage breaks WinEHPrepare.
> > + // FIXME: Remove this when SEH no longer uses landingpad pattern
> matching.
> > + if (F.hasPersonalityFn() &&
> > +
> isAsynchronousEHPersonality(classifyEHPersonality(F.getPersonalityFn())))
> > return false;
> > if (Options.CoverageType >= SanitizerCoverageOptions::SCK_Edge)
> > SplitAllCriticalEdges(F,
> CriticalEdgeSplittingOptions().setIgnoreUnreachableDests());
> > @@ -690,6 +550,10 @@ bool SanitizerCoverage::instrumentFuncti
> > SmallVector<BinaryOperator *, 8> DivTraceTargets;
> > SmallVector<GetElementPtrInst *, 8> GepTraceTargets;
> >
> > + const DominatorTree *DT =
> > + &getAnalysis<DominatorTreeWrapperPass>(F).getDomTree();
> > + const PostDominatorTree *PDT =
> > + &getAnalysis<PostDominatorTreeWrapperPass>(F).getPostDomTree();
> > bool IsLeafFunc = true;
> >
> > for (auto &BB : F) {
> > @@ -732,7 +596,7 @@ bool SanitizerCoverage::instrumentFuncti
> > return true;
> > }
> >
> > -GlobalVariable *SanitizerCoverage::CreateFunctionLocalArrayInSection(
> > +GlobalVariable
> *SanitizerCoverageModule::CreateFunctionLocalArrayInSection(
> > size_t NumElements, Function &F, Type *Ty, const char *Section) {
> > ArrayType *ArrayTy = ArrayType::get(Ty, NumElements);
> > auto Array = new GlobalVariable(
> > @@ -755,8 +619,8 @@ GlobalVariable *SanitizerCoverage::Creat
> > }
> >
> > GlobalVariable *
> > -SanitizerCoverage::CreatePCArray(Function &F,
> > - ArrayRef<BasicBlock *> AllBlocks) {
> > +SanitizerCoverageModule::CreatePCArray(Function &F,
> > + ArrayRef<BasicBlock *>
> AllBlocks) {
> > size_t N = AllBlocks.size();
> > assert(N);
> > SmallVector<Constant *, 32> PCs;
> > @@ -782,7 +646,7 @@ SanitizerCoverage::CreatePCArray(Functio
> > return PCArray;
> > }
> >
> > -void SanitizerCoverage::CreateFunctionLocalArrays(
> > +void SanitizerCoverageModule::CreateFunctionLocalArrays(
> > Function &F, ArrayRef<BasicBlock *> AllBlocks) {
> > if (Options.TracePCGuard)
> > FunctionGuardArray = CreateFunctionLocalArrayInSection(
> > @@ -796,9 +660,9 @@ void SanitizerCoverage::CreateFunctionLo
> > FunctionPCsArray = CreatePCArray(F, AllBlocks);
> > }
> >
> > -bool SanitizerCoverage::InjectCoverage(Function &F,
> > - ArrayRef<BasicBlock *> AllBlocks,
> > - bool IsLeafFunc) {
> > +bool SanitizerCoverageModule::InjectCoverage(Function &F,
> > + ArrayRef<BasicBlock *>
> AllBlocks,
> > + bool IsLeafFunc) {
> > if (AllBlocks.empty()) return false;
> > CreateFunctionLocalArrays(F, AllBlocks);
> > for (size_t i = 0, N = AllBlocks.size(); i < N; i++)
> > @@ -813,7 +677,7 @@ bool SanitizerCoverage::InjectCoverage(F
> > // The cache is used to speed up recording the caller-callee pairs.
> > // The address of the caller is passed implicitly via caller PC.
> > // CacheSize is encoded in the name of the run-time function.
> > -void SanitizerCoverage::InjectCoverageForIndirectCalls(
> > +void SanitizerCoverageModule::InjectCoverageForIndirectCalls(
> > Function &F, ArrayRef<Instruction *> IndirCalls) {
> > if (IndirCalls.empty())
> > return;
> > @@ -832,7 +696,7 @@ void SanitizerCoverage::InjectCoverageFo
> > // __sanitizer_cov_trace_switch(CondValue,
> > // {NumCases, ValueSizeInBits, Case0Value, Case1Value,
> Case2Value, ... })
> >
> > -void SanitizerCoverage::InjectTraceForSwitch(
> > +void SanitizerCoverageModule::InjectTraceForSwitch(
> > Function &, ArrayRef<Instruction *> SwitchTraceTargets) {
> > for (auto I : SwitchTraceTargets) {
> > if (SwitchInst *SI = dyn_cast<SwitchInst>(I)) {
> > @@ -871,7 +735,7 @@ void SanitizerCoverage::InjectTraceForSw
> > }
> > }
> >
> > -void SanitizerCoverage::InjectTraceForDiv(
> > +void SanitizerCoverageModule::InjectTraceForDiv(
> > Function &, ArrayRef<BinaryOperator *> DivTraceTargets) {
> > for (auto BO : DivTraceTargets) {
> > IRBuilder<> IRB(BO);
> > @@ -889,7 +753,7 @@ void SanitizerCoverage::InjectTraceForDi
> > }
> > }
> >
> > -void SanitizerCoverage::InjectTraceForGep(
> > +void SanitizerCoverageModule::InjectTraceForGep(
> > Function &, ArrayRef<GetElementPtrInst *> GepTraceTargets) {
> > for (auto GEP : GepTraceTargets) {
> > IRBuilder<> IRB(GEP);
> > @@ -900,7 +764,7 @@ void SanitizerCoverage::InjectTraceForGe
> > }
> > }
> >
> > -void SanitizerCoverage::InjectTraceForCmp(
> > +void SanitizerCoverageModule::InjectTraceForCmp(
> > Function &, ArrayRef<Instruction *> CmpTraceTargets) {
> > for (auto I : CmpTraceTargets) {
> > if (ICmpInst *ICMP = dyn_cast<ICmpInst>(I)) {
> > @@ -935,8 +799,9 @@ void SanitizerCoverage::InjectTraceForCm
> > }
> > }
> >
> > -void SanitizerCoverage::InjectCoverageAtBlock(Function &F, BasicBlock
> &BB,
> > - size_t Idx, bool
> IsLeafFunc) {
> > +void SanitizerCoverageModule::InjectCoverageAtBlock(Function &F,
> BasicBlock &BB,
> > + size_t Idx,
> > + bool IsLeafFunc) {
> > BasicBlock::iterator IP = BB.getFirstInsertionPt();
> > bool IsEntryBB = &BB == &F.getEntryBlock();
> > DebugLoc EntryLoc;
> > @@ -993,7 +858,7 @@ void SanitizerCoverage::InjectCoverageAt
> > }
> >
> > std::string
> > -SanitizerCoverage::getSectionName(const std::string &Section) const {
> > +SanitizerCoverageModule::getSectionName(const std::string &Section)
> const {
> > if (TargetTriple.isOSBinFormatCOFF()) {
> > if (Section == SanCovCountersSectionName)
> > return ".SCOV$CM";
> > @@ -1006,25 +871,33 @@ SanitizerCoverage::getSectionName(const
> > return "__" + Section;
> > }
> >
> > -INITIALIZE_PASS(ModuleSanitizerCoverageLegacyPass, "module-sancov",
> > - "Pass for inserting sancov top-level initialization
> calls",
> > - false, false)
> > -
> > -char SanitizerCoverageLegacyPass::ID = 0;
> > -INITIALIZE_PASS_BEGIN(SanitizerCoverageLegacyPass, "sancov",
> > - "Pass for instrumenting coverage on functions",
> false,
> > - false)
> > -INITIALIZE_PASS_DEPENDENCY(ModuleSanitizerCoverageLegacyPass)
> > +std::string
> > +SanitizerCoverageModule::getSectionStart(const std::string &Section)
> const {
> > + if (TargetTriple.isOSBinFormatMachO())
> > + return "\1section$start$__DATA$__" + Section;
> > + return "__start___" + Section;
> > +}
> > +
> > +std::string
> > +SanitizerCoverageModule::getSectionEnd(const std::string &Section)
> const {
> > + if (TargetTriple.isOSBinFormatMachO())
> > + return "\1section$end$__DATA$__" + Section;
> > + return "__stop___" + Section;
> > +}
> > +
> > +
> > +char SanitizerCoverageModule::ID = 0;
> > +INITIALIZE_PASS_BEGIN(SanitizerCoverageModule, "sancov",
> > + "SanitizerCoverage: TODO."
> > + "ModulePass",
> > + false, false)
> > INITIALIZE_PASS_DEPENDENCY(DominatorTreeWrapperPass)
> > INITIALIZE_PASS_DEPENDENCY(PostDominatorTreeWrapperPass)
> > -INITIALIZE_PASS_END(SanitizerCoverageLegacyPass, "sancov",
> > - "Pass for instrumenting coverage on functions",
> false,
> > - false)
> > -FunctionPass *llvm::createSanitizerCoverageLegacyPassPass(
> > - const SanitizerCoverageOptions &Options) {
> > - return new SanitizerCoverageLegacyPass(Options);
> > -}
> > -ModulePass *llvm::createModuleSanitizerCoverageLegacyPassPass(
> > +INITIALIZE_PASS_END(SanitizerCoverageModule, "sancov",
> > + "SanitizerCoverage: TODO."
> > + "ModulePass",
> > + false, false)
> > +ModulePass *llvm::createSanitizerCoverageModulePass(
> > const SanitizerCoverageOptions &Options) {
> > - return new ModuleSanitizerCoverageLegacyPass(Options);
> > + return new SanitizerCoverageModule(Options);
> > }
> >
> > Modified:
> llvm/trunk/test/Instrumentation/SanitizerCoverage/abort-in-entry-block.ll
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Instrumentation/SanitizerCoverage/abort-in-entry-block.ll?rev=366153&r1=366152&r2=366153&view=diff
> >
> ==============================================================================
> > ---
> llvm/trunk/test/Instrumentation/SanitizerCoverage/abort-in-entry-block.ll
> (original)
> > +++
> llvm/trunk/test/Instrumentation/SanitizerCoverage/abort-in-entry-block.ll
> Mon Jul 15 16:18:31 2019
> > @@ -1,6 +1,5 @@
> > ; Checks that a function with no-return in the entry block is not
> instrumented.
> > ; RUN: opt < %s -sancov -sanitizer-coverage-level=3
> -sanitizer-coverage-trace-pc-guard -S | FileCheck %s
> > -; RUN: opt < %s -passes='module(sancov-module),function(sancov-func)'
> -sanitizer-coverage-level=3 -sanitizer-coverage-trace-pc-guard -S |
> FileCheck %s
> > ; CHECK-NOT: call void @__sanitizer_cov_trace_pc_guard
> >
> > target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
> >
> > Modified:
> llvm/trunk/test/Instrumentation/SanitizerCoverage/backedge-pruning.ll
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Instrumentation/SanitizerCoverage/backedge-pruning.ll?rev=366153&r1=366152&r2=366153&view=diff
> >
> ==============================================================================
> > ---
> llvm/trunk/test/Instrumentation/SanitizerCoverage/backedge-pruning.ll
> (original)
> > +++
> llvm/trunk/test/Instrumentation/SanitizerCoverage/backedge-pruning.ll Mon
> Jul 15 16:18:31 2019
> > @@ -1,8 +1,6 @@
> > ; Test -sanitizer-coverage-trace-compares=1 and how it prunes backedge
> compares.
> > ; RUN: opt < %s -sancov -sanitizer-coverage-level=1
> -sanitizer-coverage-trace-compares=1 -sanitizer-coverage-prune-blocks=1 -S
> | FileCheck %s --check-prefix=PRUNE
> > ; RUN: opt < %s -sancov -sanitizer-coverage-level=1
> -sanitizer-coverage-trace-compares=1 -sanitizer-coverage-prune-blocks=0 -S
> | FileCheck %s --check-prefix=NOPRUNE
> > -; RUN: opt < %s -passes='module(sancov-module),function(sancov-func)'
> -sanitizer-coverage-level=1 -sanitizer-coverage-trace-compares=1
> -sanitizer-coverage-prune-blocks=1 -S | FileCheck %s --check-prefix=PRUNE
> > -; RUN: opt < %s -passes='module(sancov-module),function(sancov-func)'
> -sanitizer-coverage-level=1 -sanitizer-coverage-trace-compares=1
> -sanitizer-coverage-prune-blocks=0 -S | FileCheck %s --check-prefix=NOPRUNE
> >
> > target datalayout =
> "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
> > target triple = "x86_64-unknown-linux-gnu"
> >
> > Modified: llvm/trunk/test/Instrumentation/SanitizerCoverage/chains.ll
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Instrumentation/SanitizerCoverage/chains.ll?rev=366153&r1=366152&r2=366153&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/test/Instrumentation/SanitizerCoverage/chains.ll
> (original)
> > +++ llvm/trunk/test/Instrumentation/SanitizerCoverage/chains.ll Mon Jul
> 15 16:18:31 2019
> > @@ -1,5 +1,4 @@
> > ; RUN: opt < %s -sancov -sanitizer-coverage-level=4
> -sanitizer-coverage-trace-pc -sanitizer-coverage-prune-blocks=1 -S |
> FileCheck %s
> > -; RUN: opt < %s -passes='module(sancov-module),function(sancov-func)'
> -sanitizer-coverage-level=4 -sanitizer-coverage-trace-pc
> -sanitizer-coverage-prune-blocks=1 -S | FileCheck %s
> >
> > define i32 @blah(i32) #0 {
> > %2 = icmp sgt i32 %0, 1
> >
> > Modified:
> llvm/trunk/test/Instrumentation/SanitizerCoverage/cmp-tracing-api-x86_32.ll
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Instrumentation/SanitizerCoverage/cmp-tracing-api-x86_32.ll?rev=366153&r1=366152&r2=366153&view=diff
> >
> ==============================================================================
> > ---
> llvm/trunk/test/Instrumentation/SanitizerCoverage/cmp-tracing-api-x86_32.ll
> (original)
> > +++
> llvm/trunk/test/Instrumentation/SanitizerCoverage/cmp-tracing-api-x86_32.ll
> Mon Jul 15 16:18:31 2019
> > @@ -1,6 +1,5 @@
> > ; Test -sanitizer-coverage-trace-compares=1 API declarations on a
> non-x86_64 arch
> > ; RUN: opt < %s -sancov -sanitizer-coverage-level=1
> -sanitizer-coverage-trace-compares=1 -S | FileCheck %s
> > -; RUN: opt < %s -passes='module(sancov-module),function(sancov-func)'
> -sanitizer-coverage-level=1 -sanitizer-coverage-trace-compares=1 -S |
> FileCheck %s
> >
> > target triple = "i386-unknown-linux-gnu"
> > define i32 @foo() #0 {
> > @@ -8,16 +7,16 @@ entry:
> > ret i32 0
> > }
> >
> > -; CHECK-DAG: declare void @__sanitizer_cov_trace_pc_indir(i64)
> > -; CHECK-DAG: declare void @__sanitizer_cov_trace_cmp1(i8, i8)
> > -; CHECK-DAG: declare void @__sanitizer_cov_trace_cmp2(i16, i16)
> > -; CHECK-DAG: declare void @__sanitizer_cov_trace_cmp4(i32, i32)
> > -; CHECK-DAG: declare void @__sanitizer_cov_trace_cmp8(i64, i64)
> > -; CHECK-DAG: declare void @__sanitizer_cov_trace_div4(i32)
> > -; CHECK-DAG: declare void @__sanitizer_cov_trace_div8(i64)
> > -; CHECK-DAG: declare void @__sanitizer_cov_trace_gep(i64)
> > -; CHECK-DAG: declare void @__sanitizer_cov_trace_switch(i64, i64*)
> > -; CHECK-DAG: declare void @__sanitizer_cov_trace_pc()
> > -; CHECK-DAG: declare void @__sanitizer_cov_trace_pc_guard(i32*)
> > -; CHECK-DAG: declare void @__sanitizer_cov_trace_pc_guard_init(i32*,
> i32*)
> > +; CHECK: declare void @__sanitizer_cov_trace_pc_indir(i64)
> > +; CHECK: declare void @__sanitizer_cov_trace_cmp1(i8, i8)
> > +; CHECK: declare void @__sanitizer_cov_trace_cmp2(i16, i16)
> > +; CHECK: declare void @__sanitizer_cov_trace_cmp4(i32, i32)
> > +; CHECK: declare void @__sanitizer_cov_trace_cmp8(i64, i64)
> > +; CHECK: declare void @__sanitizer_cov_trace_div4(i32)
> > +; CHECK: declare void @__sanitizer_cov_trace_div8(i64)
> > +; CHECK: declare void @__sanitizer_cov_trace_gep(i64)
> > +; CHECK: declare void @__sanitizer_cov_trace_switch(i64, i64*)
> > +; CHECK: declare void @__sanitizer_cov_trace_pc()
> > +; CHECK: declare void @__sanitizer_cov_trace_pc_guard(i32*)
> > +; CHECK: declare void @__sanitizer_cov_trace_pc_guard_init(i32*, i32*)
> > ; CHECK-NOT: declare
> >
> > Modified:
> llvm/trunk/test/Instrumentation/SanitizerCoverage/cmp-tracing-api-x86_64.ll
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Instrumentation/SanitizerCoverage/cmp-tracing-api-x86_64.ll?rev=366153&r1=366152&r2=366153&view=diff
> >
> ==============================================================================
> > ---
> llvm/trunk/test/Instrumentation/SanitizerCoverage/cmp-tracing-api-x86_64.ll
> (original)
> > +++
> llvm/trunk/test/Instrumentation/SanitizerCoverage/cmp-tracing-api-x86_64.ll
> Mon Jul 15 16:18:31 2019
> > @@ -1,6 +1,5 @@
> > ; Test -sanitizer-coverage-trace-compares=1 API declarations on x86_64
> > ; RUN: opt < %s -sancov -sanitizer-coverage-level=1
> -sanitizer-coverage-trace-compares=1 -S | FileCheck %s
> > -; RUN: opt < %s -passes='module(sancov-module),function(sancov-func)'
> -sanitizer-coverage-level=1 -sanitizer-coverage-trace-compares=1 -S |
> FileCheck %s
> >
> > target triple = "x86_64-unknown-linux-gnu"
> > define i32 @foo() #0 {
> > @@ -8,16 +7,16 @@ entry:
> > ret i32 0
> > }
> >
> > -; CHECK-DAG: declare void @__sanitizer_cov_trace_pc_indir(i64)
> > -; CHECK-DAG: declare void @__sanitizer_cov_trace_cmp1(i8 zeroext, i8
> zeroext)
> > -; CHECK-DAG: declare void @__sanitizer_cov_trace_cmp2(i16 zeroext, i16
> zeroext)
> > -; CHECK-DAG: declare void @__sanitizer_cov_trace_cmp4(i32 zeroext, i32
> zeroext)
> > -; CHECK-DAG: declare void @__sanitizer_cov_trace_cmp8(i64, i64)
> > -; CHECK-DAG: declare void @__sanitizer_cov_trace_div4(i32 zeroext)
> > -; CHECK-DAG: declare void @__sanitizer_cov_trace_div8(i64)
> > -; CHECK-DAG: declare void @__sanitizer_cov_trace_gep(i64)
> > -; CHECK-DAG: declare void @__sanitizer_cov_trace_switch(i64, i64*)
> > -; CHECK-DAG: declare void @__sanitizer_cov_trace_pc()
> > -; CHECK-DAG: declare void @__sanitizer_cov_trace_pc_guard(i32*)
> > -; CHECK-DAG: declare void @__sanitizer_cov_trace_pc_guard_init(i32*,
> i32*)
> > +; CHECK: declare void @__sanitizer_cov_trace_pc_indir(i64)
> > +; CHECK: declare void @__sanitizer_cov_trace_cmp1(i8 zeroext, i8
> zeroext)
> > +; CHECK: declare void @__sanitizer_cov_trace_cmp2(i16 zeroext, i16
> zeroext)
> > +; CHECK: declare void @__sanitizer_cov_trace_cmp4(i32 zeroext, i32
> zeroext)
> > +; CHECK: declare void @__sanitizer_cov_trace_cmp8(i64, i64)
> > +; CHECK: declare void @__sanitizer_cov_trace_div4(i32 zeroext)
> > +; CHECK: declare void @__sanitizer_cov_trace_div8(i64)
> > +; CHECK: declare void @__sanitizer_cov_trace_gep(i64)
> > +; CHECK: declare void @__sanitizer_cov_trace_switch(i64, i64*)
> > +; CHECK: declare void @__sanitizer_cov_trace_pc()
> > +; CHECK: declare void @__sanitizer_cov_trace_pc_guard(i32*)
> > +; CHECK: declare void @__sanitizer_cov_trace_pc_guard_init(i32*, i32*)
> > ; CHECK-NOT: declare
> >
> > Modified:
> llvm/trunk/test/Instrumentation/SanitizerCoverage/cmp-tracing.ll
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Instrumentation/SanitizerCoverage/cmp-tracing.ll?rev=366153&r1=366152&r2=366153&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/test/Instrumentation/SanitizerCoverage/cmp-tracing.ll
> (original)
> > +++ llvm/trunk/test/Instrumentation/SanitizerCoverage/cmp-tracing.ll Mon
> Jul 15 16:18:31 2019
> > @@ -1,6 +1,5 @@
> > ; Test -sanitizer-coverage-trace-compares=1
> > ; RUN: opt < %s -sancov -sanitizer-coverage-level=1
> -sanitizer-coverage-trace-compares=1 -S | FileCheck %s
> > -; RUN: opt < %s -passes='module(sancov-module),function(sancov-func)'
> -sanitizer-coverage-level=1 -sanitizer-coverage-trace-compares=1 -S |
> FileCheck %s
> >
> > target datalayout =
> "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
> > target triple = "x86_64-unknown-linux-gnu"
> >
> > Modified:
> llvm/trunk/test/Instrumentation/SanitizerCoverage/coff-comdat.ll
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Instrumentation/SanitizerCoverage/coff-comdat.ll?rev=366153&r1=366152&r2=366153&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/test/Instrumentation/SanitizerCoverage/coff-comdat.ll
> (original)
> > +++ llvm/trunk/test/Instrumentation/SanitizerCoverage/coff-comdat.ll Mon
> Jul 15 16:18:31 2019
> > @@ -1,5 +1,4 @@
> > ; RUN: opt < %s -sancov -sanitizer-coverage-level=1
> -sanitizer-coverage-inline-8bit-counters=1 -sanitizer-coverage-pc-table=1
> -S | FileCheck %s
> > -; RUN: opt < %s -passes='module(sancov-module),function(sancov-func)'
> -sanitizer-coverage-level=1 -sanitizer-coverage-inline-8bit-counters=1
> -sanitizer-coverage-pc-table=1 -S | FileCheck %s
> >
> > ; Make sure we use the right comdat groups for COFF to avoid
> relocations
> > ; against discarded sections. Internal linkage functions are also
> different from
> >
> > Modified:
> llvm/trunk/test/Instrumentation/SanitizerCoverage/coff-pc-table-inline-8bit-counters.ll
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Instrumentation/SanitizerCoverage/coff-pc-table-inline-8bit-counters.ll?rev=366153&r1=366152&r2=366153&view=diff
> >
> ==============================================================================
> > ---
> llvm/trunk/test/Instrumentation/SanitizerCoverage/coff-pc-table-inline-8bit-counters.ll
> (original)
> > +++
> llvm/trunk/test/Instrumentation/SanitizerCoverage/coff-pc-table-inline-8bit-counters.ll
> Mon Jul 15 16:18:31 2019
> > @@ -1,6 +1,5 @@
> > ; Checks that the PC and 8-bit Counter Arrays are placed in their own
> sections in COFF binaries.
> > ; RUN: opt < %s -sancov -sanitizer-coverage-level=1
> -sanitizer-coverage-inline-8bit-counters=1 -sanitizer-coverage-pc-table=1
> -S | FileCheck %s
> > -; RUN: opt < %s -passes='module(sancov-module),function(sancov-func)'
> -sanitizer-coverage-level=1 -sanitizer-coverage-inline-8bit-counters=1
> -sanitizer-coverage-pc-table=1 -S | FileCheck %s
> > target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
> > target triple = "x86_64-pc-windows-msvc19.14.26433"
> >
> >
> > Modified:
> llvm/trunk/test/Instrumentation/SanitizerCoverage/coff-used-ctor.ll
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Instrumentation/SanitizerCoverage/coff-used-ctor.ll?rev=366153&r1=366152&r2=366153&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/test/Instrumentation/SanitizerCoverage/coff-used-ctor.ll
> (original)
> > +++ llvm/trunk/test/Instrumentation/SanitizerCoverage/coff-used-ctor.ll
> Mon Jul 15 16:18:31 2019
> > @@ -1,6 +1,5 @@
> > ; Checks that sancov.module_ctor is marked used.
> > ; RUN: opt < %s -sancov -sanitizer-coverage-level=1
> -sanitizer-coverage-inline-8bit-counters=1 -sanitizer-coverage-pc-table=1
> -S | FileCheck %s
> > -; RUN: opt < %s -passes='module(sancov-module),function(sancov-func)'
> -sanitizer-coverage-level=1 -sanitizer-coverage-inline-8bit-counters=1
> -sanitizer-coverage-pc-table=1 -S | FileCheck %s
> > target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
> > target triple = "x86_64-pc-windows-msvc19.14.26433"
> >
> > @@ -9,4 +8,4 @@ entry:
> > ret void
> > }
> >
> > -; CHECK: @llvm.used = appending global {{.*}} @sancov.module_ctor
> > +; CHECK: @llvm.used = appending global {{.*}} @sancov.module_ctor
> > \ No newline at end of file
> >
> > Modified:
> llvm/trunk/test/Instrumentation/SanitizerCoverage/const-cmp-tracing.ll
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Instrumentation/SanitizerCoverage/const-cmp-tracing.ll?rev=366153&r1=366152&r2=366153&view=diff
> >
> ==============================================================================
> > ---
> llvm/trunk/test/Instrumentation/SanitizerCoverage/const-cmp-tracing.ll
> (original)
> > +++
> llvm/trunk/test/Instrumentation/SanitizerCoverage/const-cmp-tracing.ll Mon
> Jul 15 16:18:31 2019
> > @@ -1,6 +1,5 @@
> > ; Test -sanitizer-coverage-trace-compares=1
> > ; RUN: opt < %s -sancov -sanitizer-coverage-level=1
> -sanitizer-coverage-trace-compares=1 -S | FileCheck %s
> > -; RUN: opt < %s -passes='module(sancov-module),function(sancov-func)'
> -sanitizer-coverage-level=1 -sanitizer-coverage-trace-compares=1 -S |
> FileCheck %s
> >
> > target datalayout =
> "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
> > target triple = "x86_64-unknown-linux-gnu"
> >
> > Modified:
> llvm/trunk/test/Instrumentation/SanitizerCoverage/coverage-dbg.ll
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Instrumentation/SanitizerCoverage/coverage-dbg.ll?rev=366153&r1=366152&r2=366153&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/test/Instrumentation/SanitizerCoverage/coverage-dbg.ll
> (original)
> > +++ llvm/trunk/test/Instrumentation/SanitizerCoverage/coverage-dbg.ll
> Mon Jul 15 16:18:31 2019
> > @@ -1,7 +1,6 @@
> > ; Test that coverage instrumentation does not lose debug location.
> >
> > ; RUN: opt < %s -sancov -sanitizer-coverage-level=1 -S | FileCheck %s
> > -; RUN: opt < %s -passes='module(sancov-module),function(sancov-func)'
> -sanitizer-coverage-level=1 -S | FileCheck %s
> >
> > ; C++ source:
> > ; 1: struct A {
> >
> > Modified: llvm/trunk/test/Instrumentation/SanitizerCoverage/coverage.ll
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Instrumentation/SanitizerCoverage/coverage.ll?rev=366153&r1=366152&r2=366153&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/test/Instrumentation/SanitizerCoverage/coverage.ll
> (original)
> > +++ llvm/trunk/test/Instrumentation/SanitizerCoverage/coverage.ll Mon
> Jul 15 16:18:31 2019
> > @@ -1,8 +1,6 @@
> > ; RUN: opt < %s -sancov -sanitizer-coverage-level=4
> -sanitizer-coverage-trace-pc -S | FileCheck %s
> --check-prefix=CHECK_TRACE_PC
> > -; RUN: opt < %s -sancov -sanitizer-coverage-level=3
> -sanitizer-coverage-prune-blocks=1 -S | FileCheck %s
> --check-prefix=CHECKPRUNE
> >
> > -; RUN: opt < %s -passes='module(sancov-module),function(sancov-func)'
> -sanitizer-coverage-level=4 -sanitizer-coverage-trace-pc -S | FileCheck %s
> --check-prefix=CHECK_TRACE_PC
> > -; RUN: opt < %s -passes='module(sancov-module),function(sancov-func)'
> -sanitizer-coverage-level=3 -sanitizer-coverage-prune-blocks=1 -S |
> FileCheck %s --check-prefix=CHECKPRUNE
> > +; RUN: opt < %s -sancov -sanitizer-coverage-level=3
> -sanitizer-coverage-prune-blocks=1 -S | FileCheck %s
> --check-prefix=CHECKPRUNE
> >
> > target datalayout =
> "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
> > target triple = "x86_64-unknown-linux-gnu"
> >
> > Modified:
> llvm/trunk/test/Instrumentation/SanitizerCoverage/coverage2-dbg.ll
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Instrumentation/SanitizerCoverage/coverage2-dbg.ll?rev=366153&r1=366152&r2=366153&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/test/Instrumentation/SanitizerCoverage/coverage2-dbg.ll
> (original)
> > +++ llvm/trunk/test/Instrumentation/SanitizerCoverage/coverage2-dbg.ll
> Mon Jul 15 16:18:31 2019
> > @@ -1,7 +1,6 @@
> > ; Test that coverage instrumentation does not lose debug location.
> >
> > ; RUN: opt < %s -sancov -sanitizer-coverage-level=2 -S | FileCheck %s
> > -; RUN: opt < %s -passes='module(sancov-module),function(sancov-func)'
> -sanitizer-coverage-level=2 -S | FileCheck %s
> >
> > ; C++ source:
> > ; 1: void foo(int *a) {
> >
> > Modified:
> llvm/trunk/test/Instrumentation/SanitizerCoverage/div-tracing.ll
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Instrumentation/SanitizerCoverage/div-tracing.ll?rev=366153&r1=366152&r2=366153&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/test/Instrumentation/SanitizerCoverage/div-tracing.ll
> (original)
> > +++ llvm/trunk/test/Instrumentation/SanitizerCoverage/div-tracing.ll Mon
> Jul 15 16:18:31 2019
> > @@ -1,6 +1,5 @@
> > ; Test -sanitizer-coverage-trace-divs=1
> > ; RUN: opt < %s -sancov -sanitizer-coverage-level=1
> -sanitizer-coverage-trace-divs=1 -S | FileCheck %s
> > -; RUN: opt < %s -passes='module(sancov-module),function(sancov-func)'
> -sanitizer-coverage-level=1 -sanitizer-coverage-trace-divs=1 -S |
> FileCheck %s
> >
> > target datalayout =
> "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
> > target triple = "x86_64-unknown-linux-gnu"
> >
> > Modified:
> llvm/trunk/test/Instrumentation/SanitizerCoverage/gep-tracing.ll
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Instrumentation/SanitizerCoverage/gep-tracing.ll?rev=366153&r1=366152&r2=366153&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/test/Instrumentation/SanitizerCoverage/gep-tracing.ll
> (original)
> > +++ llvm/trunk/test/Instrumentation/SanitizerCoverage/gep-tracing.ll Mon
> Jul 15 16:18:31 2019
> > @@ -1,6 +1,5 @@
> > ; Test -sanitizer-coverage-trace-geps=1
> > ; RUN: opt < %s -sancov -sanitizer-coverage-level=1
> -sanitizer-coverage-trace-geps=1 -S | FileCheck %s
> > -; RUN: opt < %s -passes='module(sancov-module),function(sancov-func)'
> -sanitizer-coverage-level=1 -sanitizer-coverage-trace-geps=1 -S |
> FileCheck %s
> >
> > target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
> > target triple = "x86_64-unknown-linux-gnu"
> >
> > Modified:
> llvm/trunk/test/Instrumentation/SanitizerCoverage/inline-8bit-counters.ll
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Instrumentation/SanitizerCoverage/inline-8bit-counters.ll?rev=366153&r1=366152&r2=366153&view=diff
> >
> ==============================================================================
> > ---
> llvm/trunk/test/Instrumentation/SanitizerCoverage/inline-8bit-counters.ll
> (original)
> > +++
> llvm/trunk/test/Instrumentation/SanitizerCoverage/inline-8bit-counters.ll
> Mon Jul 15 16:18:31 2019
> > @@ -1,6 +1,5 @@
> > ; Test -sanitizer-coverage-inline-8bit-counters=1
> > ; RUN: opt < %s -sancov -sanitizer-coverage-level=1
> -sanitizer-coverage-inline-8bit-counters=1 -S | FileCheck %s
> > -; RUN: opt < %s -passes='module(sancov-module),function(sancov-func)'
> -sanitizer-coverage-level=1 -sanitizer-coverage-inline-8bit-counters=1 -S
> | FileCheck %s
> >
> > target datalayout =
> "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
> > target triple = "x86_64-unknown-linux-gnu"
> >
> > Modified:
> llvm/trunk/test/Instrumentation/SanitizerCoverage/interposable-symbol-nocomdat.ll
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Instrumentation/SanitizerCoverage/interposable-symbol-nocomdat.ll?rev=366153&r1=366152&r2=366153&view=diff
> >
> ==============================================================================
> > ---
> llvm/trunk/test/Instrumentation/SanitizerCoverage/interposable-symbol-nocomdat.ll
> (original)
> > +++
> llvm/trunk/test/Instrumentation/SanitizerCoverage/interposable-symbol-nocomdat.ll
> Mon Jul 15 16:18:31 2019
> > @@ -1,8 +1,6 @@
> > ; Test that interposable symbols do not get put in comdats.
> > ; RUN: opt < %s -sancov -sanitizer-coverage-level=3
> -sanitizer-coverage-trace-pc-guard -mtriple x86_64-linux-gnu -S | FileCheck
> %s
> > ; RUN: opt < %s -sancov -sanitizer-coverage-level=3
> -sanitizer-coverage-trace-pc-guard -mtriple x86_64-windows-msvc -S |
> FileCheck %s
> > -; RUN: opt < %s -passes='module(sancov-module),function(sancov-func)'
> -sanitizer-coverage-level=3 -sanitizer-coverage-trace-pc-guard -mtriple
> x86_64-linux-gnu -S | FileCheck %s
> > -; RUN: opt < %s -passes='module(sancov-module),function(sancov-func)'
> -sanitizer-coverage-level=3 -sanitizer-coverage-trace-pc-guard -mtriple
> x86_64-windows-msvc -S | FileCheck %s
> >
> > define void @Vanilla() {
> > entry:
> >
> > Modified: llvm/trunk/test/Instrumentation/SanitizerCoverage/no-func.ll
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Instrumentation/SanitizerCoverage/no-func.ll?rev=366153&r1=366152&r2=366153&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/test/Instrumentation/SanitizerCoverage/no-func.ll
> (original)
> > +++ llvm/trunk/test/Instrumentation/SanitizerCoverage/no-func.ll Mon Jul
> 15 16:18:31 2019
> > @@ -1,7 +1,6 @@
> > ; Tests that we don't insert __sanitizer_cov_trace_pc_guard_init or
> some such
> > ; when there is no instrumentation.
> > ; RUN: opt < %s -sancov -sanitizer-coverage-level=3
> -sanitizer-coverage-trace-pc-guard -S | FileCheck %s
> > -; RUN: opt < %s -passes='module(sancov-module),function(sancov-func)'
> -sanitizer-coverage-level=3 -sanitizer-coverage-trace-pc-guard -S |
> FileCheck %s
> > target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
> > target triple = "x86_64-unknown-linux-gnu"
> >
> >
> > Modified: llvm/trunk/test/Instrumentation/SanitizerCoverage/pc-table.ll
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Instrumentation/SanitizerCoverage/pc-table.ll?rev=366153&r1=366152&r2=366153&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/test/Instrumentation/SanitizerCoverage/pc-table.ll
> (original)
> > +++ llvm/trunk/test/Instrumentation/SanitizerCoverage/pc-table.ll Mon
> Jul 15 16:18:31 2019
> > @@ -1,8 +1,6 @@
> > ; Test -sanitizer-coverage-pc-table=1
> > ; RUN: opt < %s -sancov -sanitizer-coverage-level=3
> -sanitizer-coverage-trace-pc-guard -sanitizer-coverage-pc-table=1 -S
> | FileCheck %s
> > ; RUN: opt < %s -sancov -sanitizer-coverage-level=3
> -sanitizer-coverage-inline-8bit-counters -sanitizer-coverage-pc-table=1 -S
> | FileCheck %s
> > -; RUN: opt < %s -passes='module(sancov-module),function(sancov-func)'
> -sanitizer-coverage-level=3 -sanitizer-coverage-trace-pc-guard
> -sanitizer-coverage-pc-table=1 -S | FileCheck %s
> > -; RUN: opt < %s -passes='module(sancov-module),function(sancov-func)'
> -sanitizer-coverage-level=3 -sanitizer-coverage-inline-8bit-counters
> -sanitizer-coverage-pc-table=1 -S | FileCheck %s
> >
> > target datalayout =
> "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
> > target triple = "x86_64-unknown-linux-gnu"
> >
> > Modified:
> llvm/trunk/test/Instrumentation/SanitizerCoverage/postdominator_check.ll
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Instrumentation/SanitizerCoverage/postdominator_check.ll?rev=366153&r1=366152&r2=366153&view=diff
> >
> ==============================================================================
> > ---
> llvm/trunk/test/Instrumentation/SanitizerCoverage/postdominator_check.ll
> (original)
> > +++
> llvm/trunk/test/Instrumentation/SanitizerCoverage/postdominator_check.ll
> Mon Jul 15 16:18:31 2019
> > @@ -1,7 +1,5 @@
> > ; RUN: opt < %s -sancov -sanitizer-coverage-level=4
> -sanitizer-coverage-trace-pc -sanitizer-coverage-prune-blocks=1 -S |
> FileCheck %s
> > ; RUN: opt < %s -sancov -sanitizer-coverage-level=4
> -sanitizer-coverage-trace-pc -sanitizer-coverage-prune-blocks=0 -S |
> FileCheck %s --check-prefix=CHECK_NO_PRUNE
> > -; RUN: opt < %s -passes='module(sancov-module),function(sancov-func)'
> -sanitizer-coverage-level=4 -sanitizer-coverage-trace-pc
> -sanitizer-coverage-prune-blocks=1 -S | FileCheck %s
> > -; RUN: opt < %s -passes='module(sancov-module),function(sancov-func)'
> -sanitizer-coverage-level=4 -sanitizer-coverage-trace-pc
> -sanitizer-coverage-prune-blocks=0 -S | FileCheck %s
> --check-prefix=CHECK_NO_PRUNE
> >
> > define i32 @foo(i32) #0 {
> > %2 = icmp sgt i32 %0, 0
> >
> > Modified: llvm/trunk/test/Instrumentation/SanitizerCoverage/seh.ll
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Instrumentation/SanitizerCoverage/seh.ll?rev=366153&r1=366152&r2=366153&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/test/Instrumentation/SanitizerCoverage/seh.ll (original)
> > +++ llvm/trunk/test/Instrumentation/SanitizerCoverage/seh.ll Mon Jul 15
> 16:18:31 2019
> > @@ -1,9 +1,6 @@
> > ; RUN: opt < %s -sancov -sanitizer-coverage-level=0 -S | FileCheck %s
> > ; RUN: opt < %s -sancov -sanitizer-coverage-level=1 -S | FileCheck %s
> > ; RUN: opt < %s -sancov -sanitizer-coverage-level=2 -S | FileCheck %s
> > -; RUN: opt < %s -passes='module(sancov-module),function(sancov-func)'
> -sanitizer-coverage-level=0 -S | FileCheck %s
> > -; RUN: opt < %s -passes='module(sancov-module),function(sancov-func)'
> -sanitizer-coverage-level=1 -S | FileCheck %s
> > -; RUN: opt < %s -passes='module(sancov-module),function(sancov-func)'
> -sanitizer-coverage-level=2 -S | FileCheck %s
> >
> > target datalayout = "e-m:x-p:32:32-i64:64-f80:32-n8:16:32-a:0:32-S32"
> > target triple = "i686-pc-windows-msvc18.0.0"
> >
> > Modified:
> llvm/trunk/test/Instrumentation/SanitizerCoverage/stack-depth-variable-declared-by-user.ll
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Instrumentation/SanitizerCoverage/stack-depth-variable-declared-by-user.ll?rev=366153&r1=366152&r2=366153&view=diff
> >
> ==============================================================================
> > ---
> llvm/trunk/test/Instrumentation/SanitizerCoverage/stack-depth-variable-declared-by-user.ll
> (original)
> > +++
> llvm/trunk/test/Instrumentation/SanitizerCoverage/stack-depth-variable-declared-by-user.ll
> Mon Jul 15 16:18:31 2019
> > @@ -2,8 +2,6 @@
> > ; user declares `__sancov_lowest_stack` with an unexpected type.
> > ; RUN: not opt < %s -sancov -sanitizer-coverage-level=1 \
> > ; RUN: -sanitizer-coverage-stack-depth -S 2>&1 | FileCheck %s
> > -; RUN: not opt < %s
> -passes='module(sancov-module),function(sancov-func)'
> -sanitizer-coverage-level=1 \
> > -; RUN: -sanitizer-coverage-stack-depth -S 2>&1 | FileCheck %s
> >
> > target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
> > target triple = "x86_64-unknown-linux-gnu"
> >
> > Modified:
> llvm/trunk/test/Instrumentation/SanitizerCoverage/stack-depth.ll
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Instrumentation/SanitizerCoverage/stack-depth.ll?rev=366153&r1=366152&r2=366153&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/test/Instrumentation/SanitizerCoverage/stack-depth.ll
> (original)
> > +++ llvm/trunk/test/Instrumentation/SanitizerCoverage/stack-depth.ll Mon
> Jul 15 16:18:31 2019
> > @@ -4,11 +4,6 @@
> > ; RUN: opt < %s -sancov -sanitizer-coverage-level=3 \
> > ; RUN: -sanitizer-coverage-stack-depth
> -sanitizer-coverage-trace-pc-guard \
> > ; RUN: -S | FileCheck %s
> > -; RUN: opt < %s -passes='module(sancov-module),function(sancov-func)'
> -sanitizer-coverage-level=1 \
> > -; RUN: -sanitizer-coverage-stack-depth -S | FileCheck %s
> > -; RUN: opt < %s -passes='module(sancov-module),function(sancov-func)'
> -sanitizer-coverage-level=3 \
> > -; RUN: -sanitizer-coverage-stack-depth
> -sanitizer-coverage-trace-pc-guard \
> > -; RUN: -S | FileCheck %s
> >
> > target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
> > target triple = "x86_64-unknown-linux-gnu"
> >
> > Modified:
> llvm/trunk/test/Instrumentation/SanitizerCoverage/switch-tracing.ll
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Instrumentation/SanitizerCoverage/switch-tracing.ll?rev=366153&r1=366152&r2=366153&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/test/Instrumentation/SanitizerCoverage/switch-tracing.ll
> (original)
> > +++ llvm/trunk/test/Instrumentation/SanitizerCoverage/switch-tracing.ll
> Mon Jul 15 16:18:31 2019
> > @@ -1,6 +1,5 @@
> > ; Test -sanitizer-coverage-trace-compares=1 (instrumenting a switch)
> > ; RUN: opt < %s -sancov -sanitizer-coverage-level=1
> -sanitizer-coverage-trace-compares=1 -S | FileCheck %s
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190716/207f0843/attachment-0001.html>
More information about the llvm-commits
mailing list