c-parser.c (c_parser_postfix_expression): Add pedwarn.
* 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. From-SVN: r213875
This commit is contained in:
parent
253e34040c
commit
6dc99c33a6
11 changed files with 68 additions and 4 deletions
|
@ -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>
|
2014-08-10 Marek Polacek <polacek@redhat.com>
|
||||||
|
|
||||||
PR c/51849
|
PR c/51849
|
||||||
|
|
|
@ -7136,8 +7136,24 @@ c_parser_postfix_expression (c_parser *parser)
|
||||||
switch (c_parser_peek_token (parser)->keyword)
|
switch (c_parser_peek_token (parser)->keyword)
|
||||||
{
|
{
|
||||||
case RID_FUNCTION_NAME:
|
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:
|
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:
|
case RID_C99_FUNCTION_NAME:
|
||||||
|
pedwarn_c90 (loc, OPT_Wpedantic, "ISO C90 does not support "
|
||||||
|
"%<__func__%> predefined identifier");
|
||||||
expr.value = fname_decl (loc,
|
expr.value = fname_decl (loc,
|
||||||
c_parser_peek_token (parser)->keyword,
|
c_parser_peek_token (parser)->keyword,
|
||||||
c_parser_peek_token (parser)->value);
|
c_parser_peek_token (parser)->value);
|
||||||
|
|
|
@ -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>
|
2014-08-12 Janis Johnson <janisjo@codesourcery.com>
|
||||||
|
|
||||||
* lib/target/supports.exp
|
* lib/target/supports.exp
|
||||||
|
|
10
gcc/testsuite/gcc.dg/c90-func-1.c
Normal file
10
gcc/testsuite/gcc.dg/c90-func-1.c
Normal file
|
@ -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" } */
|
||||||
|
}
|
12
gcc/testsuite/gcc.dg/c90-func-2.c
Normal file
12
gcc/testsuite/gcc.dg/c90-func-2.c
Normal file
|
@ -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;
|
||||||
|
}
|
2
gcc/testsuite/gcc.dg/c90-func-2.h
Normal file
2
gcc/testsuite/gcc.dg/c90-func-2.h
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
#pragma GCC system_header
|
||||||
|
#define FN __func__
|
|
@ -1,6 +1,7 @@
|
||||||
/* Copyright (C) 2001 Free Software Foundation, Inc. */
|
/* Copyright (C) 2001 Free Software Foundation, Inc. */
|
||||||
|
|
||||||
/* { dg-do compile } */
|
/* { dg-do compile } */
|
||||||
|
/* { dg-options "" } */
|
||||||
|
|
||||||
/* Test we output an error for concatenation of artificial strings.
|
/* Test we output an error for concatenation of artificial strings.
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,6 @@
|
||||||
/* { dg-do compile } */
|
/* { dg-do compile } */
|
||||||
/* { dg-options "-pedantic-errors" } */
|
/* { dg-options "-pedantic-errors" } */
|
||||||
|
|
||||||
const char *a = __func__; /* { dg-error "'__func__' is not defined outside of function scope" "undef" } */
|
__extension__ const char *a = __func__; /* { dg-error "'__func__' is not defined outside of function scope" "undef" } */
|
||||||
const char *b = __FUNCTION__;
|
__extension__ const char *b = __FUNCTION__;
|
||||||
const char *c = __PRETTY_FUNCTION__;
|
__extension__ const char *c = __PRETTY_FUNCTION__;
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
be const char *. */
|
be const char *. */
|
||||||
|
|
||||||
/* { dg-do compile } */
|
/* { dg-do compile } */
|
||||||
/* { dg-options "-pedantic" } */
|
/* { dg-options "-pedantic -std=c99" } */
|
||||||
|
|
||||||
char *strchr(const char *, int);
|
char *strchr(const char *, int);
|
||||||
char *strrchr(const char *, int);
|
char *strrchr(const char *, int);
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
/* { dg-error "expected declaration or statement" "" { target *-*-* } 0 } */
|
/* { dg-error "expected declaration or statement" "" { target *-*-* } 0 } */
|
||||||
|
/* { dg-options "" } */
|
||||||
|
|
||||||
void foo()
|
void foo()
|
||||||
{
|
{
|
||||||
__PRETTY_FUNCTION__;
|
__PRETTY_FUNCTION__;
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
/* { dg-do run } */
|
/* { dg-do run } */
|
||||||
|
/* { dg-options "" } */
|
||||||
/* { dg-options "-O0 -mtune=i386 -fomit-frame-pointer" { target { { i?86-*-* x86_64-*-* } && ia32 } } } */
|
/* { 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)
|
__attribute__((noreturn,noinline)) void abrt (const char *fi, const char *fu)
|
||||||
|
|
Loading…
Add table
Reference in a new issue