[llvm-dev] How to run InternalizePass

Russell Wallace via llvm-dev llvm-dev at lists.llvm.org
Sat Dec 19 22:43:33 PST 2015


That works, thanks!

On Sun, Dec 20, 2015 at 6:21 AM, Jingyue Wu <jingyue at google.com> wrote:

> Try add the internalize pass before populateFunctionPassManager. See
> inlined.
>
> On Sat, Dec 19, 2015 at 7:15 PM, Russell Wallace via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
>
>> I'm working on a whole program optimizer that uses LLVM as a library, and
>> one of the things I want to do is eliminate dead global functions and
>> variables even when they are not local to a module. (This understandably
>> doesn't happen by default because the optimizer has to assume it could be
>> compiling a library rather than a program.)
>>
>> I've actually written a function to do this, but then I came across
>> InternalizePass which seems like it could allow my code to be discarded
>> because it could flag globals as internal (in the presence of a main
>> function, according to the documentation) which would allow the existing
>> dead global elimination optimization pass to do the job.
>>
>> It seems that InternalizePass is, again understandably, not enabled by
>> default even when you select optimization level 3. How do you turn it on? I
>> tried setting PrepareForLTO but that doesn't seem to do anything. Here's
>> what I have so far:
>>
>>     legacy::FunctionPassManager FPM(&M);
>>     legacy::PassManager MPM;
>>
>>     PassManagerBuilder Builder;
>>     Builder.OptLevel = 3;
>>     Builder.PrepareForLTO = true;
>>     Builder.VerifyInput = true;
>>     Builder.VerifyOutput = true;
>>
>
> MPM.add(llvm::createInternalizePass(export_list));
>
>
>>     Builder.populateFunctionPassManager(FPM);
>>     Builder.populateModulePassManager(MPM);
>>
>>     FPM.doInitialization();
>>     for (Function &F : M)
>>       FPM.run(F);
>>     FPM.doFinalization();
>>     MPM.run(M);
>>
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20151220/8da92f09/attachment.html>


More information about the llvm-dev mailing list