I did this as a part of preparing the testsuite to cope with the (possible) gnu11 default. But I think it's a reasonable cleanup on its own. With gnu11, we'd start to warn about defaulting to int, missing function declarations, and functions without return type. I added -fgnu89-inline when a test relies on a gnu89 inline semantics, and -std=gnu89 if a test relies on gnu89 standard.
I have patches that cover the rest of C testsuite, but let's do this piecewise. Tested on x86_64-linux: vanilla results == results with this patch == results with this patch and gnu11 as a default. Does this approach make sense? 2014-09-30 Marek Polacek <pola...@redhat.com> * gcc.c-torture/compile/20000120-2.c: Use -fgnu89-inline. * gcc.c-torture/compile/20011119-1.c: Likewise. * gcc.c-torture/compile/20011119-2.c: Likewise. * gcc.c-torture/compile/20021120-1.c: Likewise. * gcc.c-torture/compile/20021120-2.c: Likewise. * gcc.c-torture/compile/20050215-1.c: Likewise. * gcc.c-torture/compile/20050215-2.c: Likewise. * gcc.c-torture/compile/20050215-3.c: Likewise. * gcc.c-torture/compile/pr37669.c: Likewise. * gcc.c-torture/execute/20020107-1.c: Likewise. * gcc.c-torture/execute/restrict-1.c: Likewise. * gcc.c-torture/compile/20090721-1.c: Fix defaulting to int. * gcc.c-torture/execute/930529-1.c: Likewise. * gcc.c-torture/execute/920612-1.c: Likewise. * gcc.c-torture/execute/920711-1.c: Likewise. * gcc.c-torture/execute/990127-2.c: Likewise. * gcc.c-torture/execute/pr40386.c: Likewise. * gcc.c-torture/execute/pr57124.c: Likewise. * gcc.c-torture/compile/pr34808.c: Add function declarations. * gcc.c-torture/compile/pr42299.c: Likewise. * gcc.c-torture/compile/pr48517.c: Use -std=gnu89. * gcc.c-torture/compile/simd-6.c: Likewise. * gcc.c-torture/execute/pr53645-2.c: Likewise. * gcc.c-torture/execute/pr53645.c: Likewise. * gcc.c-torture/execute/20001121-1.c: Use -fgnu89-inline. Add function declarations. * gcc.c-torture/execute/980608-1.c: Likewise. * gcc.c-torture/execute/bcp-1.c: Likewise. * gcc.c-torture/execute/p18298.c: Likewise. * gcc.c-torture/execute/unroll-1.c: Likewise. * gcc.c-torture/execute/va-arg-7.c: Likewise. * gcc.c-torture/execute/va-arg-8.c: Likewise. * gcc.c-torture/execute/930526-1.c: Use -fgnu89-inline. Add function declarations. Fix defaulting to int. * gcc.c-torture/execute/961223-1.c: Likewise. * gcc.c-torture/execute/loop-2c.c: Use -fgnu89-inline and -Wno-pointer-to-int-cast. Fix defaulting to int. diff --git gcc/gcc/testsuite/gcc.c-torture/compile/20000120-2.c gcc/gcc/testsuite/gcc.c-torture/compile/20000120-2.c index 737eb92..939c52d 100644 --- gcc/gcc/testsuite/gcc.c-torture/compile/20000120-2.c +++ gcc/gcc/testsuite/gcc.c-torture/compile/20000120-2.c @@ -1,3 +1,5 @@ +/* { dg-options "-fgnu89-inline" } */ + extern __inline__ int odd(int i) { diff --git gcc/gcc/testsuite/gcc.c-torture/compile/20011119-1.c gcc/gcc/testsuite/gcc.c-torture/compile/20011119-1.c index b4b80ae..5d036c9 100644 --- gcc/gcc/testsuite/gcc.c-torture/compile/20011119-1.c +++ gcc/gcc/testsuite/gcc.c-torture/compile/20011119-1.c @@ -1,3 +1,4 @@ +/* { dg-options "-fgnu89-inline" } */ /* { dg-require-weak "" } */ /* { dg-require-alias "" } */ #define ASMNAME(cname) ASMNAME2 (__USER_LABEL_PREFIX__, cname) diff --git gcc/gcc/testsuite/gcc.c-torture/compile/20011119-2.c gcc/gcc/testsuite/gcc.c-torture/compile/20011119-2.c index e06809f..ea1176a 100644 --- gcc/gcc/testsuite/gcc.c-torture/compile/20011119-2.c +++ gcc/gcc/testsuite/gcc.c-torture/compile/20011119-2.c @@ -1,3 +1,4 @@ +/* { dg-options "-fgnu89-inline" } */ /* { dg-require-weak "" } */ /* { dg-require-alias "" } */ #define ASMNAME(cname) ASMNAME2 (__USER_LABEL_PREFIX__, cname) diff --git gcc/gcc/testsuite/gcc.c-torture/compile/20021120-1.c gcc/gcc/testsuite/gcc.c-torture/compile/20021120-1.c index 423f8ec..3dc4928 100644 --- gcc/gcc/testsuite/gcc.c-torture/compile/20021120-1.c +++ gcc/gcc/testsuite/gcc.c-torture/compile/20021120-1.c @@ -4,6 +4,8 @@ /* Verify that GCC doesn't get confused by the redefinition of an extern inline function. */ +/* { dg-options "-fgnu89-inline" } */ + extern int inline foo () { return 0; } extern int inline bar () { return 0; } static int inline bar () { return foo(); } diff --git gcc/gcc/testsuite/gcc.c-torture/compile/20021120-2.c gcc/gcc/testsuite/gcc.c-torture/compile/20021120-2.c index 51f0e25..cd9eda0 100644 --- gcc/gcc/testsuite/gcc.c-torture/compile/20021120-2.c +++ gcc/gcc/testsuite/gcc.c-torture/compile/20021120-2.c @@ -4,6 +4,8 @@ /* Verify that GCC doesn't get confused by the redefinition of an extern inline function. */ +/* { dg-options "-fgnu89-inline" } */ + extern int inline foo () { return 0; } extern int inline bar () { return 0; } static int bar () { return foo(); } diff --git gcc/gcc/testsuite/gcc.c-torture/compile/20050215-1.c gcc/gcc/testsuite/gcc.c-torture/compile/20050215-1.c index e971779..83d0cb2 100644 --- gcc/gcc/testsuite/gcc.c-torture/compile/20050215-1.c +++ gcc/gcc/testsuite/gcc.c-torture/compile/20050215-1.c @@ -1,4 +1,5 @@ /* PR tree-optimization/18947 */ +/* { dg-options "-fgnu89-inline" } */ extern __inline void f1 (void) { } extern __inline void f2 (void) { f1 (); } void f2 (void) {} diff --git gcc/gcc/testsuite/gcc.c-torture/compile/20050215-2.c gcc/gcc/testsuite/gcc.c-torture/compile/20050215-2.c index 44550d0..9feea6a 100644 --- gcc/gcc/testsuite/gcc.c-torture/compile/20050215-2.c +++ gcc/gcc/testsuite/gcc.c-torture/compile/20050215-2.c @@ -1,4 +1,5 @@ /* PR tree-optimization/18947 */ +/* { dg-options "-fgnu89-inline" } */ int v; extern __inline void f1 (void) { v++; } void f4 (void) { f1 (); } diff --git gcc/gcc/testsuite/gcc.c-torture/compile/20050215-3.c gcc/gcc/testsuite/gcc.c-torture/compile/20050215-3.c index 7a35eb6..67a4f26 100644 --- gcc/gcc/testsuite/gcc.c-torture/compile/20050215-3.c +++ gcc/gcc/testsuite/gcc.c-torture/compile/20050215-3.c @@ -1,4 +1,5 @@ /* PR tree-optimization/18947 */ +/* { dg-options "-fgnu89-inline" } */ int v; extern __inline void f0 (void) { v++; } extern __inline void f1 (void) { f0 (); } diff --git gcc/gcc/testsuite/gcc.c-torture/compile/20090721-1.c gcc/gcc/testsuite/gcc.c-torture/compile/20090721-1.c index 2122b34..928cafa 100644 --- gcc/gcc/testsuite/gcc.c-torture/compile/20090721-1.c +++ gcc/gcc/testsuite/gcc.c-torture/compile/20090721-1.c @@ -1,3 +1,3 @@ /* { dg-options "-fno-tree-sra" } */ union u {double d;long long ll;}; -f(double x, int n){union u v;v.d=x;if(n>=0){v.ll<<=63;}else{v.ll-=1<<-n;v.ll>>=-n;}return v.ll;} +int f(double x, int n){union u v;v.d=x;if(n>=0){v.ll<<=63;}else{v.ll-=1<<-n;v.ll>>=-n;}return v.ll;} diff --git gcc/gcc/testsuite/gcc.c-torture/compile/pr34808.c gcc/gcc/testsuite/gcc.c-torture/compile/pr34808.c index 8224061..63be3f6 100644 --- gcc/gcc/testsuite/gcc.c-torture/compile/pr34808.c +++ gcc/gcc/testsuite/gcc.c-torture/compile/pr34808.c @@ -6,6 +6,9 @@ extern int flags; struct r { int code; int val;}; +void bar (void); +void baz (void); + int foo (struct r *home) { diff --git gcc/gcc/testsuite/gcc.c-torture/compile/pr37669.c gcc/gcc/testsuite/gcc.c-torture/compile/pr37669.c index 68e96c6..c78243b 100644 --- gcc/gcc/testsuite/gcc.c-torture/compile/pr37669.c +++ gcc/gcc/testsuite/gcc.c-torture/compile/pr37669.c @@ -1,4 +1,5 @@ /* This testcase used to fail because a miscompiled execute_fold_all_builtins. */ +/* { dg-options "-fgnu89-inline" } */ typedef __SIZE_TYPE__ size_t; extern __inline __attribute__ ((__always_inline__)) int __attribute__ diff --git gcc/gcc/testsuite/gcc.c-torture/compile/pr42299.c gcc/gcc/testsuite/gcc.c-torture/compile/pr42299.c index 5a9199f..65a9bf7 100644 --- gcc/gcc/testsuite/gcc.c-torture/compile/pr42299.c +++ gcc/gcc/testsuite/gcc.c-torture/compile/pr42299.c @@ -1,5 +1,7 @@ /* { dg-options "-g" } */ +void bar (void); + static int foo (int x, int y) { diff --git gcc/gcc/testsuite/gcc.c-torture/compile/pr48517.c gcc/gcc/testsuite/gcc.c-torture/compile/pr48517.c index 30b3ecb..4cfe038 100644 --- gcc/gcc/testsuite/gcc.c-torture/compile/pr48517.c +++ gcc/gcc/testsuite/gcc.c-torture/compile/pr48517.c @@ -1,6 +1,6 @@ /* PR c/48517 */ /* { dg-do compile } */ -/* { dg-options "" } */ +/* { dg-options "-std=gnu89" } */ void bar (const unsigned short *); diff --git gcc/gcc/testsuite/gcc.c-torture/compile/simd-6.c gcc/gcc/testsuite/gcc.c-torture/compile/simd-6.c index 7998e15..3e34128 100644 --- gcc/gcc/testsuite/gcc.c-torture/compile/simd-6.c +++ gcc/gcc/testsuite/gcc.c-torture/compile/simd-6.c @@ -1,3 +1,5 @@ +/* { dg-options "-std=gnu89" } */ + typedef int __attribute__((vector_size (8))) vec; vec a[] = {(vec) {1, 2}, {3, 4}}; diff --git gcc/gcc/testsuite/gcc.c-torture/execute/20001121-1.c gcc/gcc/testsuite/gcc.c-torture/execute/20001121-1.c index 3647456..a3c6858 100644 --- gcc/gcc/testsuite/gcc.c-torture/execute/20001121-1.c +++ gcc/gcc/testsuite/gcc.c-torture/execute/20001121-1.c @@ -1,3 +1,8 @@ +/* { dg-options "-fgnu89-inline" } */ + +extern void abort (void); +extern void exit (int); + double d; __inline__ double foo (void) diff --git gcc/gcc/testsuite/gcc.c-torture/execute/20020107-1.c gcc/gcc/testsuite/gcc.c-torture/execute/20020107-1.c index d5bbcc4..23d8aeb 100644 --- gcc/gcc/testsuite/gcc.c-torture/execute/20020107-1.c +++ gcc/gcc/testsuite/gcc.c-torture/execute/20020107-1.c @@ -1,5 +1,6 @@ /* This testcase failed because - 1 - buf was simplified into ~buf and when later expanding it back into - buf + -1, -1 got lost. */ +/* { dg-options "-fgnu89-inline" } */ extern void abort (void); extern void exit (int); diff --git gcc/gcc/testsuite/gcc.c-torture/execute/920612-1.c gcc/gcc/testsuite/gcc.c-torture/execute/920612-1.c index bc63003..8553de2 100644 --- gcc/gcc/testsuite/gcc.c-torture/execute/920612-1.c +++ gcc/gcc/testsuite/gcc.c-torture/execute/920612-1.c @@ -3,5 +3,5 @@ extern void abort (void); extern void exit (int); -f(j)int j;{return++j>0;} -main(){if(f((~0U)>>1))abort();exit(0);} +int f(j)int j;{return++j>0;} +int main(){if(f((~0U)>>1))abort();exit(0);} diff --git gcc/gcc/testsuite/gcc.c-torture/execute/920711-1.c gcc/gcc/testsuite/gcc.c-torture/execute/920711-1.c index f72ef7c..de63b8f 100644 --- gcc/gcc/testsuite/gcc.c-torture/execute/920711-1.c +++ gcc/gcc/testsuite/gcc.c-torture/execute/920711-1.c @@ -3,5 +3,5 @@ extern void abort (void); extern void exit (int); -f(long a){return (--a > 0);} -main(){if(f(0x80000000L)==0)abort();exit(0);} +int f(long a){return (--a > 0);} +int main(){if(f(0x80000000L)==0)abort();exit(0);} diff --git gcc/gcc/testsuite/gcc.c-torture/execute/930526-1.c gcc/gcc/testsuite/gcc.c-torture/execute/930526-1.c index bbf63c6..e6a21d2 100644 --- gcc/gcc/testsuite/gcc.c-torture/execute/930526-1.c +++ gcc/gcc/testsuite/gcc.c-torture/execute/930526-1.c @@ -1,5 +1,9 @@ -inline -f (x) +/* { dg-options "-fgnu89-inline" } */ + +extern void exit (int); + +inline void +f (int x) { int *(p[25]); int m[25*7]; @@ -11,6 +15,7 @@ f (x) p[1][0] = 0; } +int main () { f (7); diff --git gcc/gcc/testsuite/gcc.c-torture/execute/930529-1.c gcc/gcc/testsuite/gcc.c-torture/execute/930529-1.c index 9c4085c..0f3668e 100644 --- gcc/gcc/testsuite/gcc.c-torture/execute/930529-1.c +++ gcc/gcc/testsuite/gcc.c-torture/execute/930529-1.c @@ -3,8 +3,9 @@ extern void abort (void); extern void exit (int); -dd (x,d) { return x / d; } +int dd (int x, int d) { return x / d; } +int main () { int i; diff --git gcc/gcc/testsuite/gcc.c-torture/execute/961223-1.c gcc/gcc/testsuite/gcc.c-torture/execute/961223-1.c index 9bc6cfa..d31962a 100644 --- gcc/gcc/testsuite/gcc.c-torture/execute/961223-1.c +++ gcc/gcc/testsuite/gcc.c-torture/execute/961223-1.c @@ -1,3 +1,8 @@ +/* { dg-options "-fgnu89-inline" } */ + +extern void exit (int); +extern void abort (void); + struct s { double d; }; @@ -9,6 +14,7 @@ sub (struct s s) return s; } +int main () { struct s t = { 2.0 }; diff --git gcc/gcc/testsuite/gcc.c-torture/execute/980608-1.c gcc/gcc/testsuite/gcc.c-torture/execute/980608-1.c index b34d137..f6c15e8 100644 --- gcc/gcc/testsuite/gcc.c-torture/execute/980608-1.c +++ gcc/gcc/testsuite/gcc.c-torture/execute/980608-1.c @@ -1,5 +1,10 @@ +/* { dg-options "-fgnu89-inline" } */ + #include <stdarg.h> +extern void abort(void); +extern void exit (int); + void f1(int a,int b,int c,int d,int e, int f,int g,int h,int i,int j, int k,int l,int m,int n,int o) { diff --git gcc/gcc/testsuite/gcc.c-torture/execute/990127-2.c gcc/gcc/testsuite/gcc.c-torture/execute/990127-2.c index e87d27a..939000e 100644 --- gcc/gcc/testsuite/gcc.c-torture/execute/990127-2.c +++ gcc/gcc/testsuite/gcc.c-torture/execute/990127-2.c @@ -18,6 +18,7 @@ fpTest (double x, double y) fpEq (result1, result2); } +int main () { fpTest (35.7, 45.0); diff --git gcc/gcc/testsuite/gcc.c-torture/execute/bcp-1.c gcc/gcc/testsuite/gcc.c-torture/execute/bcp-1.c index 8dd8e22..19c038b 100644 --- gcc/gcc/testsuite/gcc.c-torture/execute/bcp-1.c +++ gcc/gcc/testsuite/gcc.c-torture/execute/bcp-1.c @@ -1,3 +1,8 @@ +/* { dg-options "-fgnu89-inline" } */ + +extern void abort (void); +extern void exit (int); + __attribute__ ((externally_visible)) int global; int func(void); diff --git gcc/gcc/testsuite/gcc.c-torture/execute/loop-2c.c gcc/gcc/testsuite/gcc.c-torture/execute/loop-2c.c index 9facf3b..9326ad0 100644 --- gcc/gcc/testsuite/gcc.c-torture/execute/loop-2c.c +++ gcc/gcc/testsuite/gcc.c-torture/execute/loop-2c.c @@ -1,6 +1,11 @@ +/* { dg-options "-fgnu89-inline -Wno-pointer-to-int-cast" } */ + +extern void abort (void); +extern void exit (int); + int a[2]; -__inline__ f (b, o) +__inline__ void f (int b, int o) { unsigned int i; int *p; @@ -8,11 +13,13 @@ __inline__ f (b, o) *--p = i * 3 + o; } +void g(int b) { f (b, (int)a); } +int main () { a[0] = a[1] = 0; diff --git gcc/gcc/testsuite/gcc.c-torture/execute/p18298.c gcc/gcc/testsuite/gcc.c-torture/execute/p18298.c index 5aff51f..5058996 100644 --- gcc/gcc/testsuite/gcc.c-torture/execute/p18298.c +++ gcc/gcc/testsuite/gcc.c-torture/execute/p18298.c @@ -1,5 +1,8 @@ +/* { dg-options "-fgnu89-inline" } */ + #include <stdbool.h> #include <stdlib.h> +extern void abort (void); int strcmp (const char*, const char*); char s[2048] = "a"; inline bool foo(const char *str) { diff --git gcc/gcc/testsuite/gcc.c-torture/execute/pr40386.c gcc/gcc/testsuite/gcc.c-torture/execute/pr40386.c index 59cd641..f39f1de 100644 --- gcc/gcc/testsuite/gcc.c-torture/execute/pr40386.c +++ gcc/gcc/testsuite/gcc.c-torture/execute/pr40386.c @@ -25,6 +25,7 @@ long long ll = LL_VALUE; int shift1 = SHIFT1; int shift2 = SHIFT2; +int main () { if (ROR (c, shift1) != ROR (CHAR_VALUE, SHIFT1)) diff --git gcc/gcc/testsuite/gcc.c-torture/execute/pr53645-2.c gcc/gcc/testsuite/gcc.c-torture/execute/pr53645-2.c index a03dd2e..4638e30 100644 --- gcc/gcc/testsuite/gcc.c-torture/execute/pr53645-2.c +++ gcc/gcc/testsuite/gcc.c-torture/execute/pr53645-2.c @@ -1,4 +1,5 @@ /* PR tree-optimization/53645 */ +/* { dg-options "-std=gnu89" } */ typedef unsigned short int UV __attribute__((vector_size (16))); typedef short int SV __attribute__((vector_size (16))); diff --git gcc/gcc/testsuite/gcc.c-torture/execute/pr53645.c gcc/gcc/testsuite/gcc.c-torture/execute/pr53645.c index 1e70d9e..d86a895 100644 --- gcc/gcc/testsuite/gcc.c-torture/execute/pr53645.c +++ gcc/gcc/testsuite/gcc.c-torture/execute/pr53645.c @@ -1,4 +1,5 @@ /* PR tree-optimization/53645 */ +/* { dg-options "-std=gnu89" } */ typedef unsigned int UV __attribute__((vector_size (16))); typedef int SV __attribute__((vector_size (16))); diff --git gcc/gcc/testsuite/gcc.c-torture/execute/pr57124.c gcc/gcc/testsuite/gcc.c-torture/execute/pr57124.c index ca60158..3148345 100644 --- gcc/gcc/testsuite/gcc.c-torture/execute/pr57124.c +++ gcc/gcc/testsuite/gcc.c-torture/execute/pr57124.c @@ -4,7 +4,7 @@ extern void abort (void); extern void exit (int); -__attribute__ ((noinline)) +__attribute__ ((noinline)) void foo(short unsigned int *p1, short unsigned int *p2) { short unsigned int x1, x4; @@ -23,6 +23,7 @@ foo(short unsigned int *p1, short unsigned int *p2) exit (0); } +int main() { short unsigned int x, y; @@ -30,4 +31,3 @@ main() y = -10; foo (&x, &y); } - diff --git gcc/gcc/testsuite/gcc.c-torture/execute/restrict-1.c gcc/gcc/testsuite/gcc.c-torture/execute/restrict-1.c index 3c5696c..c552861 100644 --- gcc/gcc/testsuite/gcc.c-torture/execute/restrict-1.c +++ gcc/gcc/testsuite/gcc.c-torture/execute/restrict-1.c @@ -2,6 +2,7 @@ Origin: Jeremy Denise <jeremy.den...@libertysurf.fr> Reduced: Wolfgang Bangerth <bange...@dealii.org> Volker Reichelt <reich...@igpm.rwth-aachen.de> */ +/* { dg-options "-fgnu89-inline" } */ extern void abort (); diff --git gcc/gcc/testsuite/gcc.c-torture/execute/unroll-1.c gcc/gcc/testsuite/gcc.c-torture/execute/unroll-1.c index 8812955..5606978 100644 --- gcc/gcc/testsuite/gcc.c-torture/execute/unroll-1.c +++ gcc/gcc/testsuite/gcc.c-torture/execute/unroll-1.c @@ -1,3 +1,8 @@ +/* { dg-options "-fgnu89-inline" } */ + +extern void abort (void); +extern void exit (int); + inline int f (int x) { diff --git gcc/gcc/testsuite/gcc.c-torture/execute/va-arg-7.c gcc/gcc/testsuite/gcc.c-torture/execute/va-arg-7.c index f45219a..c66cb60 100644 --- gcc/gcc/testsuite/gcc.c-torture/execute/va-arg-7.c +++ gcc/gcc/testsuite/gcc.c-torture/execute/va-arg-7.c @@ -1,4 +1,8 @@ /* Origin: Franz Sirl <franz.sirl-ker...@lauterbach.com> */ +/* { dg-options "-fgnu89-inline" } */ + +extern void abort (void); +extern void exit (int); #include <stdarg.h> diff --git gcc/gcc/testsuite/gcc.c-torture/execute/va-arg-8.c gcc/gcc/testsuite/gcc.c-torture/execute/va-arg-8.c index 964833b..c310693 100644 --- gcc/gcc/testsuite/gcc.c-torture/execute/va-arg-8.c +++ gcc/gcc/testsuite/gcc.c-torture/execute/va-arg-8.c @@ -1,4 +1,8 @@ /* Origin: Franz Sirl <franz.sirl-ker...@lauterbach.com> */ +/* { dg-options "-fgnu89-inline" } */ + +extern void abort (void); +extern void exit (int); #include <stdarg.h> #include <limits.h> Marek