[LLVMdev] instruction selector failure
Chris Lattner
sabre at nondot.org
Wed May 16 12:10:48 PDT 2007
On Wed, 16 May 2007, Florian Brandner wrote:
> i found a problem in LLVM regarding the matching of 'Constant' nodes in
> the instruction selector. the testcase is for x86, but similar testcases
> for the other architectures (e.g. ppc) should be easy to create.
>
> i'm using the llvm-gcc 2.0 prerelease binary package.
>
> here is the testcase:
> int foo(int bar) {
> asm("movl %1, %0" : "=r"(bar) : "i"(5));
> return 11;
> }
>
> the problem here is, that the constant node '11' is shared by a
> CopyToReg node (for the return) and the INLINEASM node. the INLINEASM
> node uses the constant as a flag indicating that an immediate operand (5
> in this case) follows.
Yes. this is fixed in mainline, with this series of patches:
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20070514/049609.html
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20070514/049608.html
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20070514/049606.html
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20070514/049603.html
Given the invasiveness of these patches, and the lack of significant
testing since the have gone into mainline, I'd recommend against merging
them into 2.0.
If this blocks a significant piece of software from building with LLVM 2.0
though, we may reconsider. What does it break?
-Chris
--
http://nondot.org/sabre/
http://llvm.org/
More information about the llvm-dev
mailing list