[llvm-dev] [LLVM LTO]internalize pass

Teresa Johnson via llvm-dev llvm-dev at lists.llvm.org
Fri May 27 05:55:26 PDT 2016


On Fri, May 27, 2016 at 3:43 AM, Umesh Kalappa via llvm-dev <
llvm-dev at lists.llvm.org> wrote:

> Hi All ,
>
> We are in process of exploring the  LTO  and found that internalize
> pass is the replacement for whole program optimisation
> (-fwhole-program in gcc)  in clang  and  in the below case
>
> define i32 @test() #0 {
>
> entry:
>
>   ret i32 0
>
> }
>
>
> define i32 @main() #0 {
>
> entry:
>
>   %retval = alloca i32, align 4
>
>   store i32 0, i32* %retval, align 4
>
>   %call = call i32 @test()
>
>   ret i32 %call
>
> }
>
> *** IR Dump After Internalize Global Symbols ***; ModuleID = 'ld-temp.o'
>
> target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
>
> target triple = "x86_64-unknown-linux-gnu"
>
>
> ; Function Attrs: nounwind uwtable
>
> define internal i32 @test() #0 {
>
> entry:
>
>   ret i32 0
>
> }
>
>
> ; Function Attrs: nounwind uwtable
>
> define internal i32 @main() #0 {
>
> entry:
>
>   %retval = alloca i32, align 4
>
>   store i32 0, i32* %retval, align 4
>
>   %call = call i32 @test()
>
>   ret i32 %call
>
> }
>
>
> the functions  def like test() and the main()  are marked internal by
> the internalize pass.
>
> Queries is ,we tried to prevent mark the internal string attribute
> before function name i.e
>

The option you would want is -exported-symbol=main, so that llvm-lto tells
internalize to preserve it. No need to list 'test' since presumably it is
fine to internalize that (and the use in 'main' will prevent it from being
dead code eliminated, which I assume is currently happening to both of
these symbols).


> >
> > $bin/llvm-lto -print-after-all  test.o
> -internalize-public-api-list=test,main  -o output.o
>
> $bin/llvm-lto -print-after-all  test.o
> -internalize-public-api-file=file  -o output.o
> $cat file
>  test
>  main
>
> Both cases ,no luck here ,still the functions are marked internal :(
>
> Any suggestions here or its a bug with internalize pass.
>
>
> Thank you
> ~Umesh
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>



-- 
Teresa Johnson |  Software Engineer |  tejohnson at google.com |  408-460-2413
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160527/db1b272e/attachment.html>


More information about the llvm-dev mailing list