<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/85387>85387</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[x86_64] X86_64 backend pass struct argument wrong due to align.
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
CoTinker
</td>
</tr>
</table>
<pre>
demo.c
```
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
typedef long long Tal4llong __attribute__((aligned (4)));
struct S271 {
int a;
Tal4llong b;
};
struct S271 s271;
void check271 (struct S271 arg) {
printf("arg.b:%llx\n", arg.b);
if (arg.b != s271.b)
printf("Fail\n");
}
int main (void) {
s271.b = 0x7ffffffff;
check271 (s271);
}
```
output:
https://godbolt.org/z/jP77GWad6
gcc
```
arg.b:7ffffffff
```
clang
```
arg.b:7f9cffffffff
Fail
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyEVFtv2yAU_jXHL6iWfTCx_eCHNpn3OmmVtrcIDHFoiYkM7mW_fgJniV11W4QI4Vy-CxDunO4HpRpgD8B2CZ_80Y7N1j7q4VmNibDyvZHqZNMOsh1k97DJLmP-iVQPnZmkIkC3zkujRXoE-uUvYW3_ER310C_DcfbvZyXVgRg79PP0yE1h4mq_596PWkxe7feAFWDFTdAjCWBVANaXQR_I3M35ceo8-Y5lTqB8mDcJIUQPnnCgi50bjLjuQ7m7rpetHJb5LSnOL1ZL0h1V9xyxsFrm87EHrNcMzqMe_CGqQD72qQB6D8iMeQO2HQARcEvmQFS04H4I_WOIAOZAd5HQnHjN-ojRcm2uneuVxIWM4MuJ6yEgBElr2jMMCYjZW3m4fFbkVhYEmz7FWt8qO_nz5IP-BZOj92cXPWkB295KYY1PbXCy_QXYPn0ry68_uNwsi_ru83v7x-Ab58-yOsOH_j_1dbduEW1dlySyobKmNU9Uk5d5xjKWVTQ5NlyxnNICs0OFlJe0kpVida6oYnmFZZnoBjMsMpqzHPMqo6kQnNesQCEOWPODgCJTJ65NaszLKZiRaOcm1VSMVmViuFDGxbeNOKhXEoPhwNkuGZtQcyem3kGRGe28u3Xx2pv4p_BWbfabAtiO_IwrInj3rAZJztw5crnTfOynkxo8eR3De5GTIt6S-BTTZBpN8-HstD9OIu3sCbANkJevu_Non1TnAdtI1AG2UcjvAAAA__8Qgkrt">