R600/SI: Remove incorrect assertion
authorMatt Arsenault <Matthew.Arsenault@amd.com>
Wed, 3 Dec 2014 05:22:38 +0000 (05:22 +0000)
committerMatt Arsenault <Matthew.Arsenault@amd.com>
Wed, 3 Dec 2014 05:22:38 +0000 (05:22 +0000)
This can be a COPY to a physical register, such as VCC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@223207 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/R600/SIFixSGPRCopies.cpp

index d90f09d3cd696f463b0fe3082f6f8334fdb8f7cb..82969f682b5f710ccc0c069aa08ee46fe1d25312 100644 (file)
@@ -136,12 +136,12 @@ const TargetRegisterClass *SIFixSGPRCopies::inferRegClassFromUses(
                                                  const MachineRegisterInfo &MRI,
                                                  unsigned Reg,
                                                  unsigned SubReg) const {
-  // The Reg parameter to the function must always be defined by either a PHI
-  // or a COPY, therefore it cannot be a physical register.
-  assert(TargetRegisterInfo::isVirtualRegister(Reg) &&
-         "Reg cannot be a physical register");
 
-  const TargetRegisterClass *RC = MRI.getRegClass(Reg);
+  const TargetRegisterClass *RC
+    = TargetRegisterInfo::isVirtualRegister(Reg) ?
+    MRI.getRegClass(Reg) :
+    TRI->getRegClass(Reg);
+
   RC = TRI->getSubRegClass(RC, SubReg);
   for (MachineRegisterInfo::use_instr_iterator
        I = MRI.use_instr_begin(Reg), E = MRI.use_instr_end(); I != E; ++I) {