diff options
Diffstat (limited to 'gcc/testsuite/gcc.dg')
-rw-r--r-- | gcc/testsuite/gcc.dg/funcdef-storage-1.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr18596-1.c | 36 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr18596-2.c | 39 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr18596-3.c | 14 |
4 files changed, 87 insertions, 8 deletions
diff --git a/gcc/testsuite/gcc.dg/funcdef-storage-1.c b/gcc/testsuite/gcc.dg/funcdef-storage-1.c index 7ced3a14b2e..9aa963a0288 100644 --- a/gcc/testsuite/gcc.dg/funcdef-storage-1.c +++ b/gcc/testsuite/gcc.dg/funcdef-storage-1.c @@ -1,5 +1,4 @@ /* { dg-do compile } */ -/* { dg-options "" } */ void flarm(void) @@ -8,8 +7,3 @@ flarm(void) foo(); } - -static void -foo(void) -{ -} diff --git a/gcc/testsuite/gcc.dg/pr18596-1.c b/gcc/testsuite/gcc.dg/pr18596-1.c index 055d60a4a75..dc34f444e5d 100644 --- a/gcc/testsuite/gcc.dg/pr18596-1.c +++ b/gcc/testsuite/gcc.dg/pr18596-1.c @@ -1,7 +1,39 @@ /* { dg-do compile } */ +/* { dg-options "-fno-unit-at-a-time" } */ + int f(int i) { - static int g(); /* { dg-warning "invalid storage class" } */ - static int g() { return i; } /* { dg-warning "invalid storage class" } */ + static int g(); /* { dg-error "invalid storage class" } */ + static int g() { return i; } /* { dg-error "invalid storage class" } */ return g(); } + +int k (int i) +{ + static int g (); /* { dg-error "invalid storage class" } */ + int g () { + return i; + } + + return g (); +} + +int l (int i) +{ + auto int g (); + static int g () { /* { dg-error "invalid storage class" } */ + return i; + } + + static int h () { /* { dg-error "invalid storage class" } */ + return 3; + } + return g () + h (); +} + +int m (int i) +{ + static g (); /* { dg-error "invalid storage class" } */ + static g () { return i; } /* { dg-error "invalid storage class" } */ + return g (); +} diff --git a/gcc/testsuite/gcc.dg/pr18596-2.c b/gcc/testsuite/gcc.dg/pr18596-2.c new file mode 100644 index 00000000000..7a52e807d38 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr18596-2.c @@ -0,0 +1,39 @@ +/* { dg-do compile } */ +/* { dg-options "-funit-at-a-time" } */ + +int f(int i) +{ + static int g(); /* { dg-error "invalid storage class" } */ + static int g() { return i; } /* { dg-error "invalid storage class" } */ + return g(); +} + +int k (int i) +{ + static int g (); /* { dg-error "invalid storage class" } */ + int g () { + return i; + } + + return g (); +} + +int l (int i) +{ + auto int g (); + static int g () { /* { dg-error "invalid storage class" } */ + return i; + } + + static int h () { /* { dg-error "invalid storage class" } */ + return 3; + } + return g () + h (); +} + +int m (int i) +{ + static g (); /* { dg-error "invalid storage class" } */ + static g () { return i; } /* { dg-error "invalid storage class" } */ + return g (); +} diff --git a/gcc/testsuite/gcc.dg/pr18596-3.c b/gcc/testsuite/gcc.dg/pr18596-3.c new file mode 100644 index 00000000000..be17e7ca4b3 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr18596-3.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* { dg-options "" } */ + +int foo () +{ + static g () = 0; /* { dg-error "invalid storage class" } */ + static int f () = 1; /* { dg-error "invalid storage class" } */ + auto int h () = 0; /* { dg-error "initialized like a variable" } */ + static int i () = { 0 }; /* { dg-error "invalid storage class" } */ + static int j () = /* { dg-error "invalid storage class" } */ + { 0, 0.0 }; +} +/* { dg-warning "excess elements" "" { target *-*-* } 11 } */ +/* { dg-warning "near initialization" "" { target *-*-* } 11 } */ |