[LLVMdev] LLVM ERROR: Cannot select error in simple i128 math?

Eli Friedman eli.friedman at gmail.com
Fri Aug 19 15:06:32 PDT 2011


On Fri, Aug 19, 2011 at 1:59 PM, Craig Smith <craig at ni.com> wrote:
> In both LLVM 2.9 and the current svn head, I get the following error when running llc
>
> % llc < fxp2.ll
> LLVM ERROR: Cannot select: 0xa5302b0: glue = carry_false [ID=7]
>
> on this code:
>
> target triple = "i386-pc-linux-gnu"
>
> define i32 @fxpadd(i32 %cl) {
> entry:
>  %0 = zext i32 %cl to i128
>  %1 = zext i32 %cl to i128
>  %2 = add i128 %1, %0
>  br label %L1001510
>
> L1001510:                                         ; preds = %L13400
>  %vr1484.5 = trunc i128 %2 to i32
>  ret i32 %vr1484.5
>
> }
>
> This code was whittled down from a fixed point math test by bugpoint, and further simplified by hand.    The problem did not occur in 2.8.
> (Removing the trivial branch makes the problem go away.)
>
> I'm not sure where to begin debugging it, so any pointers would be appreciated.

DAGCombiner::visitADDE looks suspicious to me... specifically, the way
ReplaceAllUsesOfValueWith is used.

-Eli




More information about the llvm-dev mailing list