[llvm-dev] beneficial optimization of undef examples needed

Peter Lawrence via llvm-dev llvm-dev at lists.llvm.org
Fri Jun 16 15:03:32 PDT 2017


All,
     These discussions seem to be based on the premise that there is a 
need for the compiler to exploit undefined behavior for performance 
optimization reasons.

So far the only beneficial optimization I am aware of that relies on some
form of “undefined” is Dan Gohman’s original project for LP64 targets of
promoting i32 induction variables to i64 and hoisting sign-extension out
of the loop.

But “undef” / “poison” never appears in either the original or the transformed
IR for these types of loops, instead properties of “+nsw” are used to
justify the transformation.  The transformation does not just fall out because
we’ve done a good job at defining “undef” / “poison” IR nodes.

So I’d like to see some concrete examples of where the compiler can
do useful optimization based on “undef” / “poison” appearing explicitly
In the IR,  finding some would surely advance this discussion.



Peter Lawrence.




More information about the llvm-dev mailing list