Hi,

 The pr44194-1.c test case scores a failure invariably for big-endian 
Power64/Linux targets:

PASS: gcc.dg/pr44194-1.c (test for excess errors)
FAIL: gcc.dg/pr44194-1.c scan-rtl-dump dse1 "global deletions = (2|3)"
PASS: gcc.dg/pr44194-1.c scan-rtl-dump-not final "insn[: ][^\n]*set 
\\(mem(?![^\n]*scratch)"

because IIUC the case only makes sense for targets where functions return 
small structures in registers.

 For historical reasons this is not the case for Power/Linux targets, 
except from the newly-added 64-bit little-endian one (according to 
LINUX64_DEFAULT_ABI_ELFv2 defined in rs6000/sysv4le.h and then 
rs6000_return_in_memory) or where the `-mabi=elfv2' option has been used 
(that, regrettably, looks undetectable to me; there's no preprocessor 
macro defined one could use to tell the ABIs apart).  The test case 
already excludes 32-bit targets based on the implication none uses 
registers for struct returns (that is not entirely correct, though fixing 
it is beyond the scope of this change).

 These observations are reflected in the change below, that disables the 
test case for big-endian Power64/Linux targets while retaining it for 
little-endian ones.  As noted above there's no way to detect `-mabi=elfv2' 
being in effect, so the check for relevance is hardwired to the target 
triplet instead.  This makes the failure go away in my power-linux-gnu 
testing that includes a 64-bit big-endian multilib.  I have no way to test 
a 64-bit little-endian multilib, however I believe the change is obviously 
correct in this respect.

 This could get extended to cover other Power targets, as it seems to me 
there are more that should be excluded, however I don't feel comfortable 
enough with the intricacies of the Power configuration to dare changing 
anything for targets I have no way to test.

 OK to apply?

2014-08-04  Maciej W. Rozycki  <ma...@codesourcery.com>

        gcc/testsuite/
        * gcc.dg/pr44194-1.c: Also exclude powerpc*-*-linux*, but not
        powerpc*le-*-linux*.

  Maciej

gcc-test-ppc-pr44194.diff
Index: gcc-fsf-trunk-quilt/gcc/testsuite/gcc.dg/pr44194-1.c
===================================================================
--- gcc-fsf-trunk-quilt.orig/gcc/testsuite/gcc.dg/pr44194-1.c   2014-05-16 
16:00:05.000000000 +0100
+++ gcc-fsf-trunk-quilt/gcc/testsuite/gcc.dg/pr44194-1.c        2014-08-04 
17:54:23.648935358 +0100
@@ -1,4 +1,4 @@
-/* { dg-do compile { target { { { { { { i?86-*-* x86_64-*-* } && x32 } || lp64 
} && { ! s390*-*-* } } && { ! hppa*64*-*-* } } && { ! alpha*-*-* } } } } */
+/* { dg-do compile { target { { { { { { { i?86-*-* x86_64-*-* } && x32 } || 
lp64 } && { ! s390*-*-* } } && { ! hppa*64*-*-* } } && { ! alpha*-*-* } } && { 
{ ! powerpc*-*-linux* } || { powerpc*le-*-linux* } } } } } */
 /* { dg-options "-O2 -fdump-rtl-dse1 -fdump-rtl-final" } */
 
 /* Restrict to 64-bit targets since 32-bit targets usually return small

Reply via email to