RFA: Remove some assumptions from gcc.dg tests

Nick Clifton nickc@redhat.com
Thu Oct 24 17:03:00 GMT 2013


Hi Guys,

  The patch below includes a selection of improvements for the tests in
  the gcc.dg part of the gcc testsuite.  It basically annotates tests
  that have some implicit assumptions about the target that is being
  tested (word size, supported features, etc).

  I started making this patch originally just for the MSP430, and so I
  was adding target specific exceptions.  Then I realised that the
  exceptions would apply to other targets too and that it was better to
  add dg-require-effective-target-foo statements instead.

  Tested with an msp430-elf toolchain and an i686-pc-linux-gnu toolchain
  with no regressions and several improvements.

  OK to apply ?

Cheers
  Nick

gcc/testsuite/ChangeLog
2013-10-24  Nick Clifton  <nickc@redhat.com>

	* c-c++-common/pr57793.c: Add expected error messages for
	targets with small integers.
        * gcc.dg/c99-stdint-1.c: Only run on 32-bit plus targets.
        * gcc.dg/c99-stdint-2.c: Likewise.
        * gcc.dg/cdce1.c: Likewise.
        * gcc.dg/fold-overflow-1.c: Likewise.
        * gcc.dg/utf-cvt.c: Likewise.
        * gcc.dg/ftrapv-1.c: Only run on targets that support trapping
	arithmetic.
        * gcc.dg/ftrapv-2.c: Likewise.
        * gcc.dg/pr30286.c: Likewise.
        * gcc.dg/pr19340.c: Only run on targets that support
	scheduling.
        * lib/target-supports.exp (check_effective_target_trapping): New
	proc.  Returns true if the target supports trapping arithmetic.

Index: gcc/testsuite/c-c++-common/pr57793.c
===================================================================
--- gcc/testsuite/c-c++-common/pr57793.c	(revision 204016)
+++ gcc/testsuite/c-c++-common/pr57793.c	(working copy)
@@ -3,8 +3,8 @@
 struct A { unsigned a : 1; unsigned b : 1; };
 struct B     /* { dg-error "type .B. is too large" "" { target { c++ && ilp32 } } } */
 {
-  unsigned char c[0x40000000];
-  unsigned char d[0x40000ff0];
+  unsigned char c[0x40000000]; /* { dg-error "size of array .c. is too large" "" { target { ! int32plus } } } */
+  unsigned char d[0x40000ff0];/* { dg-error "size of array .d. is too large" "" { target { ! int32plus } } } */
   struct A e;
 }; /* { dg-error "type .struct B. is too large" "" { target { c && ilp32 } } } */
 
Index: gcc/testsuite/gcc.dg/c99-stdint-1.c
===================================================================
--- gcc/testsuite/gcc.dg/c99-stdint-1.c	(revision 204016)
+++ gcc/testsuite/gcc.dg/c99-stdint-1.c	(working copy)
@@ -9,6 +9,7 @@
    version).  */
 /* { dg-do compile } */
 /* { dg-options "-std=iso9899:1999 -pedantic-errors -fhosted" } */
+/* { dg-require-effective-target ptr32plus } */
 
 #include <limits.h>
 #include <stdint.h>
@@ -214,7 +215,6 @@
 void
 test_misc_limits (void)
 {
-/* { dg-bogus  "size" "ptrdiff is 16bits" { xfail avr-*-* } 56 } */
   CHECK_SIGNED_LIMITS_2(__PTRDIFF_TYPE__, PTRDIFF_MIN, PTRDIFF_MAX, -65535L, 65535L);
 #ifndef SIGNAL_SUPPRESS
   CHECK_LIMITS_2(sig_atomic_t, SIG_ATOMIC_MIN, SIG_ATOMIC_MAX, -127, 127, 255);
Index: gcc/testsuite/gcc.dg/c99-stdint-2.c
===================================================================
--- gcc/testsuite/gcc.dg/c99-stdint-2.c	(revision 204016)
+++ gcc/testsuite/gcc.dg/c99-stdint-2.c	(working copy)
@@ -2,7 +2,7 @@
    Freestanding version.  */
 /* { dg-do compile } */
 /* { dg-options "-std=iso9899:1999 -pedantic-errors -ffreestanding" } */
-/* { dg-xfail-if "ptrdiff size is 16bits" { avr-*-* } } */
+/* { dg-require-effective-target ptr32plus } */
 /* The test is that there are no diagnostics, so just include the
    hosted version.  */
 #include "c99-stdint-1.c"
Index: gcc/testsuite/gcc.dg/cdce1.c
===================================================================
--- gcc/testsuite/gcc.dg/cdce1.c	(revision 204016)
+++ gcc/testsuite/gcc.dg/cdce1.c	(working copy)
@@ -1,6 +1,7 @@
 /* { dg-do  run  } */
 /* { dg-options "-O2 -fmath-errno -fdump-tree-cdce-details  -lm" } */
-/* { dg-final { scan-tree-dump  "cdce1.c:16: note: function call is shrink-wrapped into error conditions\."  "cdce" } } */
+/* { dg-require-effective-target int32plus } */
+/* { dg-final { scan-tree-dump  "cdce1.c:17: note: function call is shrink-wrapped into error conditions\."  "cdce" } } */
 /* { dg-final { cleanup-tree-dump "cdce" } } */
 /* { dg-require-effective-target large_double } */
 
Index: gcc/testsuite/gcc.dg/fold-overflow-1.c
===================================================================
--- gcc/testsuite/gcc.dg/fold-overflow-1.c	(revision 204016)
+++ gcc/testsuite/gcc.dg/fold-overflow-1.c	(working copy)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-skip-if "consts are shorts, not longs" { "m32c-*-*" "avr-*-*" } { "*" } { "" } } */
+/* { dg-require-effective-target int32plus } */
 /* { dg-skip-if "No Inf support" { spu-*-* } } */
 /* { dg-options "-O -ftrapping-math" } */
 
Index: gcc/testsuite/gcc.dg/ftrapv-1.c
===================================================================
--- gcc/testsuite/gcc.dg/ftrapv-1.c	(revision 204016)
+++ gcc/testsuite/gcc.dg/ftrapv-1.c	(working copy)
@@ -7,6 +7,7 @@
 
 /* { dg-do run } */
 /* { dg-options "-ftrapv" } */
+/* { dg-require-effective-target trapping } */
 
 __attribute__((noinline)) int
 mulv(int a, int b)
Index: gcc/testsuite/gcc.dg/ftrapv-2.c
===================================================================
--- gcc/testsuite/gcc.dg/ftrapv-2.c	(revision 204016)
+++ gcc/testsuite/gcc.dg/ftrapv-2.c	(working copy)
@@ -8,6 +8,7 @@
 
 /* { dg-do run } */
 /* { dg-options "-ftrapv" } */
+/* { dg-require-effective-target trapping } */
 
 extern void abort(void);
 extern long labs(long);
Index: gcc/testsuite/gcc.dg/pr19340.c
===================================================================
--- gcc/testsuite/gcc.dg/pr19340.c	(revision 204016)
+++ gcc/testsuite/gcc.dg/pr19340.c	(working copy)
@@ -1,6 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O1 -fschedule-insns2 -fsched2-use-superblocks" } */
-/* { dg-skip-if "No scheduling" { mmix-*-* cris-*-* crisv32-*-* fido-*-* m68k-*-* m32c-*-* avr-*-* moxie-*-* } { "*" } { "" } } */
+/* { dg-require-effective-target scheduling } */
 
 extern double f (double x);
 
Index: gcc/testsuite/gcc.dg/pr30286.c
===================================================================
--- gcc/testsuite/gcc.dg/pr30286.c	(revision 204016)
+++ gcc/testsuite/gcc.dg/pr30286.c	(working copy)
@@ -1,6 +1,7 @@
 /* PR middle-end/30286 */
 /* { dg-do run } */
 /* { dg-options "-O2 -ftrapv" } */
+/* { dg-require-effective-target trapping } */
 
 extern void abort (void);
 struct S { struct S *s; };
Index: gcc/testsuite/gcc.dg/pr38364.c
===================================================================
--- gcc/testsuite/gcc.dg/pr38364.c	(revision 204016)
+++ gcc/testsuite/gcc.dg/pr38364.c	(working copy)
@@ -1,6 +1,7 @@
 /* PR middle-end/38364 */
 /* { dg-do run } */
 /* { dg-options "-O2 -ftrapv" } */
+/* { dg-require-effective-target trapping } */
 
 extern void abort (void);
 
Index: gcc/testsuite/gcc.dg/utf-cvt.c
===================================================================
--- gcc/testsuite/gcc.dg/utf-cvt.c	(revision 204016)
+++ gcc/testsuite/gcc.dg/utf-cvt.c	(working copy)
@@ -1,7 +1,7 @@
 /* Contributed by Kris Van Hees <kris.van.hees@oracle.com> */
 /* Test the char16_t and char32_t promotion rules. */
 /* { dg-do compile } */
-/* { dg-excess-errors "short and int are 16bit" { target { "avr-*-*" } } } */
+/* { dg-require-effective-target int32plus } */
 /* { dg-options "-std=gnu99 -Wall -Wconversion -Wsign-conversion" } */
 
 typedef __CHAR16_TYPE__ char16_t;
Index: gcc/testsuite/lib/target-supports.exp
===================================================================
--- gcc/testsuite/lib/target-supports.exp	(revision 204016)
+++ gcc/testsuite/lib/target-supports.exp	(working copy)
@@ -701,6 +701,14 @@
     } "-fschedule-insns"]
 }
 
+# Return 1 if trapping arithmetic is available, 0 otherwise.
+
+proc check_effective_target_trapping {} {
+    return [check_no_compiler_messages scheduling object {
+        add (int a, int b) { return a + b; }
+    } "-ftrapv"]
+}
+
 # Return 1 if compilation with -fgraphite is error-free for trivial 
 # code, 0 otherwise.
 



More information about the Gcc-patches mailing list