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.

Reply via email to