[PATCH] D46426: [SROA] Handle PHI with multiple duplicate predecessors
Eli Friedman via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed May 16 12:10:50 PDT 2018
efriedma added a comment.
> But still no ready-to-land. Well I think that I'll land this anyway tomorrow, to get rid of the bug.
This is not how the review process works; we expect pre-commit review for non-trivial patches.
================
Comment at: lib/Transforms/Scalar/SROA.cpp:1263
// Inject loads into all of the pred blocks.
+ std::unordered_map<BasicBlock*, std::pair<Value*, Value*>> Handled;
for (unsigned Idx = 0, Num = PN.getNumIncomingValues(); Idx != Num; ++Idx) {
----------------
We generally use DenseMap in LLVM code, not unordered_map (see http://llvm.org/docs/ProgrammersManual.html#map-like-containers-std-map-densemap-etc ).
I don't think it's a good idea to make the rest of the code more complicated for the sake of the "PHI node has multiple entries" assertion.
================
Comment at: lib/Transforms/Scalar/SROA.cpp:1273
+ HI = Handled.find(Pred);
+ if (HI != Handled.end()) {
+ assert(HI->second.first == InVal &&
----------------
DenseMap has a method "lookup" you can use to avoid the iterator.
Repository:
rL LLVM
https://reviews.llvm.org/D46426
More information about the llvm-commits
mailing list