[LLVMdev] TBAA fail on optimization, why?

Jun Koi junkoi2004 at gmail.com
Wed Sep 19 23:18:32 PDT 2012


i have a simple code like below, in wich variable "aaa" does not alias
to "bbb".
i use TBAA to specify this, please see the code.

then i ran this code thru LLVM optimization, and i expected that the
second "store" instruction is eliminated.
however, i am wrong: the second "store" instruction is still there
after optimization.

perhaps my TBAA setup is wrong somewhere? any hint, please?


@aaa = external global i32
@bbb = external global i32

%0 = load i32* @aaa, !tbaa !1
%1 = load i32* @bbb, !tbaa !2
%2 = add i32 %0, %1
store i32 %2, i32* @aaa, !tbaa !2

; below line should be eliminated with optimization
store i32 %1, i32* @bbb, !tbaa !1               ; <==== WHY
optimization CANNOT ELIMINATE this insn?

!tbaa = !{!0, !1, !2}
!0 = metadata !{metadata !"tbaa_root"}
!1 = metadata !{metadata !"aaa", metadata !0}
!2 = metadata !{metadata !"bbb", metadata !0}

More information about the llvm-dev mailing list