aeubanks updated this revision to Diff 284875. aeubanks added a comment. Specify target
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D85457/new/ https://reviews.llvm.org/D85457 Files: clang/test/CodeGen/O0-no-skipped-passes.c llvm/include/llvm/IR/IRPrintingPasses.h llvm/include/llvm/IR/PassManager.h llvm/include/llvm/IR/Verifier.h llvm/include/llvm/Transforms/Coroutines/CoroCleanup.h llvm/include/llvm/Transforms/Coroutines/CoroEarly.h llvm/include/llvm/Transforms/Coroutines/CoroElide.h llvm/include/llvm/Transforms/Coroutines/CoroSplit.h llvm/include/llvm/Transforms/IPO/AlwaysInliner.h llvm/include/llvm/Transforms/Instrumentation/AddressSanitizer.h llvm/include/llvm/Transforms/Instrumentation/BoundsChecking.h llvm/include/llvm/Transforms/Instrumentation/HWAddressSanitizer.h llvm/include/llvm/Transforms/Instrumentation/MemorySanitizer.h llvm/include/llvm/Transforms/Instrumentation/SanitizerCoverage.h llvm/include/llvm/Transforms/Instrumentation/ThreadSanitizer.h llvm/include/llvm/Transforms/Scalar/LowerAtomic.h llvm/include/llvm/Transforms/Scalar/LowerMatrixIntrinsics.h llvm/test/Feature/optnone-opt.ll
Index: llvm/test/Feature/optnone-opt.ll =================================================================== --- llvm/test/Feature/optnone-opt.ll +++ llvm/test/Feature/optnone-opt.ll @@ -66,8 +66,8 @@ ; Additional IR passes that opt doesn't turn on by default. ; MORE-DAG: Skipping pass 'Dead Code Elimination' ; MORE-DAG: Skipping pass 'Dead Instruction Elimination' +; NPM-MORE-DAG: Skipping pass: DCEPass ; NPM-MORE-DAG: Skipping pass: GVNHoistPass -; NPM-MORE-DAG: Skipping pass: LowerAtomicPass ; Loop IR passes that opt doesn't turn on by default. ; LOOP-DAG: Skipping pass 'Delete dead loops' Index: llvm/include/llvm/Transforms/Scalar/LowerMatrixIntrinsics.h =================================================================== --- llvm/include/llvm/Transforms/Scalar/LowerMatrixIntrinsics.h +++ llvm/include/llvm/Transforms/Scalar/LowerMatrixIntrinsics.h @@ -18,6 +18,7 @@ namespace llvm { struct LowerMatrixIntrinsicsPass : PassInfoMixin<LowerMatrixIntrinsicsPass> { PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM); + static bool isRequired() { return true; } }; } // namespace llvm Index: llvm/include/llvm/Transforms/Scalar/LowerAtomic.h =================================================================== --- llvm/include/llvm/Transforms/Scalar/LowerAtomic.h +++ llvm/include/llvm/Transforms/Scalar/LowerAtomic.h @@ -22,6 +22,7 @@ class LowerAtomicPass : public PassInfoMixin<LowerAtomicPass> { public: PreservedAnalyses run(Function &F, FunctionAnalysisManager &); + static bool isRequired() { return true; } }; } Index: llvm/include/llvm/Transforms/Instrumentation/ThreadSanitizer.h =================================================================== --- llvm/include/llvm/Transforms/Instrumentation/ThreadSanitizer.h +++ llvm/include/llvm/Transforms/Instrumentation/ThreadSanitizer.h @@ -28,6 +28,7 @@ struct ThreadSanitizerPass : public PassInfoMixin<ThreadSanitizerPass> { PreservedAnalyses run(Function &F, FunctionAnalysisManager &FAM); PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM); + static bool isRequired() { return true; } }; } // namespace llvm Index: llvm/include/llvm/Transforms/Instrumentation/SanitizerCoverage.h =================================================================== --- llvm/include/llvm/Transforms/Instrumentation/SanitizerCoverage.h +++ llvm/include/llvm/Transforms/Instrumentation/SanitizerCoverage.h @@ -46,6 +46,7 @@ *vfs::getRealFileSystem()); } PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM); + static bool isRequired() { return true; } private: SanitizerCoverageOptions Options; Index: llvm/include/llvm/Transforms/Instrumentation/MemorySanitizer.h =================================================================== --- llvm/include/llvm/Transforms/Instrumentation/MemorySanitizer.h +++ llvm/include/llvm/Transforms/Instrumentation/MemorySanitizer.h @@ -41,6 +41,7 @@ PreservedAnalyses run(Function &F, FunctionAnalysisManager &FAM); PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM); + static bool isRequired() { return true; } private: MemorySanitizerOptions Options; Index: llvm/include/llvm/Transforms/Instrumentation/HWAddressSanitizer.h =================================================================== --- llvm/include/llvm/Transforms/Instrumentation/HWAddressSanitizer.h +++ llvm/include/llvm/Transforms/Instrumentation/HWAddressSanitizer.h @@ -27,6 +27,7 @@ explicit HWAddressSanitizerPass(bool CompileKernel = false, bool Recover = false); PreservedAnalyses run(Module &M, ModuleAnalysisManager &MAM); + static bool isRequired() { return true; } private: bool CompileKernel; Index: llvm/include/llvm/Transforms/Instrumentation/BoundsChecking.h =================================================================== --- llvm/include/llvm/Transforms/Instrumentation/BoundsChecking.h +++ llvm/include/llvm/Transforms/Instrumentation/BoundsChecking.h @@ -17,6 +17,7 @@ /// stores, and other memory intrinsics. struct BoundsCheckingPass : PassInfoMixin<BoundsCheckingPass> { PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM); + static bool isRequired() { return true; } }; Index: llvm/include/llvm/Transforms/Instrumentation/AddressSanitizer.h =================================================================== --- llvm/include/llvm/Transforms/Instrumentation/AddressSanitizer.h +++ llvm/include/llvm/Transforms/Instrumentation/AddressSanitizer.h @@ -102,6 +102,7 @@ bool Recover = false, bool UseAfterScope = false); PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM); + static bool isRequired() { return true; } private: bool CompileKernel; @@ -122,6 +123,7 @@ bool UseGlobalGC = true, bool UseOdrIndicator = false); PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM); + static bool isRequired() { return true; } private: bool CompileKernel; Index: llvm/include/llvm/Transforms/IPO/AlwaysInliner.h =================================================================== --- llvm/include/llvm/Transforms/IPO/AlwaysInliner.h +++ llvm/include/llvm/Transforms/IPO/AlwaysInliner.h @@ -34,6 +34,7 @@ : InsertLifetime(InsertLifetime) {} PreservedAnalyses run(Module &M, ModuleAnalysisManager &); + static bool isRequired() { return true; } }; /// Create a legacy pass manager instance of a pass to inline and remove Index: llvm/include/llvm/Transforms/Coroutines/CoroSplit.h =================================================================== --- llvm/include/llvm/Transforms/Coroutines/CoroSplit.h +++ llvm/include/llvm/Transforms/Coroutines/CoroSplit.h @@ -24,6 +24,7 @@ struct CoroSplitPass : PassInfoMixin<CoroSplitPass> { PreservedAnalyses run(LazyCallGraph::SCC &C, CGSCCAnalysisManager &AM, LazyCallGraph &CG, CGSCCUpdateResult &UR); + static bool isRequired() { return true; } }; } // end namespace llvm Index: llvm/include/llvm/Transforms/Coroutines/CoroElide.h =================================================================== --- llvm/include/llvm/Transforms/Coroutines/CoroElide.h +++ llvm/include/llvm/Transforms/Coroutines/CoroElide.h @@ -24,6 +24,7 @@ struct CoroElidePass : PassInfoMixin<CoroElidePass> { PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM); + static bool isRequired() { return true; } }; } // end namespace llvm Index: llvm/include/llvm/Transforms/Coroutines/CoroEarly.h =================================================================== --- llvm/include/llvm/Transforms/Coroutines/CoroEarly.h +++ llvm/include/llvm/Transforms/Coroutines/CoroEarly.h @@ -25,6 +25,7 @@ struct CoroEarlyPass : PassInfoMixin<CoroEarlyPass> { PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM); + static bool isRequired() { return true; } }; } // end namespace llvm Index: llvm/include/llvm/Transforms/Coroutines/CoroCleanup.h =================================================================== --- llvm/include/llvm/Transforms/Coroutines/CoroCleanup.h +++ llvm/include/llvm/Transforms/Coroutines/CoroCleanup.h @@ -22,6 +22,7 @@ struct CoroCleanupPass : PassInfoMixin<CoroCleanupPass> { PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM); + static bool isRequired() { return true; } }; } // end namespace llvm Index: llvm/include/llvm/IR/Verifier.h =================================================================== --- llvm/include/llvm/IR/Verifier.h +++ llvm/include/llvm/IR/Verifier.h @@ -116,6 +116,7 @@ Result run(Module &M, ModuleAnalysisManager &); Result run(Function &F, FunctionAnalysisManager &); + static bool isRequired() { return true; } }; /// Check a module for errors, but report debug info errors separately. @@ -141,6 +142,7 @@ PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM); PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM); + static bool isRequired() { return true; } }; } // end namespace llvm Index: llvm/include/llvm/IR/PassManager.h =================================================================== --- llvm/include/llvm/IR/PassManager.h +++ llvm/include/llvm/IR/PassManager.h @@ -1308,6 +1308,7 @@ return PreservedAnalyses::all(); } + static bool isRequired() { return true; } }; /// A no-op pass template which simply forces a specific analysis result Index: llvm/include/llvm/IR/IRPrintingPasses.h =================================================================== --- llvm/include/llvm/IR/IRPrintingPasses.h +++ llvm/include/llvm/IR/IRPrintingPasses.h @@ -76,6 +76,7 @@ bool ShouldPreserveUseListOrder = false); PreservedAnalyses run(Module &M, AnalysisManager<Module> &); + static bool isRequired() { return true; } }; /// Pass for printing a Function as LLVM's text IR assembly. @@ -91,6 +92,7 @@ PrintFunctionPass(raw_ostream &OS, const std::string &Banner = ""); PreservedAnalyses run(Function &F, AnalysisManager<Function> &); + static bool isRequired() { return true; } }; } // End llvm namespace Index: clang/test/CodeGen/O0-no-skipped-passes.c =================================================================== --- /dev/null +++ clang/test/CodeGen/O0-no-skipped-passes.c @@ -0,0 +1,14 @@ +// Test that no passes are skipped under -O0/NPM +// +// RUN: %clang_cc1 -target x86_64-linux-gnu -mllvm -enable-npm-optnone -O0 -fexperimental-new-pass-manager %s -fdebug-pass-manager -emit-llvm -o /dev/null 2>&1 | FileCheck %s +// RUN: %clang_cc1 -target x86_64-linux-gnu -mllvm -enable-npm-optnone -O0 -fexperimental-new-pass-manager %s -fdebug-pass-manager -emit-llvm -o /dev/null -fcoroutines-ts 2>&1 | FileCheck %s +// RUN: %clang_cc1 -target x86_64-linux-gnu -mllvm -enable-npm-optnone -O0 -fexperimental-new-pass-manager %s -fdebug-pass-manager -emit-llvm -o /dev/null -fsanitize=address 2>&1 | FileCheck %s +// RUN: %clang_cc1 -target x86_64-linux-gnu -mllvm -enable-npm-optnone -O0 -fexperimental-new-pass-manager %s -fdebug-pass-manager -emit-llvm -o /dev/null -fsanitize=hwaddress 2>&1 | FileCheck %s +// RUN: %clang_cc1 -target x86_64-linux-gnu -mllvm -enable-npm-optnone -O0 -fexperimental-new-pass-manager %s -fdebug-pass-manager -emit-llvm -o /dev/null -fsanitize=memory 2>&1 | FileCheck %s +// RUN: %clang_cc1 -target x86_64-linux-gnu -mllvm -enable-npm-optnone -O0 -fexperimental-new-pass-manager %s -fdebug-pass-manager -emit-llvm -o /dev/null -fsanitize=thread 2>&1 | FileCheck %s +// RUN: %clang_cc1 -target x86_64-linux-gnu -mllvm -enable-npm-optnone -O0 -fexperimental-new-pass-manager %s -fdebug-pass-manager -emit-llvm -o /dev/null -fsanitize=local-bounds 2>&1 | FileCheck %s +// RUN: %clang_cc1 -target x86_64-linux-gnu -mllvm -enable-npm-optnone -O0 -fexperimental-new-pass-manager %s -fdebug-pass-manager -emit-llvm -o /dev/null -fsanitize-coverage-trace-pc-guard 2>&1 | FileCheck %s + +// CHECK-NOT: Skipping pass + +int func(int a) { return a; }
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits