[LLVMbugs] [Bug 2535] New: Off-by-one bug with codegen of induction variable

bugzilla-daemon at cs.uiuc.edu bugzilla-daemon at cs.uiuc.edu
Tue Jul 8 22:31:27 PDT 2008


           Summary: Off-by-one bug with codegen of induction variable
           Product: new-bugs
           Version: unspecified
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: new bugs
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: sharparrow1 at yahoo.com
                CC: llvmbugs at cs.uiuc.edu


; ModuleID = '<stdin>'
target datalayout =
target triple = "i686-pc-linux-gnu"

@.str = internal constant [4 x i8] c"%d\0A\00"

declare i32 @printf(i8* noalias , ...) nounwind

define i32 @main() nounwind {
        br label %forbody

        %i.0 = phi i32 [ 0, %entry ], [ %inc, %forbody ]                ; <i32>
        %sub14 = sub i32 1027, %i.0             ; <i32> [#uses=1]
        %mul15 = mul i32 %sub14, 10             ; <i32> [#uses=1]
        %add166 = or i32 %mul15, 1              ; <i32> [#uses=1] *
        call i32 (i8*, ...)* @printf( i8* noalias  getelementptr ([4 x i8]*
@.str, i32 0, i32 0), i32 %add166 ) nounwind
        %inc = add i32 %i.0, 1          ; <i32> [#uses=3]
        %cmp = icmp ult i32 %inc, 1027          ; <i1> [#uses=1]
        br i1 %cmp, label %forbody, label %afterfor

afterfor:               ; preds = %forcond
        ret i32 0

This should produce 1027 lines of output, and does using the C backend. 
However, using the X86 backend (i.e. just plain "llc"), the produced output is
1028 lines.

This was a serious pain to reduce, so whoever fixes this should get it right!

Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.

More information about the llvm-bugs mailing list