[Bug target/95748] Long long function parameter should be aligned to 32 bit on x86.
hjl.tools at gmail dot com
gcc-bugzilla@gcc.gnu.org
Fri Jun 19 12:59:07 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95748
--- Comment #3 from H.J. Lu <hjl.tools at gmail dot com> ---
[hjl@gnu-cfl-2 tmp]$ cat x.c
typedef __UINTPTR_TYPE__ uintptr_t;
__attribute__ ((noclone, noinline))
void
check (uintptr_t address, uintptr_t align)
{
if (address & (align - 1))
__builtin_abort();
}
__attribute__ ((noclone, noinline))
void
foo(uintptr_t x, long long p)
{
uintptr_t align = __alignof__(p);
uintptr_t address = (uintptr_t) &p;
check (address, align);
}
__attribute__ ((noclone, noinline))
int
bar(void)
{
foo (4,5);
return 0;
}
int *ptr;
int
main()
{
int x = 1;
ptr = &x;
return bar();
}
[hjl@gnu-cfl-2 tmp]$ gcc -m32 x.c -mpreferred-stack-boundary=2 -O2
[hjl@gnu-cfl-2 tmp]$ ./a.out
Aborted (core dumped)
[hjl@gnu-cfl-2 tmp]$
More information about the Gcc-bugs
mailing list