[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