[llvm-dev] LLVM Alias Analysis (Load and store from same address is not showed up in same set)

Friedman, Eli via llvm-dev llvm-dev at lists.llvm.org
Mon Apr 16 10:51:14 PDT 2018


On 4/15/2018 11:44 AM, Mustakimur Khandaker via llvm-dev wrote:
> Hi
> I have this simple c code for which I would like to use for alias 
> analysis.
>
>     #include <stdio.h>
>     #include <stdlib.h>
>
>     static int (*fp) (void);
>     void ind_call (int (*compr)(void)){
>         fp = compr;
>         fp();
>     }
>     int hello(void){
>         return printf("hello world\n");
>     }
>     int main(){
>         ind_call(hello);
>         return 0;
>     }
>
>
> So, I do the following:
>
>     bin/opt -basicaa -cfl-anders-aa -print-alias-sets bin/test/test.bc
>
>
> I get the following result:
>
>     Alias sets for function 'ind_call':
>     Alias Set Tracker: 2 alias sets for 2 pointer values.
>       AliasSet[0x91a5820, 1] must alias, Mod/Ref   Pointers: (i32 ()**
>     %compr.addr, 8)
>       AliasSet[0x91a58c0, 2] may alias, Mod/Ref   Pointers: (i32 ()**
>     @fp, 8)
>         1 Unknown instructions: i32 %call
>

LLVM's alias analysis is not very smart; it depends on other 
optimization passes to produce reasonable results.  You should at least 
run mem2reg before trying to do any alias analysis queries.

-Eli


-- 
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180416/f243179c/attachment.html>


More information about the llvm-dev mailing list