From: Mikael Holmen Date: Wed, 4 Oct 2017 06:39:22 +0000 (+0000) Subject: Revert r314879 "[UnreachableBlockElim] Use COPY if PHI input is undef" X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=66848ca5f7c1082cf2ae7f8e3f6ee55323d27714;p=llvm Revert r314879 "[UnreachableBlockElim] Use COPY if PHI input is undef" Build-bots broke on the new testcase. I'll investigate and fix. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@314880 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/UnreachableBlockElim.cpp b/lib/CodeGen/UnreachableBlockElim.cpp index bdd25f29aea..407fd9b162e 100644 --- a/lib/CodeGen/UnreachableBlockElim.cpp +++ b/lib/CodeGen/UnreachableBlockElim.cpp @@ -207,12 +207,11 @@ bool UnreachableMachineBlockElim::runOnMachineFunction(MachineFunction &F) { MachineRegisterInfo &MRI = F.getRegInfo(); unsigned InputSub = Input.getSubReg(); if (InputSub == 0 && - MRI.constrainRegClass(InputReg, MRI.getRegClass(OutputReg)) && - !Input.isUndef()) { + MRI.constrainRegClass(InputReg, MRI.getRegClass(OutputReg))) { MRI.replaceRegWith(OutputReg, InputReg); } else { // The input register to the PHI has a subregister or it can't be - // constrained to the proper register class or it is undef: + // constrained to the proper register class: // insert a COPY instead of simply replacing the output // with the input. const TargetInstrInfo *TII = F.getSubtarget().getInstrInfo(); diff --git a/test/CodeGen/MIR/X86/unreachable-mbb-undef-phi.mir b/test/CodeGen/MIR/X86/unreachable-mbb-undef-phi.mir deleted file mode 100644 index 1abfb19d638..00000000000 --- a/test/CodeGen/MIR/X86/unreachable-mbb-undef-phi.mir +++ /dev/null @@ -1,38 +0,0 @@ -# RUN: llc %s -o - -run-pass=processimpdefs -run-pass=unreachable-mbb-elimination | FileCheck %s ---- -name: f -tracksRegLiveness: true -registers: - - { id: 0, class: gr32, preferred-register: '' } - - { id: 1, class: gr32, preferred-register: '' } - - { id: 2, class: gr32, preferred-register: '' } -body: | - bb.0: - %0 = IMPLICIT_DEF - JMP_1 %bb.1 - - bb.1: - %1 = PHI %0, %bb.0, %2, %bb.2 - %2 = ADD32ri8 killed %1, 1, implicit-def %eflags - JMP_1 %bb.3 - - bb.2: - JMP_1 %bb.1 - - bb.3: -... - -# bb2 above is dead and should be removed and the PHI should be replaced with a -# COPY from an undef value since the bb0 value in the PHI is undef. - -# CHECK: bb.0: -# CHECK: successors: %bb.1 -# CHECK: JMP_1 %bb.1 - -# CHECK: bb.1: -# CHECK: successors: %bb.2 -# CHECK: [[TMP1:%[0-9]+]] = COPY undef %{{[0-9]+}} -# CHECK: %{{[0-9]+}} = ADD32ri8 killed [[TMP1]], 1 -# CHECK: JMP_1 %bb.2 - -# CHECK: bb.2: