From: Rafael Espindola Date: Tue, 5 Aug 2014 20:10:38 +0000 (+0000) Subject: Don't internalize all but main by default. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=0ca286752ec266ba291b21c74d6b80cdc1169256;p=oota-llvm.git Don't internalize all but main by default. This is mostly a cleanup, but it changes a fairly old behavior. Every "real" LTO user was already disabling the silly internalize pass and creating the internalize pass itself. The difference with this patch is for "opt -std-link-opts" and the C api. Now to get a usable behavior out of opt one doesn't need the funny looking command line: opt -internalize -disable-internalize -internalize-public-api-list=foo,bar -std-link-opts git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@214919 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/Transforms/IPO/PassManagerBuilder.h b/include/llvm/Transforms/IPO/PassManagerBuilder.h index 50877d01370..71b2426a52b 100644 --- a/include/llvm/Transforms/IPO/PassManagerBuilder.h +++ b/include/llvm/Transforms/IPO/PassManagerBuilder.h @@ -144,8 +144,8 @@ public: /// populateModulePassManager - This sets up the primary pass manager. void populateModulePassManager(PassManagerBase &MPM); - void populateLTOPassManager(PassManagerBase &PM, bool Internalize, - bool RunInliner, bool DisableGVNLoadPRE = false); + void populateLTOPassManager(PassManagerBase &PM, bool RunInliner, + bool DisableGVNLoadPRE); }; /// Registers a function for adding a standard set of passes. This should be diff --git a/lib/LTO/LTOCodeGenerator.cpp b/lib/LTO/LTOCodeGenerator.cpp index fe179cf1ac6..a51b1c9df8b 100644 --- a/lib/LTO/LTOCodeGenerator.cpp +++ b/lib/LTO/LTOCodeGenerator.cpp @@ -475,10 +475,8 @@ bool LTOCodeGenerator::generateObjectFile(raw_ostream &out, // keeps only main if it exists and does nothing for libraries. Instead // we create the pass ourselves with the symbol list provided by the linker. if (!DisableOpt) - PassManagerBuilder().populateLTOPassManager(passes, - /*Internalize=*/false, - !DisableInline, - DisableGVNLoadPRE); + PassManagerBuilder().populateLTOPassManager(passes, !DisableInline, + DisableGVNLoadPRE); // Make sure everything is still good. passes.add(createVerifierPass()); diff --git a/lib/Transforms/IPO/PassManagerBuilder.cpp b/lib/Transforms/IPO/PassManagerBuilder.cpp index 98477b5d71f..3d846b01d3a 100644 --- a/lib/Transforms/IPO/PassManagerBuilder.cpp +++ b/lib/Transforms/IPO/PassManagerBuilder.cpp @@ -284,18 +284,11 @@ void PassManagerBuilder::populateModulePassManager(PassManagerBase &MPM) { } void PassManagerBuilder::populateLTOPassManager(PassManagerBase &PM, - bool Internalize, bool RunInliner, bool DisableGVNLoadPRE) { // Provide AliasAnalysis services for optimizations. addInitialAliasAnalysisPasses(PM); - // Now that composite has been compiled, scan through the module, looking - // for a main function. If main is defined, mark all other functions - // internal. - if (Internalize) - PM.add(createInternalizePass("main")); - // Propagate constants at call sites into the functions they call. This // opens opportunities for globalopt (and inlining) by substituting function // pointers passed as arguments to direct uses of functions. @@ -461,5 +454,5 @@ void LLVMPassManagerBuilderPopulateLTOPassManager(LLVMPassManagerBuilderRef PMB, LLVMBool RunInliner) { PassManagerBuilder *Builder = unwrap(PMB); PassManagerBase *LPM = unwrap(PM); - Builder->populateLTOPassManager(*LPM, Internalize != 0, RunInliner != 0); + Builder->populateLTOPassManager(*LPM, RunInliner != 0, false); } diff --git a/test/Other/link-opts.ll b/test/Other/link-opts.ll deleted file mode 100644 index 8e58ac8a568..00000000000 --- a/test/Other/link-opts.ll +++ /dev/null @@ -1,13 +0,0 @@ -;RUN: opt -S -std-link-opts < %s | FileCheck %s -; Simple test to check that -std-link-opts keeps only the main function. - -; CHECK-NOT: define -; CHECK: define void @main -; CHECK-NOT: define -define void @main() { - ret void -} - -define void @foo() { - ret void -} diff --git a/tools/bugpoint/bugpoint.cpp b/tools/bugpoint/bugpoint.cpp index c7dae0f45b6..cbecc359970 100644 --- a/tools/bugpoint/bugpoint.cpp +++ b/tools/bugpoint/bugpoint.cpp @@ -179,8 +179,7 @@ int main(int argc, char **argv) { if (StandardLinkOpts) { PassManagerBuilder Builder; - Builder.populateLTOPassManager(PM, /*Internalize=*/true, - /*RunInliner=*/true); + Builder.populateLTOPassManager(PM, /*RunInliner=*/true, false); } if (OptLevelO1 || OptLevelO2 || OptLevelO3) { diff --git a/tools/opt/opt.cpp b/tools/opt/opt.cpp index 6ba6340040b..1ff795d67d2 100644 --- a/tools/opt/opt.cpp +++ b/tools/opt/opt.cpp @@ -108,10 +108,6 @@ static cl::opt DisableOptimizations("disable-opt", cl::desc("Do not run any optimization passes")); -static cl::opt -DisableInternalize("disable-internalize", - cl::desc("Do not mark all symbols as internal")); - static cl::opt StandardCompileOpts("std-compile-opts", cl::desc("Include the standard compile time optimizations")); @@ -271,8 +267,7 @@ static void AddStandardLinkPasses(PassManagerBase &PM) { if (DisableOptimizations) return; PassManagerBuilder Builder; - Builder.populateLTOPassManager(PM, /*Internalize=*/ !DisableInternalize, - /*RunInliner=*/ !DisableInline); + Builder.populateLTOPassManager(PM, /*RunInliner=*/!DisableInline, false); } //===----------------------------------------------------------------------===//