https://llvm.org/bugs/show_bug.cgi?id=23119

            Bug ID: 23119
           Summary: RegisterScavenger ignores kill flags on predicated
                    instructions
           Product: libraries
           Version: trunk
          Hardware: PC
                OS: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: Common Code Generator Code
          Assignee: [email protected]
          Reporter: [email protected]
                CC: [email protected]
    Classification: Unclassified

The RegisterScavenger explicitly ignores <kill> flags on operands of predicated
instructions and therefore assumes that such registers remain live. When it
then scavenges such a register, it inserts a spill of this (killed) register.
This is invalid code and gets flagged up by the verifier.

RegisterScavenging.cpp includes a comment that explains why it ignores flags on
predicated instructions:

// FIXME: The scavenger is not predication aware. If the instruction is
// predicated, conservatively assume "kill" markers do not actually kill the
// register. Similarly ignores "dead" markers.

Is this still needed for any target? 

Just removing the special handling of predicated instructions would seem an
easy way to fix this.

-- 
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