[PATCH] D105031: [SLP]Fix non-determinism in PHI sorting.
Serguei Katkov via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Jul 19 03:09:58 PDT 2021
skatkov added inline comments.
================
Comment at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:8371
if (auto *I2 = dyn_cast<Instruction>(Opcodes2[I])) {
- if (I1->getParent() < I2->getParent())
- return true;
- if (I1->getParent() > I2->getParent())
- return false;
+ DomTreeNodeBase<BasicBlock> *NodeI1 = DT->getNode(I1->getParent());
+ DomTreeNodeBase<BasicBlock> *NodeI2 = DT->getNode(I2->getParent());
----------------
ABataev wrote:
> skatkov wrote:
> > Please note that we met triggering this assert. The reduced by bugpoint reproducer looks as follows:
> >
> > ```
> > define void @bar() {
> > bb:
> > %tmp = load atomic i8*, i8** undef unordered, align 8
> > br label %bb6
> >
> > bb5: ; No predecessors!
> > %tmp4 = load atomic i8*, i8** undef unordered, align 8
> > br label %bb6
> >
> > bb6: ; preds = %bb5, %bb
> > %tmp7 = phi i8* [ %tmp, %bb5 ], [ undef, %bb ]
> > %tmp8 = phi i8* [ %tmp4, %bb5 ], [ undef, %bb ]
> > ret void
> > }
> > ```
> > It looks like we can reach this code with unreachable instruction and it is not guarded in optimization.
> >
> > Could you please fix it or revert the patch.
> Will fix it ASAP.
Thanks in advance.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D105031/new/
https://reviews.llvm.org/D105031
More information about the llvm-commits
mailing list