[LLVMbugs] [Bug 2993] New: instcombine causes miscompilation with	rems -1
    bugzilla-daemon at cs.uiuc.edu 
    bugzilla-daemon at cs.uiuc.edu
       
    Fri Oct 31 04:13:34 PDT 2008
    
    
  
http://llvm.org/bugs/show_bug.cgi?id=2993
           Summary: instcombine causes miscompilation with rems -1
           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: richard at xmos.com
                CC: llvmbugs at cs.uiuc.edu
Running "opt -instcombine" on the following testcase:
define i1 @main_bb_bb_2E_ce(i32 %i.0.reg2mem.0) {
newFuncRoot:
        br label %bb.ce
bb2.exitStub:           ; preds = %bb.ce
        ret i1 true
codeRepl1.exitStub:             ; preds = %bb.ce
        ret i1 false
bb.ce:          ; preds = %newFuncRoot
        %0 = srem i32 %i.0.reg2mem.0, -1                ; <i32> [#uses=1]
        %1 = icmp eq i32 %0, 0          ; <i1> [#uses=1]
        br i1 %1, label %bb2.exitStub, label %codeRepl1.exitStub
}
turns it into:
define i1 @main_bb_bb_2E_ce(i32 %i.0.reg2mem.0) {
newFuncRoot:
        br label %bb.ce
bb2.exitStub:           ; preds = %bb.ce
        ret i1 true
codeRepl1.exitStub:             ; preds = %bb.ce
        ret i1 false
bb.ce:          ; preds = %newFuncRoot
        %0 = icmp eq i32 %i.0.reg2mem.0, 0              ; <i1> [#uses=1]
        br i1 %0, label %bb2.exitStub, label %codeRepl1.exitStub
}
This transformation is incorrect. Instruction Combine should not be turning
        %0 = srem i32 %i.0.reg2mem.0, -1                ; <i32> [#uses=1]
        %1 = icmp eq i32 %0, 0          ; <i1> [#uses=1]
into 
        %0 = icmp eq i32 %i.0.reg2mem.0, 0              ; <i1> [#uses=1]
-- 
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