[LLVMdev] RFC: Constant Hoisting

Chris Sears chris.sears at gmail.com
Tue Feb 3 10:20:32 PST 2015


I was using this GCC compiler comparison site. It's well done but
unfortunately it's not up to date. The author Matt Godbolt said he was
updating it:

http://gcc.godbolt.org/#


No, I do not have 3.4.1 but 3.5 is the current XCode release. It's pretty
much already narrowed.

3.4.1 generates correct assembly (except bug #2 is here as well, see below)

3.5 (XCode) generates correct IR and bad assembly


So the problem seems to show up with 3.5. The attached IR is from 3.5 XCode
clang -S -O3 -emit-llvm newtst.c.

There are TWO bugs here. There's the Constant Hoisting bug (#1) and the
failure to match a AND/CMP (#2). My current theory for #1 is
that Constant Hoisting for the X86 is relatively recent or that Costing
changed and that what we're seeing is that it worked correctly before. I
think my proposed patch is correct and I'd recommend the ARM folks look at
it.

I have no theory for bug #2 and I've already spent a day on it.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150203/93f91cac/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: newtst.ll
Type: application/octet-stream
Size: 2674 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150203/93f91cac/attachment.obj>


More information about the llvm-dev mailing list