[LLVMdev] RFC: Constant Hoisting (original) (raw)

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