[PATCH] D77560: [SCEV] don't try to query getSCEV() for incomplete PHIs
ChenZheng via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Jul 29 05:44:41 PDT 2020
shchenz added inline comments.
================
Comment at: llvm/lib/Transforms/Utils/ScalarEvolutionExpander.cpp:1190
+ // PHI has no meaning at all.
+ if (!PN.getParent()->hasNPredecessors(PN.getNumIncomingValues()))
+ continue;
----------------
lebedev.ri wrote:
> I don't think this is correct fix. It is perfectly legal to have e.g. the following:
> ```
> pred:
> <...>
> br label %succ
> succ:
> %10 = phi i32 [ 0, %pred ], [ 0, %pred ]
> ```
Here we want to identify an incomplete PHI.
The incomplete PHI is like `%10 = phi i32`, `hasNPredecessors` should be set when the PHI node is created, so it is 2.
```
PHINode *PN = Builder.CreatePHI(ExpandTy, std::distance(HPB, HPE),
Twine(IVName) + ".iv");
```
But its `getNumIncomingValues()` is 0 because it is not populated yet.
Do you have any other ways to identify an incomplete PHI? @lebedev.ri
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D77560/new/
https://reviews.llvm.org/D77560
More information about the llvm-commits
mailing list