HomePhabricator

[MergedLoadStoreMotion] Sink stores to BB with more than 2 predecessors

Description

[MergedLoadStoreMotion] Sink stores to BB with more than 2 predecessors

If we have:

bb5:

br i1 %arg3, label %bb6, label %bb7

bb6:

%tmp = getelementptr inbounds i32, i32* %arg1, i64 2
store i32 3, i32* %tmp, align 4
br label %bb9

bb7:

%tmp8 = getelementptr inbounds i32, i32* %arg1, i64 2
store i32 3, i32* %tmp8, align 4
br label %bb9

bb9: ; preds = %bb4, %bb6, %bb7

...

We can't sink stores directly into bb9.
This patch creates new BB that is successor of %bb6 and %bb7
and sinks stores into that block.

SplitFooterBB is the parameter to the pass that controls
that behavior.

Change-Id: I7fdf50a772b84633e4b1b860e905bf7e3e29940f
Differential: https://reviews.llvm.org/D66234

Details

Committed
dendibakhSep 5 2019, 10:00 AM
Parents
rL371088: [x86] add test for horizontal math bug (PR43225); NFC
Branches
Unknown
Tags
Unknown