[LLVMdev] convert GetElemtPtr result to pointer on element?
Alexander Poddey
alexander.poddey at gmx.net
Tue May 26 20:56:37 PDT 2015
Hi Tim,
I forgot to say that I try to do all this in the LLVM API, not IR.
I read in a bc'ed program and try to edit it using the API.
Alex
Tim Northover wrote:
>> But I can not succeed in using the getGetElementPtr result in
>> constructing an initalizer for another global value (which expects a
>> ConstantFP* and not a ConstantExpr*).
>
> The result of a Constant GEP is going to be the address of a
> floating-point value rather than the value itself, so you can't use it
> to initialise something that expects a float. For example:
>
> @arr = constant [2 x float] [float 0.0, float 1.0]
> @bad = global float getelementptr([2 x float], [2 x float]* @arr,
> i32 0, i32 1)
> @good = global float* getelementptr([2 x float], [2 x float]*
> @arr, i32 0, i32 1)
>
> LLVM doesn't really do value aliases, so you'd usually just write
> "@bad = global float 1.0" for the second line. You might extract that
> 1.0 value by looking into the @arr definition directly using the LLVM
> API -- if you can't do that (say because it's not a compile-time
> constant) then the chances are what you're trying to write wouldn't be
> valid anyway.
>
> Cheers.
>
> Tim.
More information about the llvm-dev
mailing list