https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94770

--- Comment #12 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Another interesting test is:
struct S {};
void foo (int, int, int, int, int, int, int, int, int, S, S, S, S, int);
void baz (int, int, int, int, int, int, int, int, int, int);

int
bar ()
{
  foo (1, 2, 3, 4, 5, 6, 7, 8, 9, S {}, S {}, S {}, S {}, 10);
  baz (1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
  return 0;
}

The question is, is 10 passed in the same stack slot to both foo and baz or
not?
In current GCC it is, with the unconditional return false; in
ix86_is_empty_record it is not, and with that clang++10 snapshot it is not
either.
So, what does MSVC do here?

Reply via email to