<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/120482>120482</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [AIX] Bad codegen passing packed aggregates containing PPC vectors
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            platform:aix
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          hubert-reinterpretcast
      </td>
    </tr>
</table>

<pre>
    Consider (with `-DPACKED`):
```cpp
extern "C" {
struct
#if PACKED
__attribute__((__packed__))
#endif
A {
  vector unsigned int x;
};
void g(void *p);
void f(unsigned long, A a) {
 g(&a);
}
}
```

As a packed structure, arguments of type `A` should be passed without special treatment for 16-byte alignment (https://www.ibm.com/docs/en/aix/7.3?topic=sequence-argument-passing); however, the 16-byte alignment behaviour is observed whether `-DPACKED` is specified or not.

Online compiler link: https://godbolt.org/z/314ddxcb7

Compiler invocation command:
```
clang++ --target=powerpc64-ibm-aix -DPACKED -O -S -o - -emit-llvm packedvecpassing.cc
```

Actual output (partial):
```
define void @f(i64 noundef %0, ptr noundef byval(%struct.A) align 16 %a) local_unnamed_addr #0 {
```

Expected output (partial):
```
define void @f(i64 noundef %0, ptr noundef byval(%struct.A) align 8 %a) local_unnamed_addr #0 {
```

</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzEVEGv4jYQ_jXDZRSUOAHCgUMeLFLVw67US2_IsSeJu46d2hPg9ddXDvCqfd1TL5UicGLP5--b-WZkjKZ3RAfYvMHmtJIzDz4chrmlwFkg45jCFIiVjLxqvX4_HL2LRlNAEPXN8ICwzbPTt-b465cTbHMQeygbyJu0Xh41TZA3dGcKDkGIIwiBsHuDvIkcZsXpsChNh0-QvLlcJHMw7cx0uYCoQdSXyyTVd9LpfZ-eJYicNh3kTfMERLySYh9wdoswjcYx3qFMm7A7PRZXbzT2IOplAaKZFtYfWx2I-gPAeteDOGKDEsT-dU-_sNrKj8AE_vH7kp7WedNElPhgjw_Fc6AEKUM_j-Q4ou-Q3ydKuUzRGAc_W40t4SRjJI0p035mjBMpIy1yIMkpFjsfsNhm7TsTSmt6t3wFUQ_MU0y1EGcQ59vttjbtuFZ-BHHWXkUQZ3IgztLcQZx36xLKM_vJKChPkf6cySnKXhSzxMOkTCS9OPgbXSkkETzQT-5vaZBX4-eAJqJvI4VrUjEQD8k6P1gmHVl0dYY0-oDO8_qRuq_OGkeo_DgZSwGtcd-hbPBHbb3Xrbe89qEHcf4LxLksKq3vqt09YI6veOOuXkk23iXMUTr9yayQN8rKpPMNxBtmGcvQE0N5mvyNwqS2VWbaMZPmji8JmH3F7DfMPGaY0Wg4s_Y6Pit-JfVM3Vqpn3hD8Swt-pmneanaJAMbaf_dRpA3mrqUjYdrqzzZ1GwrdH52mjoEsclTRSYOH9_a92sCq0FsHtZbN8nFS6Gw2KaYxdbWK2kvs3NyJH2RWqf-LvOn3T-R_nKfSHGq1f9Cu_4PrFf6UOp9uZcrOhS7stpstnVRrIZDqwqV5zu12-V1XteF3oiN6raq3G83VSm6lTmIXFSFKGpRiLwo1rWuClXtVLmtdrLddFDlNEpj16nqyYMrE-NMh0LkVS1WVrZk4zJghZis5M6HEcpmaTuRhm44pMisnfsIVW5N5PgPFhu2y3hufvkdNid8kxqV19STw6exXrNF9n2gXjJFVN6xNC5tfvt2fA7FuJqDPXxqHcPD3D6nQrr0-ZdNwf9BikGcFzVpWjwFXQ_i7wAAAP__wpnoFQ">