From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id B9B41385840D; Tue, 14 Nov 2023 06:48:19 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org B9B41385840D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1699944499; bh=lu4P9mGFeeOU6ZhfCiUxUx4qu44Zo7HOTrBZAkD30SI=; h=From:To:Subject:Date:In-Reply-To:References:From; b=fxGyZ2FFYv/FNb+kb70Uo8kn/MUHQ2To2+chbcCCG1t4Juburjwh2tY/sV5cmk/JQ /V/VbL/17e93NEHXB5rI2J4+tWu4Dltg32Xq725egT18Cky/3nPlfL/BDkOQD22d/u x30dObnMNvcMrD7RjNlpy9bYHkxPpTom3zcEKyRk= From: "guojiufu at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug rtl-optimization/112525] fail to eliminate unused store Date: Tue, 14 Nov 2023 06:48:19 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: rtl-optimization X-Bugzilla-Version: unknown X-Bugzilla-Keywords: missed-optimization X-Bugzilla-Severity: normal X-Bugzilla-Who: guojiufu at gcc dot gnu.org X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- 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=3D112525 --- Comment #1 from Jiu Fu Guo --- (In reply to Jiu Fu Guo from comment #0) > For below code: > ``` > typedef struct teststruct > { > double d; > int arr[15]; /* for ppc64le example foo1, 14: foo is just blr. 15: foo = has > 8 'std's */ > } teststruct; Here, if the code is "int arr[14];", the struct is just passed via registers (in foo function); and in the expander pass, they are stored to frame area.= =20 If the code is "int arr[15];", the struct is passed through registers partially, and the other partial is through memory; and in the expander pas= s, they are stored to the area which is pointed via arg pointer. In DSE pass, the 'dead' stores to 'frame' can be eliminated.=