diff options
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Target/AArch64/AArch64InstructionSelector.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64InstructionSelector.cpp b/llvm/lib/Target/AArch64/AArch64InstructionSelector.cpp index c9af8fa1d65..288ef2abed2 100644 --- a/llvm/lib/Target/AArch64/AArch64InstructionSelector.cpp +++ b/llvm/lib/Target/AArch64/AArch64InstructionSelector.cpp @@ -2854,6 +2854,11 @@ bool AArch64InstructionSelector::tryOptSelect(MachineInstr &I) const { if (Opc != TargetOpcode::COPY && Opc != TargetOpcode::G_TRUNC) break; + // Can't see past copies from physregs. + if (Opc == TargetOpcode::COPY && + TargetRegisterInfo::isPhysicalRegister(CondDef->getOperand(1).getReg())) + return false; + CondDef = MRI.getVRegDef(CondDef->getOperand(1).getReg()); } |