[LLVMdev] Does getelementptr get optimized in compile-time?
baldrick at free.fr
Thu Jan 3 01:14:40 PST 2013
On 03/01/13 10:12, Journeyer J. Joh wrote:
> Hello Duncan Sands,
>> If however the operands are all numerical values (eg the pointer operand is "null" and the others are numbers like "1") then it will be turned into a number by the optimizers.
> I think my case is stated above among your answer.
> There is a brief document about using getelmentptr trick above.
> And I was wondering something similar to this case.
> %Size = getelementptr %T* null, int 1
> %SizeI = cast %T* %Size to uint
yes, this kind of thing will be turned into a number by the optimizers, assuming
that data layout information is available (since the optimizers need to know
the size of a %T to do this optimization).
> I understood that for this case, getelementptr will be collapsed to a
> number during optimization. It is also explained in the brief document
> above. I didn't understood by the document at that time.
> OK. Thank you very much. I understood very well.
> 2013/1/3 Duncan Sands <baldrick at free.fr>:
>> Hi Journeyer,
>>> I've got a question about getelementptr.
>>> I've been told that getelementptr is evaluated in compile-time NOT in
>> this is impossible if the arguments are not constants. If they are
>> then the optimizers will turn a getelementptr instruction into a
>> constant expression
>> Even so it usually isn't evaluable at compile time, since typically the
>> operand is a global variable for which the address is only known when the
>> program loader loads the final executable into memory. If however the
>> are all numerical values (eg the pointer operand is "null" and the others
>> numbers like "1") then it will be turned into a number by the optimizers.
>> Ciao, Duncan.
>>> So I tested it with clang web compiler below.
>>> But with LTO nor Standard, neither one optimize getelementptr out.
>>> Does getelementptr get evaluated in compile-time?
>>> Or doesn't it get executed in run-time? (I believed so. Now I am
>>> Thank you in advance.
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
More information about the llvm-dev