http://llvm.org/bugs/show_bug.cgi?id=18370

            Bug ID: 18370
           Summary: [thumbv8] insts that sets CPSR are bundled into IT
                    block mistakenly
           Product: new-bugs
           Version: trunk
          Hardware: PC
                OS: Windows NT
            Status: NEW
          Severity: normal
          Priority: P
         Component: new bugs
          Assignee: [email protected]
          Reporter: [email protected]
                CC: [email protected]
    Classification: Unclassified

Created attachment 11812
  --> http://llvm.org/bugs/attachment.cgi?id=11812&action=edit
test case

llc < test.ll 
emits:
foo:
@ BB#0:                                 @ %entry
    mov    r1, r0
    movs    r0, #11
    cmp    r1, #0
    it    ne
    mulsne    r0, r1, r0  ===> incorrrect: it can't set CPSR inside IT
    bx    lr


Reason:
    Thumbv8 requires running Thumb2SizeReduction pass before IfConv to
    convert wide 32-bit Thumb2 insts to 16-bit narrow insts becuase wide
    insts are not eligible for IT blocks. However, Thumb2SizeReduction may
    also set CPSR for converted instrs (e.g. mul -> muls). However, such
    insts should not be bundled.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
LLVMbugs mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs

Reply via email to