From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 894023857704; Tue, 14 Nov 2023 06:40:18 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 894023857704 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1699944018; bh=tTMgnOyHacnd1kFIFtO5UH3RzVODOeDvusb9ZUjYFVY=; h=From:To:Subject:Date:From; b=nUlnM+Wtxpy3/bwrBAoWblQw00ULgL1uUKiZn9g+t8Y+klOq3+hDWd76Kq7y+8hv7 dnZsJ1CWljmFmSn+ZIAMWfqeohz/z7KmeiLnbk2wm35MjI8aRLNRN/iuXJsieMY7Nv KhXIzB057QzlZ72sA8L9OKqtwF4witkILbkKhSWw= From: "guojiufu at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug rtl-optimization/112525] New: fail to eliminate unused store Date: Tue, 14 Nov 2023 06:40:18 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: rtl-optimization X-Bugzilla-Version: unknown X-Bugzilla-Keywords: 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: bug_id short_desc product version bug_status bug_severity priority component assigned_to reporter target_milestone Message-ID: 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 Bug ID: 112525 Summary: fail to eliminate unused store Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: rtl-optimization Assignee: unassigned at gcc dot gnu.org Reporter: guojiufu at gcc dot gnu.org Target Milestone: --- For below code: ``` typedef struct teststruct { double d; int arr[15]; /* for ppc64le example foo1, 14: foo is just blr. 15: foo ha= s 8 'std's */ } teststruct; int foo (int a, teststruct p) { if (a > 0) return 1; return 2; } void foo1 (teststruct p) { } ``` Some instructions are generated to store "p" to stack (stored to areas of a= rg pointer/virtual_incoming_pointer). But those stores are not eliminated. For example, on ppc64le, below code is generated: ``` foo1: .LFB1: .cfi_startproc std 3,32(1) std 4,40(1) std 5,48(1) std 6,56(1) std 7,64(1) std 8,72(1) std 9,80(1) std 10,88(1) blr ``` Those 'std's are dead actually.=