Author: tejohnson Date: Fri Jan 4 11:05:01 2019 New Revision: 350424 URL: http://llvm.org/viewvc/llvm-project?rev=350424&view=rev Log: [ThinLTO] Clang changes to utilize new pass to handle chains of aliases
Summary: As with NameAnonGlobals, invoke the new CanonicalizeAliases via clang when using the new PM. Depends on D54507. Reviewers: pcc, davidxl Subscribers: mehdi_amini, inglorion, steven_wu, dexonsmith, cfe-commits Differential Revision: https://reviews.llvm.org/D55620 Modified: cfe/trunk/lib/CodeGen/BackendUtil.cpp cfe/trunk/test/CodeGen/lto-newpm-pipeline.c Modified: cfe/trunk/lib/CodeGen/BackendUtil.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/BackendUtil.cpp?rev=350424&r1=350423&r2=350424&view=diff ============================================================================== --- cfe/trunk/lib/CodeGen/BackendUtil.cpp (original) +++ cfe/trunk/lib/CodeGen/BackendUtil.cpp Fri Jan 4 11:05:01 2019 @@ -60,6 +60,7 @@ #include "llvm/Transforms/Scalar.h" #include "llvm/Transforms/Scalar/GVN.h" #include "llvm/Transforms/Utils.h" +#include "llvm/Transforms/Utils/CanonicalizeAliases.h" #include "llvm/Transforms/Utils/NameAnonGlobals.h" #include "llvm/Transforms/Utils/SymbolRewriter.h" #include <memory> @@ -996,9 +997,11 @@ void EmitAssemblyHelper::EmitAssemblyWit if (LangOpts.Sanitize.has(SanitizerKind::LocalBounds)) MPM.addPass(createModuleToFunctionPassAdaptor(BoundsCheckingPass())); - // Lastly, add a semantically necessary pass for LTO. - if (IsLTO || IsThinLTO) + // Lastly, add semantically necessary passes for LTO. + if (IsLTO || IsThinLTO) { + MPM.addPass(CanonicalizeAliasesPass()); MPM.addPass(NameAnonGlobalPass()); + } } else { // Map our optimization levels into one of the distinct levels used to // configure the pipeline. @@ -1019,10 +1022,12 @@ void EmitAssemblyHelper::EmitAssemblyWit if (IsThinLTO) { MPM = PB.buildThinLTOPreLinkDefaultPipeline( Level, CodeGenOpts.DebugPassManager); + MPM.addPass(CanonicalizeAliasesPass()); MPM.addPass(NameAnonGlobalPass()); } else if (IsLTO) { MPM = PB.buildLTOPreLinkDefaultPipeline(Level, CodeGenOpts.DebugPassManager); + MPM.addPass(CanonicalizeAliasesPass()); MPM.addPass(NameAnonGlobalPass()); } else { MPM = PB.buildPerModuleDefaultPipeline(Level, Modified: cfe/trunk/test/CodeGen/lto-newpm-pipeline.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/lto-newpm-pipeline.c?rev=350424&r1=350423&r2=350424&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/lto-newpm-pipeline.c (original) +++ cfe/trunk/test/CodeGen/lto-newpm-pipeline.c Fri Jan 4 11:05:01 2019 @@ -27,12 +27,14 @@ // CHECK-FULL-O0: Starting llvm::Module pass manager run. // CHECK-FULL-O0: Running pass: AlwaysInlinerPass +// CHECK-FULL-O0-NEXT: Running pass: CanonicalizeAliasesPass // CHECK-FULL-O0-NEXT: Running pass: NameAnonGlobalPass // CHECK-FULL-O0-NEXT: Running pass: BitcodeWriterPass // CHECK-FULL-O0: Finished llvm::Module pass manager run. // CHECK-THIN-O0: Starting llvm::Module pass manager run. // CHECK-THIN-O0: Running pass: AlwaysInlinerPass +// CHECK-THIN-O0-NEXT: Running pass: CanonicalizeAliasesPass // CHECK-THIN-O0-NEXT: Running pass: NameAnonGlobalPass // CHECK-THIN-O0-NEXT: Running pass: ThinLTOBitcodeWriterPass // CHECK-THIN-O0: Finished llvm::Module pass manager run. @@ -48,6 +50,7 @@ // LoopVectorizePass. // CHECK-THIN-OPTIMIZED: Starting llvm::Function pass manager run. // CHECK-THIN-OPTIMIZED-NOT: Running pass: LoopVectorizePass +// CHECK-THIN-OPTIMIZED: Running pass: CanonicalizeAliasesPass // CHECK-THIN-OPTIMIZED: Running pass: NameAnonGlobalPass // CHECK-THIN-OPTIMIZED: Running pass: ThinLTOBitcodeWriterPass _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits