[LLVMdev] Some questions on the output formats of AliasSetTracker

hc2428 at columbia.edu hc2428 at columbia.edu
Thu May 7 17:13:14 PDT 2009


Dear Staff,
     Here are some questions on the output formats of AliasSetTracker.  
The code is as below:


int G1 = 9;
int G2 = 5;

int main() {
         int * XX;
         int * YY;

         XX = &G1;
         YY = XX;
         YY = &G2;
         XX = &G2;

}


The output for -anders-aa is (the command is: opt -anders-aa test.bc  
-disable-output -print-alias-sets &> output-anders.txt):
Alias Set Tracker: 5 alias sets for 4 pointer values.
   AliasSet[0xea6fb0,0] may alias, Mod/Ref
     10 Call Sites: void ({ }*)* @llvm.dbg.func.start, void ({ }*, { }*)*
@llvm.dbg.declare, void ({ }*, { }*)* @llvm.dbg.declare, void (i32,  
i32, { }*)*
@llvm.dbg.stoppoint, void (i32, i32, { }*)* @llvm.dbg.stoppoint, void  
(i32, i32, { }*)*
@llvm.dbg.stoppoint, void (i32, i32, { }*)* @llvm.dbg.stoppoint, void  
(i32, i32, { }*)*
@llvm.dbg.stoppoint, void (i32, i32, { }*)* @llvm.dbg.stoppoint, void ({ }*)*
@llvm.dbg.region.end
   AliasSet[0xea7040,1] must alias, Mod/Ref   Pointers: (i32** %XX, 8)
   AliasSet[0xea6d40,1] must alias, Mod       Pointers: (i32** %YY, 8)
   AliasSet[0xea6ec0,1] must alias, Mod/Ref   Pointers: (i32* %0, 4)
   AliasSet[0xea67d0,1] must alias, Mod/Ref   Pointers: (i32* %retval, 4)



The output for -steens-aa in poolalloc module is:
Alias Set Tracker: 5 alias sets for 4 pointer values.
   AliasSet[0xeb0e20,0] may alias, Mod/Ref
     10 Call Sites: void ({ }*)* @llvm.dbg.func.start, void ({ }*, { }*)*
@llvm.dbg.declare, void ({ }*, { }*)* @llvm.dbg.declare, void (i32,  
i32, { }*)*
@llvm.dbg.stoppoint, void (i32, i32, { }*)* @llvm.dbg.stoppoint, void  
(i32, i32, { }*)*
@llvm.dbg.stoppoint, void (i32, i32, { }*)* @llvm.dbg.stoppoint, void  
(i32, i32, { }*)*
@llvm.dbg.stoppoint, void (i32, i32, { }*)* @llvm.dbg.stoppoint, void ({ }*)*
@llvm.dbg.region.end
   AliasSet[0xeb5a20,1] must alias, Mod/Ref   Pointers: (i32** %XX, 8)
   AliasSet[0xebb210,1] must alias, Mod       Pointers: (i32** %YY, 8)
   AliasSet[0xebabb0,1] must alias, Mod/Ref   Pointers: (i32* %0, 4)
   AliasSet[0xebac10,1] must alias, Mod/Ref   Pointers: (i32* %retval, 4)



However, I am a little confused with these output. In Both anders-aa  
and steens-aa, XX and YY should stay in the same AliasSet, and their  
alias relationship should be May Alias, right? Sorry I am just a  
freshman to the alias analysis area, please shed some light on the  
understanding of the output formats.

Best,
Heming




More information about the llvm-dev mailing list