Committed. The test makes sense only for targets that return the "struct { int a, b, c; }" in registers (not in memory).
Starting a skip-construct is IMHO better than another iteration of that obscuring "{ ... && { ! mytarget-*-* } }". New targets can just append to the list without additional {}:s. I chose not to "convert" any of the previous exclusions, as without targets to test, I'd surely mess up {}-pairs. A new effective_target would be even better, but such a check_effective_target_returns_struct_in_memory (or complementary, _in_registers) would surely have to be parametrized on the size and type of the returned blob. Maybe best to restrict to just x86_64, as seems to have been the original problem target. gcc/testsuite: * gcc.dg/pr44194-1.c: Skip for mmix. --- gcc/gcc/testsuite/gcc.dg/pr44194-1.c.orig Mon Jan 13 22:30:47 2020 +++ gcc/gcc/testsuite/gcc.dg/pr44194-1.c Sun Aug 9 04:02:58 2020 @@ -1,4 +1,5 @@ /* { dg-do compile { target { { { { { { { { { { i?86-*-* x86_64-*-* } && x32 } || lp64 } && { ! s390*-*-* } } && { ! hppa*64*-*-* } } && { ! alpha*-*-* } } && { { ! powerpc*-*-linux* } || powerpc_elfv2 } } && { ! nvptx-*-* } } } } } } */ +/* { dg-skip-if "returns that struct in memory" { mmix-*-* } } */ /* { dg-options "-O2 -fdump-rtl-dse1 -fdump-rtl-final" } */ /* Restrict to 64-bit targets since 32-bit targets usually return small