Don't create unnecessary PHIs
authorJames Molloy <james.molloy@arm.com>
Mon, 14 Dec 2015 10:57:01 +0000 (10:57 +0000)
committerJames Molloy <james.molloy@arm.com>
Mon, 14 Dec 2015 10:57:01 +0000 (10:57 +0000)
commit5d0df37816044245efc21ef226da35bfd04d5bec
tree910885f05757883735f6a2fb3c7ebc619874cd92
parent5e7bb43066143d35d57dee88a113d56bdc9375c8
Don't create unnecessary PHIs

In conditional store merging, we were creating PHIs when we didn't
need to. If the value to be predicated isn't defined in the block
we're predicating, then it doesn't need a PHI at all (because we only
deal with triangles and diamonds, any value not in the predicated BB
must dominate the predicated BB).

This fixes a large code size increase in some benchmarks in a popular embedded benchmark suite.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@255489 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/Utils/SimplifyCFG.cpp
test/Transforms/SimplifyCFG/merge-cond-stores-2.ll [new file with mode: 0644]
test/Transforms/SimplifyCFG/merge-cond-stores.ll