[LLVMdev] Incorrect result in LLVM Alias Analysis

Duncan Sands baldrick at free.fr
Fri Apr 6 00:54:10 PDT 2012


Hi Adarsh,

> I want to check if the values a and b in the program alias.
>
> int main() {
> int *a,*b;
> a=(int *)malloc(sizeof(int));
> b=(int *)malloc(sizeof(int));
> *a=10;
> *b=8;
> return 0;
> }
>
> I use the below code for this (getAnalysisUsage method has been defined)
>
> AliasAnalysis::Location loc1=AliasAnalysis::Location(k1); //a
> AliasAnalysis::Location loc2=AliasAnalysis::Location(k2); //b
> AliasAnalysis::AliasResult ar=AA.alias(loc1,loc2);
>
> But I get ar=1 i.e May Alias result. Where am I going wrong?

did you run a basic set of optimizers first?  Alias analysis assumes that
at least mem2reg has been run.  Otherwise it returns conservatively correct
but useless answers for everything.

  I have included
> -basicaa option in the opt command for running this.

Ciao, Duncan.



More information about the llvm-dev mailing list