Restore can_be_invalidated_p semantics to before refactoring
Commit Message
This restores the semantics of can_be_invalidated_p to the original
semantics of the function this was split out from tree-ssa-uninit.c.
The current semantics only ever look at the first predicate which
cannot be correct.
Bootstrapped and tested on x86_64-unknown-linux-gnu, OK?
Thanks,
Richard.
2021-11-26 Richard Biener <rguenther@suse.de>
* gimple-predicate-analysis.cc (can_be_invalidated_p):
Restore semantics to the one before the split from
tree-ssa-uninit.c.
---
gcc/gimple-predicate-analysis.cc | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
Comments
On 11/26/2021 12:53 AM, Richard Biener via Gcc-patches wrote:
> This restores the semantics of can_be_invalidated_p to the original
> semantics of the function this was split out from tree-ssa-uninit.c.
> The current semantics only ever look at the first predicate which
> cannot be correct.
>
> Bootstrapped and tested on x86_64-unknown-linux-gnu, OK?
>
> Thanks,
> Richard.
>
> 2021-11-26 Richard Biener <rguenther@suse.de>
>
> * gimple-predicate-analysis.cc (can_be_invalidated_p):
> Restore semantics to the one before the split from
> tree-ssa-uninit.c.
OK. Sorry this got missed in the review of splitting out those bits.
jeff
@@ -1199,14 +1199,16 @@ can_be_invalidated_p (const pred_chain_union &preds, const pred_chain &guard)
for (unsigned i = 0; i < preds.length (); ++i)
{
const pred_chain &chain = preds[i];
- for (unsigned j = 0; j < chain.length (); ++j)
+ unsigned j;
+ for (j = 0; j < chain.length (); ++j)
if (can_be_invalidated_p (chain[j], guard))
- return true;
+ break;
/* If we were unable to invalidate any predicate in C, then there
is a viable path from entry to the PHI where the PHI takes
an interesting value and continues to a use of the PHI. */
- return false;
+ if (j == chain.length ())
+ return false;
}
return true;
}