[LLVMdev] Order of operations

Jonathan S. Shapiro
Wed, 26 Mar 2008 03:57:38 -0000

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, 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?