The following fixes the index guards on the component stripping
loops, I swapped them it seems.
Bootstrapped and tested on x86_64-unknown-linux-gnu, pushed.
PR tree-optimization/121362
* tree-ssa-sccvn.cc (vn_reference_lookup_3): Swap index
guards on component stripping loops.
---
gcc/tree-ssa-sccvn.cc | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/gcc/tree-ssa-sccvn.cc b/gcc/tree-ssa-sccvn.cc
index 5c617e17a15..dd6ed2fa73f 100644
--- a/gcc/tree-ssa-sccvn.cc
+++ b/gcc/tree-ssa-sccvn.cc
@@ -3573,7 +3573,7 @@ vn_reference_lookup_3 (ao_ref *ref, tree vuse, void
*data_,
try finding a match in one of the outer components and continue
stripping there. This happens when addresses of components get
forwarded into dereferences. */
- if (j > 0)
+ if (i > 0)
{
int temi = i - 1;
extra_off = vr->operands[i].off;
@@ -3598,7 +3598,7 @@ vn_reference_lookup_3 (ao_ref *ref, tree vuse, void
*data_,
temi--;
}
}
- if (!found && i > 0)
+ if (!found && j > 0)
{
int temj = j - 1;
extra_off = -lhs_ops[j].off;
--
2.43.0