[LLVMdev] Order of operations

Chris Lattner sabre at nondot.org
Tue Mar 25 21:05:11 PDT 2008


On Mar 25, 2008, at 8:57 PM, Jonathan S. Shapiro wrote:

> On Tue, 2008-03-25 at 20:42 -0700, Chris Lattner wrote:
>
>> LLVM IR is three address code, not a tree form.  This requires the
>> front-end to pick an ordering that works for it explicitly as it
>> lowers to LLVM IR.
>
> I got that much. But I assume that optimization passes, if used, are
> entitled to rewrite the IR. For example: ANSI C requires that certain
> types of parenthesization be honored rigorously,

You're thinking about FORTRAN, not C.

> while other operations
> can legally be combined or reordered. How does the front end specify  
> in
> it's IR emission which kinds are which, so that the optimizer knows
> which parts it is not permitted to re-arrange?

The compiler currently doesn't change code if it changes its  
semantics.  This means it doesn't reassociate FP operations etc.  In  
the future, we may extend the IR to capture information to tell the  
optimizer when it is safe to do this, until then it is completely  
conservative.

-Chris



More information about the llvm-dev mailing list