[PATCH] D19246: Do not rename a tied operand in AggressiveAntiDepBreaker

Brendon Cahoon via llvm-commits llvm-commits at lists.llvm.org
Mon May 2 07:23:06 PDT 2016


bcahoon abandoned this revision.
bcahoon added a comment.

Hi Hal - thanks for the review and your comments.  I've looked into this issue some more, and I think that the problem (or part of the problem) is that Hexagon code adds a kill flag to the register use of the tied operand. For example,

%R21<def,tied1> = M2_acci %R21<kill,tied0>, %R2<kill>, %R20<kill>, %http://reviews.llvm.org/D10<imp-def>

I see in the target independent code, addRegisterKilled in MachineInstr.cpp, that there is code that explicitly checks for this case and will not add a kill flag to a tied operand that is a physical register. That code is,

  if (isPhysReg && isRegTiedToDefOperand(i))
    // Two-address uses of physregs must not be marked kill.                                                        
    return true;
  MO.setIsKill();

Once I fixed the Hexagon code so that we do not set the kill flag in this case, the bug in my test case no longer occurs.

I'm going to abandon this patch and fix the code that sets the kill flag in the Hexagon specific code.


http://reviews.llvm.org/D19246





More information about the llvm-commits mailing list