Hi, Could anyone tell me how exactly do I use "Type Based Alias Analysis"? I compiled the C program with Clang, and verified that there is tbaa metadata in the IR code. But then when I use "opt -tbaa input.c.bc -aa-eval" to check the results, it always gives 100% may aliasing no matter what input. Am I using "tbaa" correctly? Thanks. Yi
Can you post the source code of your test case? Gan On Fri, Dec 2, 2011 at 1:44 PM, <liyi at cs.toronto.edu> wrote:> Hi, > > Could anyone tell me how exactly do I use "Type Based Alias Analysis"? > > I compiled the C program with Clang, and verified that there is tbaa > metadata in the IR code. > > But then when I use "opt -tbaa input.c.bc -aa-eval" to check the results, > it always gives 100% may aliasing no matter what input. > > Am I using "tbaa" correctly? > > Thanks. > Yi > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev-- Best Regards Gan
Can you post the source code of your test case? Gan> Hi, > > Could anyone tell me how exactly do I use "Type Based Alias Analysis"? > > I compiled the C program with Clang, and verified that there is tbaa > metadata in the IR code. > > But then when I use "opt -tbaa input.c.bc -aa-eval" to check the results, > it always gives 100% may aliasing no matter what input. > > Am I using "tbaa" correctly? > > Thanks. > Yi > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >
Why not try some simple ones like:
1 void foo(int);
2
3 int main()
4 {
5 int x=0;
6 int* p=&x;
7 int* q=&x;
8
9 float z=0;
10 float* t=&z;
11
12 return *p;
13 }
-tbaa gives me:
Alias Set Tracker: 1 alias sets for 7 pointer values.
AliasSet[0x207f860, 7] may alias, Mod/Ref Pointers: (i32* %1, 4),
(i32* %x, 4), (i32** %p, 8), (i32** %q, 8), (float* %z, 4), (float** %t,
8), (i32* %2, 4)
===== Alias Analysis Evaluator Report ==== 21 Total Alias Queries Performed
0 no alias responses (0.0%)
21 may alias responses (100.0%)
0 partial alias responses (0.0%)
0 must alias responses (0.0%)
Alias Analysis Evaluator Pointer Alias Summary: 0%/100%/0%/0%
Alias Analysis Mod/Ref Evaluator Summary: no mod/ref!
-basicaa gives me:
Alias Set Tracker: 6 alias sets for 7 pointer values.
AliasSet[0x27a0020, 1] must alias, Mod Pointers: (i32* %1, 4)
AliasSet[0x27a0080, 2] may alias, Mod/Ref Pointers: (i32* %x, 4),
(i32* %2, 4)
AliasSet[0x27a00e0, 1] must alias, Mod/Ref Pointers: (i32** %p, 8)
AliasSet[0x27a3f60, 1] must alias, Mod Pointers: (i32** %q, 8)
AliasSet[0x27a4000, 1] must alias, Mod Pointers: (float* %z, 4)
AliasSet[0x27acdf0, 1] must alias, Mod Pointers: (float** %t, 8)
===== Alias Analysis Evaluator Report ==== 21 Total Alias Queries Performed
19 no alias responses (90.4%)
2 may alias responses (9.5%)
0 partial alias responses (0.0%)
0 must alias responses (0.0%)
Alias Analysis Evaluator Pointer Alias Summary: 90%/9%/0%/0%
Alias Analysis Mod/Ref Evaluator Summary: no mod/ref!
So I suspect -tbaa is not working in this case.
> Can you post the source code of your test case?
>
> Gan
>
>
> On Fri, Dec 2, 2011 at 1:44 PM, <liyi at cs.toronto.edu> wrote:
>> Hi,
>>
>> Could anyone tell me how exactly do I use "Type Based Alias
Analysis"?
>>
>> I compiled the C program with Clang, and verified that there is tbaa
>> metadata in the IR code.
>>
>> But then when I use "opt -tbaa input.c.bc -aa-eval" to check
the
>> results,
>> it always gives 100% may aliasing no matter what input.
>>
>> Am I using "tbaa" correctly?
>>
>> Thanks.
>> Yi
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>
>
> --
> Best Regards
>
> Gan
>
Hi Yi,> Could anyone tell me how exactly do I use "Type Based Alias Analysis"? > > I compiled the C program with Clang, and verified that there is tbaa > metadata in the IR code. > > But then when I use "opt -tbaa input.c.bc -aa-eval" to check the results, > it always gives 100% may aliasing no matter what input.you need to run some optimizations on your bitcode, at least mem2reg, to get it in a form where alias analysis will do something useful. Ciao, Duncan.
Duncan Sands <baldrick <at> free.fr> writes:> > Hi Yi, > > > Could anyone tell me how exactly do I use "Type Based Alias Analysis"? > > > > I compiled the C program with Clang, and verified that there is tbaa > > metadata in the IR code. > > > > But then when I use "opt -tbaa input.c.bc -aa-eval" to check the results, > > it always gives 100% may aliasing no matter what input. > > you need to run some optimizations on your bitcode, at least mem2reg, to get > it in a form where alias analysis will do something useful. > > Ciao, Duncan. >Thanks for the advice. But I tried -mem2reg. It gives me the same results: everything may alias while -basicaa give more meaningful results. Have you made -tbaa working before? Could you show me the optimizations you used? Thank you. Yi