R600: Fix unconditional return in loop
authorMatt Arsenault <Matthew.Arsenault@amd.com>
Mon, 20 May 2019 16:22:11 +0000 (16:22 +0000)
committerMatt Arsenault <Matthew.Arsenault@amd.com>
Mon, 20 May 2019 16:22:11 +0000 (16:22 +0000)
llvm-svn: 361167

llvm/lib/Target/AMDGPU/R600OptimizeVectorRegisters.cpp

index ff21176a38fd78951d182c29ff4624054145d4a1..9f1cb6582b5ce75ff18eefab25d62b3ac5afb307 100644 (file)
@@ -56,17 +56,12 @@ using namespace llvm;
 
 #define DEBUG_TYPE "vec-merger"
 
-static bool
-isImplicitlyDef(MachineRegisterInfo &MRI, unsigned Reg) {
-  for (MachineRegisterInfo::def_instr_iterator It = MRI.def_instr_begin(Reg),
-      E = MRI.def_instr_end(); It != E; ++It) {
-    return (*It).isImplicitDef();
-  }
-  if (MRI.isReserved(Reg)) {
+static bool isImplicitlyDef(MachineRegisterInfo &MRI, unsigned Reg) {
+  assert(MRI.isSSA());
+  if (TargetRegisterInfo::isPhysicalRegister(Reg))
     return false;
-  }
-  llvm_unreachable("Reg without a def");
-  return false;
+  const MachineInstr *MI = MRI.getUniqueVRegDef(Reg);
+  return MI && MI->isImplicitDef();
 }
 
 namespace {