aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormpolacek <mpolacek@138bc75d-0d04-0410-961f-82ee72b054a4>2014-08-12 18:53:33 +0000
committermpolacek <mpolacek@138bc75d-0d04-0410-961f-82ee72b054a4>2014-08-12 18:53:33 +0000
commit89868e450153621895a3d0706389f1a72343d0c9 (patch)
tree8fc6633efbe1c9993cf1d8cb8bb403fd0fd330bd
parent86c7212c03c4f396d098da0d20d7a3a86e3cf6a1 (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/ChangeLog8
-rw-r--r--gcc/c/c-parser.c16
-rw-r--r--gcc/testsuite/ChangeLog12
-rw-r--r--gcc/testsuite/gcc.dg/c90-func-1.c10
-rw-r--r--gcc/testsuite/gcc.dg/c90-func-2.c12
-rw-r--r--gcc/testsuite/gcc.dg/c90-func-2.h2
-rw-r--r--gcc/testsuite/gcc.dg/concat.c1
-rw-r--r--gcc/testsuite/gcc.dg/func-outside-2.c6
-rw-r--r--gcc/testsuite/gcc.dg/pr19967.c2
-rw-r--r--gcc/testsuite/gcc.dg/pr22458-1.c2
-rw-r--r--gcc/testsuite/gcc.dg/pr33676.c1
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)