GlobalISel: Make it clearer that regbank/class are mutually exclusive
authorMatt Arsenault <Matthew.Arsenault@amd.com>
Mon, 8 Jun 2020 13:49:34 +0000 (09:49 -0400)
committerMatt Arsenault <Matthew.Arsenault@amd.com>
Mon, 8 Jun 2020 14:15:53 +0000 (10:15 -0400)
llvm/lib/CodeGen/GlobalISel/CSEInfo.cpp

index e258ffb..cd99bee 100644 (file)
@@ -375,12 +375,14 @@ const GISelInstProfileBuilder &GISelInstProfileBuilder::addNodeIDMachineOperand(
     LLT Ty = MRI.getType(Reg);
     if (Ty.isValid())
       addNodeIDRegType(Ty);
-    auto *RB = MRI.getRegBankOrNull(Reg);
-    if (RB)
-      addNodeIDRegType(RB);
-    auto *RC = MRI.getRegClassOrNull(Reg);
-    if (RC)
-      addNodeIDRegType(RC);
+
+    if (const RegClassOrRegBank &RCOrRB = MRI.getRegClassOrRegBank(Reg)) {
+      if (const auto *RB = RCOrRB.dyn_cast<const RegisterBank *>())
+        addNodeIDRegType(RB);
+      else if (const auto *RC = RCOrRB.dyn_cast<const TargetRegisterClass *>())
+        addNodeIDRegType(RC);
+    }
+
     assert(!MO.isImplicit() && "Unhandled case");
   } else if (MO.isImm())
     ID.AddInteger(MO.getImm());