]> granicus.if.org Git - llvm/commit
[LoadCombine] Avoid analysing dead basic blocks
authorBjorn Pettersson <bjorn.a.pettersson@ericsson.com>
Wed, 12 Apr 2017 08:07:55 +0000 (08:07 +0000)
committerBjorn Pettersson <bjorn.a.pettersson@ericsson.com>
Wed, 12 Apr 2017 08:07:55 +0000 (08:07 +0000)
commita22205806d257629697325c69d8a166539ddc5e3
tree86b32fb2c5e187f692945c5474b0c04fa96792f4
parent3512d22fea43d45b3851c7aad057a2853947345e
[LoadCombine] Avoid analysing dead basic blocks

Summary:
Dead basic blocks may be forming a loop, for which SSA form is
fulfilled, but with a circular def-use chain. LoadCombine could
enter an infinite loop when analysing such dead code. This patch
solves the problem by simply avoiding to analyse all basic blocks
that aren't forward reachable, from function entry, in LoadCombine.

Fixes https://bugs.llvm.org/show_bug.cgi?id=27065

Reviewers: mehdi_amini, chandlerc, grosser, Bigcheese, davide

Reviewed By: davide

Subscribers: dberlin, zzheng, bjope, grandinj, Ka-Ka, materi, jholewinski, llvm-commits, mzolotukhin

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@300034 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/Scalar/LoadCombine.cpp
test/Transforms/LoadCombine/deadcode.ll [new file with mode: 0644]