[Bug target/44948] New: -mavx changes ABI
jakub at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Thu Jul 15 12:14:00 GMT 2010
With two sources:
struct A { long b[8] __attribute__((aligned (32))); };
void foo (long double, struct A);
int
main (void)
{
struct A a = { { 0, 1, 2, 3, 4, 5, 6, 7 } };
foo (8.0L, a);
return 0;
}
and:
struct A { long b[8] __attribute__((aligned (32))); };
void
foo (long double x, struct A y)
{
int i;
if (x != 8.0L)
__builtin_abort ();
for (i = 0; i < 8; i++)
if (y.b[i] != i)
__builtin_abort ();
}
when one of these is compiled with -mavx while the other one is not, the
testcase ICEs, while when -mavx is used in both or none of the compilations, it
works.
This is because ix86_function_arg_boundary returns 16 for -mno-avx while 32 for
-mavx in this case. Shouldn't it return > 16 only if the mode is for 256-bit
vector modes or aggregate which contains some 256-bit vector somewhere in it?
--
Summary: -mavx changes ABI
Product: gcc
Version: 4.6.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: jakub at gcc dot gnu dot org
GCC target triplet: x86_64-linux
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44948
More information about the Gcc-bugs
mailing list