[AMDGPU] Fix GCN regpressure trackers for INLINEASM instructions.
authorvpykhtin <valery.pykhtin@gmail.com>
Mon, 27 Jan 2020 14:25:25 +0000 (17:25 +0300)
committervpykhtin <valery.pykhtin@gmail.com>
Mon, 27 Jan 2020 14:25:25 +0000 (17:25 +0300)
Differential revision: https://reviews.llvm.org/D73338

llvm/lib/Target/AMDGPU/GCNRegPressure.cpp

index d593204..c7d4e9f 100644 (file)
@@ -327,8 +327,9 @@ void GCNUpwardRPTracker::recede(const MachineInstr &MI) {
   // update max pressure
   MaxPressure = max(AtMIPressure, MaxPressure);
 
-  for (const auto &MO : MI.defs()) {
-    if (!MO.isReg() || !Register::isVirtualRegister(MO.getReg()) || MO.isDead())
+  for (const auto &MO : MI.operands()) {
+    if (!MO.isReg() || !MO.isDef() ||
+        !Register::isVirtualRegister(MO.getReg()) || MO.isDead())
       continue;
 
     auto Reg = MO.getReg();
@@ -403,8 +404,8 @@ void GCNDownwardRPTracker::advanceToNext() {
   LastTrackedMI = &*NextMI++;
 
   // Add new registers or mask bits.
-  for (const auto &MO : LastTrackedMI->defs()) {
-    if (!MO.isReg())
+  for (const auto &MO : LastTrackedMI->operands()) {
+    if (!MO.isReg() || !MO.isDef())
       continue;
     Register Reg = MO.getReg();
     if (!Register::isVirtualRegister(Reg))