[LLVMdev] GEP vs IntToPtr/PtrToInt

Eli Friedman eli.friedman at gmail.com
Mon Apr 4 17:45:21 PDT 2011


On Mon, Apr 4, 2011 at 5:02 PM, Arushi Aggarwal <arushi987 at gmail.com> wrote:
>
>
>> Hi,
>> Is it correct to convert,
>>   %196 = load i32* %195, align 8                  ; <i32> [#uses=1]
>>   %197 = zext i32 %196 to i64                     ; <i64> [#uses=1]
>>   %198 = ptrtoint i8* %193 to i64                 ; <i64> [#uses=1]
>>   %199 = add i64 %198, %197                       ; <i64> [#uses=1]
>>   %200 = inttoptr i64 %199 to i8*                 ; <i8*> [#uses=1]
>> into
>> %200 = getelementptr %193, %196
>> Reducing the unnecessary casts of converting to integers and then back?
>> Thanks,
>> Arushi
>>

See http://llvm.org/docs/LangRef.html#pointeraliasing ; it's not
correct in general.  It is correct if %196 isn't dependent on the
address of any memory object, though.

-Eli




More information about the llvm-dev mailing list