[LLVMdev] ConstantExpr Evaluation

Duncan Sands baldrick at free.fr
Thu Oct 27 12:06:12 PDT 2011

Hi Brandon,

> What I'm currently working on is a translation from LLVM IR to a
> register transfer list format used in VPO.
> If my understanding of ConstantExpr is correct, that they can be
> evaluated at compile-time,

that's not so, because they may (for example) involve the address of a global
variable or other label, which is not known at compile time.

  how can I simply have them be evaluated but
> have the code still remain in IR format?
> For example, in:
> store i32 1, i32* getelementptr [6 x i32]* @arr, i32 0, i32 0
> the getelementptr ConstantExpr can be evaluated at compile-time, so is
> there a way to run a pass and end up with something like:
> store i32 1, i32* ???
> where ??? is not another ConstantExpr, but rather a ConstantInt or similar.

It can't be, since the address @arr is not known at compile time.

Ciao, Duncan.

More information about the llvm-dev mailing list