diff options
author | mpolacek <mpolacek@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-08-12 18:53:33 +0000 |
---|---|---|
committer | mpolacek <mpolacek@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-08-12 18:53:33 +0000 |
commit | 89868e450153621895a3d0706389f1a72343d0c9 (patch) | |
tree | 8fc6633efbe1c9993cf1d8cb8bb403fd0fd330bd | |
parent | 86c7212c03c4f396d098da0d20d7a3a86e3cf6a1 (diff) |
* c-parser.c (c_parser_postfix_expression) <case RID_FUNCTION_NAME>:
Add pedwarn.
(c_parser_postfix_expression) <case RID_PRETTY_FUNCTION_NAME>:
Likewise.
(c_parser_postfix_expression) <case RID_C99_FUNCTION_NAME>: Likewise.
* gcc.dg/concat.c: Add dg-options.
* gcc.dg/func-outside-2.c: Add __extension__.
* gcc.dg/pr19967.c: Use -std=c99.
* gcc.dg/pr22458-1.c: Add dg-options.
* gcc.dg/pr33676.c: Add dg-options.
* gcc.dg/gnu-predef-1.c: New test.
* gcc.dg/c90-func-1.c: New test.
* gcc.dg/c90-func-2.c: New test.
* gcc.dg/c90-func-2.h: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@213875 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/c/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/c/c-parser.c | 16 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 12 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/c90-func-1.c | 10 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/c90-func-2.c | 12 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/c90-func-2.h | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/concat.c | 1 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/func-outside-2.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr19967.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr22458-1.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr33676.c | 1 |
11 files changed, 68 insertions, 4 deletions
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index 154768b2a49..1d553099e9c 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -1,3 +1,11 @@ +2014-08-12 Marek Polacek <polacek@redhat.com> + + * c-parser.c (c_parser_postfix_expression) <case RID_FUNCTION_NAME>: + Add pedwarn. + (c_parser_postfix_expression) <case RID_PRETTY_FUNCTION_NAME>: + Likewise. + (c_parser_postfix_expression) <case RID_C99_FUNCTION_NAME>: Likewise. + 2014-08-10 Marek Polacek <polacek@redhat.com> PR c/51849 diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c index ca8577cd63a..5f23379df8f 100644 --- a/gcc/c/c-parser.c +++ b/gcc/c/c-parser.c @@ -7136,8 +7136,24 @@ c_parser_postfix_expression (c_parser *parser) switch (c_parser_peek_token (parser)->keyword) { case RID_FUNCTION_NAME: + pedwarn (loc, OPT_Wpedantic, "ISO C does not support " + "%<__FUNCTION__%> predefined identifier"); + expr.value = fname_decl (loc, + c_parser_peek_token (parser)->keyword, + c_parser_peek_token (parser)->value); + c_parser_consume_token (parser); + break; case RID_PRETTY_FUNCTION_NAME: + pedwarn (loc, OPT_Wpedantic, "ISO C does not support " + "%<__PRETTY_FUNCTION__%> predefined identifier"); + expr.value = fname_decl (loc, + c_parser_peek_token (parser)->keyword, + c_parser_peek_token (parser)->value); + c_parser_consume_token (parser); + break; case RID_C99_FUNCTION_NAME: + pedwarn_c90 (loc, OPT_Wpedantic, "ISO C90 does not support " + "%<__func__%> predefined identifier"); expr.value = fname_decl (loc, c_parser_peek_token (parser)->keyword, c_parser_peek_token (parser)->value); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 52fdcb5f50e..536485a5f69 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,15 @@ +2014-08-12 Marek Polacek <polacek@redhat.com> + + * gcc.dg/concat.c: Add dg-options. + * gcc.dg/func-outside-2.c: Add __extension__. + * gcc.dg/pr19967.c: Use -std=c99. + * gcc.dg/pr22458-1.c: Add dg-options. + * gcc.dg/pr33676.c: Add dg-options. + * gcc.dg/gnu-predef-1.c: New test. + * gcc.dg/c90-func-1.c: New test. + * gcc.dg/c90-func-2.c: New test. + * gcc.dg/c90-func-2.h: New test. + 2014-08-12 Janis Johnson <janisjo@codesourcery.com> * lib/target/supports.exp diff --git a/gcc/testsuite/gcc.dg/c90-func-1.c b/gcc/testsuite/gcc.dg/c90-func-1.c new file mode 100644 index 00000000000..5f171d3618c --- /dev/null +++ b/gcc/testsuite/gcc.dg/c90-func-1.c @@ -0,0 +1,10 @@ +/* Test that we diagnose the __func__ predefined identifier in + C90 pedantic mode. */ +/* { dg-do compile } */ +/* { dg-options "-std=iso9899:1990 -pedantic-errors" } */ + +void +foo (void) +{ + const char *s = __func__; /* { dg-error " ISO C90 does not support .__func__. predefined identifier" } */ +} diff --git a/gcc/testsuite/gcc.dg/c90-func-2.c b/gcc/testsuite/gcc.dg/c90-func-2.c new file mode 100644 index 00000000000..5185e35db56 --- /dev/null +++ b/gcc/testsuite/gcc.dg/c90-func-2.c @@ -0,0 +1,12 @@ +/* Test that we don't pedwarn about __func__ predefined identifier in + a system header in C90 pedantic mode. */ +/* { dg-do compile } */ +/* { dg-options "-std=iso9899:1990 -pedantic-errors" } */ + +#include "c90-func-2.h" + +void +foo (void) +{ + const char *s = FN; +} diff --git a/gcc/testsuite/gcc.dg/c90-func-2.h b/gcc/testsuite/gcc.dg/c90-func-2.h new file mode 100644 index 00000000000..2bad1bde19c --- /dev/null +++ b/gcc/testsuite/gcc.dg/c90-func-2.h @@ -0,0 +1,2 @@ +#pragma GCC system_header +#define FN __func__ diff --git a/gcc/testsuite/gcc.dg/concat.c b/gcc/testsuite/gcc.dg/concat.c index 0b9d6f6a7c4..e3bfd463240 100644 --- a/gcc/testsuite/gcc.dg/concat.c +++ b/gcc/testsuite/gcc.dg/concat.c @@ -1,6 +1,7 @@ /* Copyright (C) 2001 Free Software Foundation, Inc. */ /* { dg-do compile } */ +/* { dg-options "" } */ /* Test we output an error for concatenation of artificial strings. diff --git a/gcc/testsuite/gcc.dg/func-outside-2.c b/gcc/testsuite/gcc.dg/func-outside-2.c index be3b0999e78..28ef6bced7c 100644 --- a/gcc/testsuite/gcc.dg/func-outside-2.c +++ b/gcc/testsuite/gcc.dg/func-outside-2.c @@ -4,6 +4,6 @@ /* { dg-do compile } */ /* { dg-options "-pedantic-errors" } */ -const char *a = __func__; /* { dg-error "'__func__' is not defined outside of function scope" "undef" } */ -const char *b = __FUNCTION__; -const char *c = __PRETTY_FUNCTION__; +__extension__ const char *a = __func__; /* { dg-error "'__func__' is not defined outside of function scope" "undef" } */ +__extension__ const char *b = __FUNCTION__; +__extension__ const char *c = __PRETTY_FUNCTION__; diff --git a/gcc/testsuite/gcc.dg/pr19967.c b/gcc/testsuite/gcc.dg/pr19967.c index 85afeafe285..68c7e1cb99c 100644 --- a/gcc/testsuite/gcc.dg/pr19967.c +++ b/gcc/testsuite/gcc.dg/pr19967.c @@ -4,7 +4,7 @@ be const char *. */ /* { dg-do compile } */ -/* { dg-options "-pedantic" } */ +/* { dg-options "-pedantic -std=c99" } */ char *strchr(const char *, int); char *strrchr(const char *, int); diff --git a/gcc/testsuite/gcc.dg/pr22458-1.c b/gcc/testsuite/gcc.dg/pr22458-1.c index 8b8032c410a..023fb210c6a 100644 --- a/gcc/testsuite/gcc.dg/pr22458-1.c +++ b/gcc/testsuite/gcc.dg/pr22458-1.c @@ -1,4 +1,6 @@ /* { dg-error "expected declaration or statement" "" { target *-*-* } 0 } */ +/* { dg-options "" } */ + void foo() { __PRETTY_FUNCTION__; diff --git a/gcc/testsuite/gcc.dg/pr33676.c b/gcc/testsuite/gcc.dg/pr33676.c index 79c830eabfb..c2344708c4d 100644 --- a/gcc/testsuite/gcc.dg/pr33676.c +++ b/gcc/testsuite/gcc.dg/pr33676.c @@ -1,4 +1,5 @@ /* { dg-do run } */ +/* { dg-options "" } */ /* { dg-options "-O0 -mtune=i386 -fomit-frame-pointer" { target { { i?86-*-* x86_64-*-* } && ia32 } } } */ __attribute__((noreturn,noinline)) void abrt (const char *fi, const char *fu) |