[LLVMdev] sunkaddr var names
Garrison Venn
gvenn.cfe.dev at gmail.com
Tue Sep 6 10:42:45 PDT 2011
When viewing generated IR code in a module I generated, I'm seeing %sunkaddr??
IR variables, being created that I did not generate. What is the point of these var names,
and implementations of their use such as:
%sunkaddr16 = sext i32 %25 to i64
%sunkaddr15 = ptrtoint i8* %addr to i64
%sunkaddr17 = mul i64 %sunkaddr16, 4
%sunkaddr18 = add i64 %sunkaddr15, %sunkaddr17
%sunkaddr19 = add i64 %sunkaddr18, 28
%sunkaddr20 = inttoptr i64 %sunkaddr19 to i32*
store i32 %27, i32* %sunkaddr20
I can guess sunkaddr means sunk address, and that the implementation is
combining two pointers into a 64bit value but in a strange way; two bit shift
of one pointer added to another along with added offset of 28. Except for the
value of the last constant offset addition, this pattern is repeated in my IR. The
constants do however always have the 2 least significant bits clear. Is this final
sunkaddr20 address special to the target platform, which is OS X 10.7.x?
Thanks for any clarification
Garrison
More information about the llvm-dev
mailing list