https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112525
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 has 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 arg 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.