[Bug target/102024] [12 Regression] zero width bitfields and ABIs
xry111 at mengyan1223 dot wang
gcc-bugzilla@gcc.gnu.org
Wed Mar 30 19:02:07 GMT 2022
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102024
--- Comment #30 from Xi Ruoyao <xry111 at mengyan1223 dot wang> ---
(In reply to Jakub Jelinek from comment #28)
> Also, what does LLVM do?
clang-14 agree with gcc-12 on the return values, as we expected (the ABI
documentation is clear enough).
But clang-14 treats arguments differently:
struct foo
{
int : 0;
double a;
int : 0;
double b;
int : 0;
};
extern void func(struct foo);
void
pass_foo(void)
{
struct foo test;
test.a = 114;
test.b = 514;
func(test);
}
It puts "a" into $f12 and "b" into $f13. So the behavior of clang-14 and
clang++-14 handling arguments with zero-width bit-fields is same as g++-11, and
different from g++-12, gcc-11, and gcc-12.
I'm not sure if we should keep our current behavior, or change it to match
LLVM.
More information about the Gcc-bugs
mailing list