Compare type IDs and DFS numbering for basic block instead of addresses
to fix non-determinism.
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
llvm/test/Transforms/SLPVectorizer/X86/remark_unsupported.ll | ||
---|---|---|
5 | Previously root PHI nodes with x86_fp80 type were rejected during graph building, here we started to reject them earlier to avoid some extra work. This leads to the fact that the expected message won't be emitted for this test anymore, so have to rework the test to emit the message again, because we still may see it during graph building, if some instructions return x86_fp80 type |
llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp | ||
---|---|---|
8371–8379 | 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. |
llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp | ||
---|---|---|
8371–8379 | Will fix it ASAP. |
llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp | ||
---|---|---|
8371–8379 | Thanks in advance. |
Avoid auto