https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112266
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |ASSIGNED Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot gnu.org Ever confirmed|0 |1 Last reconfirmed| |2023-10-30 --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- __BB(2): c_2 = &b_1(D)->b; t_4 = constcall (c_2); t1_5 = constcall (b_1(D)); _6 = t_4 + t1_5; return _6; diff --git a/gcc/tree-ssa-sccvn.cc b/gcc/tree-ssa-sccvn.cc index 0b2c10dcc1a..c52a846abed 100644 --- a/gcc/tree-ssa-sccvn.cc +++ b/gcc/tree-ssa-sccvn.cc @@ -3975,6 +3975,8 @@ vn_reference_lookup (tree op, tree vuse, vn_lookup_kind kind, == sext_hwi (off.coeffs[0], TYPE_PRECISION (sizetype)))) { gcc_assert (operands[i-1].opcode == MEM_REF); + if (known_eq (off, 0)) + return operands[i].op0; tree ops[2]; ops[0] = operands[i].op0; ops[1] = wide_int_to_tree (sizetype, off); Mine.