<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">