llvm-project/llvm/test/Transforms/SROA
Bjorn Pettersson 81a76a388a [SROA] Handle PHI with multiple duplicate predecessors
Summary:
The verifier accepts PHI nodes with multiple entries for the
same basic block, as long as the value is the same.

As seen in PR37203, SROA did not handle such PHI nodes properly
when speculating loads over the PHI, since it inserted multiple
loads in the predecessor block and changed the PHI into having
multiple entries for the same basic block, but with different
values.

This patch teaches SROA to reuse the same speculated load for
each PHI duplicate entry in such situations.

Resolves: https://bugs.llvm.org/show_bug.cgi?id=37203

Reviewers: uabelho, chandlerc, hfinkel, bkramer, efriedma

Reviewed By: efriedma

Subscribers: dberlin, efriedma, llvm-commits

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

llvm-svn: 332577
2018-05-17 07:21:41 +00:00
..
address-spaces.ll Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
alignment.ll Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
alloca-address-space.ll Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
basictest.ll [SROA] Take advantage of separate alignments for memcpy source and destination 2018-03-13 14:25:33 +00:00
big-endian.ll Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
dbg-addr-diamond.ll [DebugInfo] Add DILabel metadata and intrinsic llvm.dbg.label. 2018-05-09 02:40:45 +00:00
dbg-single-piece.ll Parse and print DIExpressions inline to ease IR and MIR testing 2017-08-23 20:31:27 +00:00
dead-inst.ll [SROA] Correctly invalidate analyses when dead instructions deleted 2017-11-20 18:33:38 +00:00
fca.ll
mem-par-metadata-sroa.ll Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
non-integral-pointers.ll [SROA] Add support for non-integral pointers 2017-06-17 20:28:13 +00:00
phi-and-select.ll
phi-with-duplicate-pred.ll [SROA] Handle PHI with multiple duplicate predecessors 2018-05-17 07:21:41 +00:00
ppcf128-no-fold.ll
pr26972.ll
pr37267.ll [SROA] pr37267: fix assertion failure in integer widening 2018-05-17 06:32:17 +00:00
preserve-nonnull.ll Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
slice-order-independence.ll Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
slice-width.ll Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
vector-conversion.ll
vector-lifetime-intrinsic.ll
vector-promotion.ll Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
vectors-of-pointers.ll