]> granicus.if.org Git - llvm/commit
Recommit [UnreachableBlockElim] Use COPY if PHI input is undef
authorMikael Holmen <mikael.holmen@ericsson.com>
Wed, 4 Oct 2017 07:42:45 +0000 (07:42 +0000)
committerMikael Holmen <mikael.holmen@ericsson.com>
Wed, 4 Oct 2017 07:42:45 +0000 (07:42 +0000)
commit2a53f0ee9e30765c457621c3578e12424aa84d0a
tree8dc910cf6e14f709c630d6369a6b513228ca433b
parentc68f96368b84e9a911784ff449fc8238808b07c4
Recommit [UnreachableBlockElim] Use COPY if PHI input is undef

This time invoking llc with "-march=x86-64" in the testcase, so we don't assume
the default target is x86.

Summary:
If we have

    %vreg0<def> = PHI %vreg2<undef>, <BB#0>, %vreg3, <BB#2>; GR32:%vreg0,%vreg2,%vreg3
    %vreg3<def,tied1> = ADD32ri8 %vreg0<kill,tied0>, 1, %EFLAGS<imp-def>; GR32:%vreg3,%vreg0

then we can't just change %vreg0 into %vreg3, since %vreg2 is actually
undef. We would have to also copy the undef flag to be able to change the
register.

Instead we deal with this case like other cases where we can't just
replace the register: we insert a COPY. The code creating the COPY already
copied all flags from the PHI input, so the undef flag will be transferred
as it should.

Reviewers: kparzysz

Reviewed By: kparzysz

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D38235

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@314882 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/UnreachableBlockElim.cpp
test/CodeGen/MIR/X86/unreachable-mbb-undef-phi.mir [new file with mode: 0644]