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