Skip to content
  • Chris Lattner's avatar
    This patch fixes the nasty bug that caused 175.vpr to fail for X86 last night. · 21522363
    Chris Lattner authored
    The problem occurred when trying to reload this instruction:
    
    MOV32mr %reg2326, 8, %reg2297, 4, %reg2295
    
    The value of reg2326 was available in EBX, so it was reused from there, instead
    of reloading it into EDX.
    
    The value of reg2297 was available in EDX, so it was reused from there, instead
    of reloading it into EDI.
    
    The value of reg2295 was not available, so we tried reloading it into EBX, its
    assigned register.  However, we checked and saw that we already reloaded
    something into EBX, so we chose what reg2326 was assigned to (EDX) and reloaded
    into that register instead.
    
    Unfortunately EDX had already been used by reg2297, so reloading into EDX
    clobbered the value used by the reg2326 operand, breaking the program.
    
    The fix for this is to check that the newly picked register is ok.  In this
    case we now find that EDX is already used and try using EDI, which succeeds.
    
    llvm-svn: 17006
    21522363
Loading