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.