<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/86057>86057</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[x86_32][clang] Empty structure argument are ignored in function variable arguments.
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
CoTinker
</td>
</tr>
</table>
<pre>
demo.cpp
```
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
struct S2210 {} ;
struct S2210 s2210;
void check2210va (int z, ...) {
struct S2210 arg;
va_list ap;
__builtin_va_start(ap, z);
arg = __builtin_va_arg(ap, struct S2210);
long double a = __builtin_va_arg(ap, long double);
printf("%Lf\n", a);
if (a != 2.0L)
printf("Fail\n");
__builtin_va_end(ap);
}
int main (void) {
check2210va (2, s2210, 2.0L);
}
```
compile command:
```
% clang++ demo.cpp -m32
% ./a.out
```
clang:
```
0.000000
Fail
```
gcc:
```
2.000000
```
https://godbolt.org/z/EqWa5nq13
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx8VEFv8ygQ_TXjC6qFxyF2Dj58SepTb7vSHiMM2GGLwTU42vbXr3DSNHGbRhEG3ps3wwwD9153VqkK2BbYPuFTOLqx2rm_tX1VY9I4-V5J1btUDAPQPdA_sKaX_3mJubbCTFIRyHc-SKOb9Aj58wNYu1_QUdvuFp5HH8ZJBPIXYkYJFFso9gTy7Q-gj-MVOjktiTgq8Rq3T5wAltoG8gG4I2maAm5muZlMCCF3WnzsrkoRPPGD0T4QPtxtHw7NpE3Q9nDiBx_4GABLPkQXH4CbOy4fOwL5_t4m-vm0uA1gaWyc7Yh0U2MU4b_L3FCXKsOobWgBS0AEZC8tsJ2d5zvCl2TdxpTFvGXRH6b0JVKu-EKv5tpc5W6U7uJUVl7i_GJAsT9PYnV6rm10G6v3rUKLas5hn4uOu2t832QXN1a4ftBGEeH6nlsJ-Z8HF5sRYbjtALeAW_LZBeSpz_GLkgLWPHVT-NnXLPDAA03p_Duv5vT9ROuEeKSAdwoL8BjC4KMl1oB152TjTEhdvCj1B2D9_PYPZ_YtyxNZ5XKTb3iiqqzI6KYsNlmRHKt2LUTWCsHKlpYoV6qUjBW5ooxnUparRFdIcUVzzCgiy4pU8qaVrGWYbQRvMIMVVT3XJjXm1EffifZ-UlW5pqxIDG-U8fPbg3jJNcZnaKwi_6mZOg8rGvvOfykEHcz8YP1Xrg955APbnq3Znjz3Q3i_dNI0qth0U69sIHxURHfWjUoSbUk7WRG0s-TER83nrrowfZpMo6kW6dPhODWpcD1gHUO5fJ6G0f2rRACs55N5wHo-3P8BAAD__z2xfCY">