From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 46BAA3858D33; Thu, 4 May 2023 07:39:31 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 46BAA3858D33 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1683185971; bh=oQo5S36QMhkjC9JGKgiVz6TmjSnPa3fGHoUOaaION9w=; h=From:To:Subject:Date:In-Reply-To:References:From; b=loGQzUDDGuALeATIkhkwTO/PeOZUgLXzrcP7+UAZvuXw3oGy9zAZEgyQw6neFAeva 6XphE0gb5ilf2ke5zLq83c6hoN4+xsRliYso/RI/48IvKMutdSXpwV9Voaoh1P9KaQ 5qGRyU1e1N5eOdpjFzqDn1i7g0/h4RkAZjbAEZpE= From: "rguenth at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug c++/109724] [10 regression] Huge memory usage when building qtwebengine's SkOpAngle.cpp since r10-11201-g051f78a5c1d699 Date: Thu, 04 May 2023 07:39:31 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: c++ X-Bugzilla-Version: 10.4.1 X-Bugzilla-Keywords: compile-time-hog, memory-hog X-Bugzilla-Severity: normal X-Bugzilla-Who: rguenth at gcc dot gnu.org X-Bugzilla-Status: ASSIGNED X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: rguenth at gcc dot gnu.org X-Bugzilla-Target-Milestone: 10.5 X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 List-Id: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D109724 --- Comment #9 from Richard Biener --- Reduced testcase. I've reduced with diff --git a/gcc/tree-ssa-sccvn.c b/gcc/tree-ssa-sccvn.c index 666d7061aa8..31879fb761b 100644 --- a/gcc/tree-ssa-sccvn.c +++ b/gcc/tree-ssa-sccvn.c @@ -1558,6 +1558,7 @@ valueize_refs_1 (vec *orig, bool *value ized_anything, { vn_reference_op_t vro; unsigned int i; + auto_bitmap visited; *valueized_anything =3D false; @@ -1609,8 +1610,12 @@ valueize_refs_1 (vec *orig, bool *valueized_anything, && vro->opcode =3D=3D SSA_NAME && (*orig)[i - 1].opcode =3D=3D MEM_REF) { + tree name =3D vro->op0; if (vn_reference_maybe_forwprop_address (orig, &i)) - *valueized_anything =3D true; + { + *valueized_anything =3D true; + gcc_assert (bitmap_set_bit (visited, SSA_NAME_VERSION (name))= ); + } } /* If it transforms a non-constant ARRAY_REF into a constant one, adjust the constant offset. */ -- double &SkTMax(double &a, double &b) { return a ?: b; } struct SkDPoint { double fX; }; struct SkDCubic { SkDPoint &operator[](int n) { return fPts[n]; } SkDPoint fPts[4]; }; struct SkDCurve { SkDCubic fCubic; SkDPoint &operator[](int n) { return fCubic[n]; } }; struct SkDCurveSweep { SkDCurve fCurve; }; int endsIntersect_rPts; double endsIntersect_maxX; struct SkOpAngle { void endsIntersect(); SkDCurveSweep fPart; } endsIntersect_rh; void SkOpAngle::endsIntersect() { for (int index =3D 0;; ++index) { SkDCurve &curve =3D index ? endsIntersect_rh.fPart.fCurve : fPart.fCurv= e; for (int idx2 =3D 0; endsIntersect_rPts; ++idx2) { SkDPoint &__trans_tmp_1 =3D curve[idx2]; endsIntersect_maxX =3D SkTMax(endsIntersect_maxX, __trans_tmp_1.fX); } } }=