mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-11-23 19:03:59 +08:00
re PR preprocessor/28227 (valid #ifdef rejected)
libcpp PR preprocessor/28227: * directives.c (lex_macro_node): Added 'is_def_or_undef' argument. (do_define): Update. (do_undef): Update. (do_ifdef): Update. (do_ifndef): Update. gcc/testsuite PR preprocessor/28227: * gcc.dg/cpp/pr28227.c: New file. From-SVN: r120731
This commit is contained in:
parent
3d283195f7
commit
ee1c2a100a
@ -1,3 +1,8 @@
|
||||
2007-01-12 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
PR preprocessor/28227:
|
||||
* gcc.dg/cpp/pr28227.c: New file.
|
||||
|
||||
2007-01-11 Zdenek Dvorak <dvorakz@suse.cz>
|
||||
|
||||
* gcc.dg/tree-ssa/loop-22.c: New test.
|
||||
|
10
gcc/testsuite/gcc.dg/cpp/pr28227.c
Normal file
10
gcc/testsuite/gcc.dg/cpp/pr28227.c
Normal file
@ -0,0 +1,10 @@
|
||||
/* Copyright (C) 2007 Free Software Foundation, Inc. */
|
||||
/* PR preprocessor/28227 */
|
||||
|
||||
/* { dg-do preprocess } */
|
||||
#ifdef defined
|
||||
#endif
|
||||
#ifndef defined
|
||||
#endif
|
||||
|
||||
int x;
|
@ -1,3 +1,13 @@
|
||||
2007-01-12 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
PR preprocessor/28227:
|
||||
* directives.c (lex_macro_node): Added 'is_def_or_undef'
|
||||
argument.
|
||||
(do_define): Update.
|
||||
(do_undef): Update.
|
||||
(do_ifdef): Update.
|
||||
(do_ifndef): Update.
|
||||
|
||||
2007-01-11 Paolo Bonzini <bonzini@gnu.org>
|
||||
|
||||
* configure: Regenerate.
|
||||
|
@ -103,7 +103,7 @@ static void push_conditional (cpp_reader *, int, int, const cpp_hashnode *);
|
||||
static unsigned int read_flag (cpp_reader *, unsigned int);
|
||||
static int strtoul_for_line (const uchar *, unsigned int, unsigned long *);
|
||||
static void do_diagnostic (cpp_reader *, int, int);
|
||||
static cpp_hashnode *lex_macro_node (cpp_reader *);
|
||||
static cpp_hashnode *lex_macro_node (cpp_reader *, bool);
|
||||
static int undefine_macros (cpp_reader *, cpp_hashnode *, void *);
|
||||
static void do_include_common (cpp_reader *, enum include_type);
|
||||
static struct pragma_entry *lookup_pragma_entry (struct pragma_entry *,
|
||||
@ -503,9 +503,11 @@ run_directive (cpp_reader *pfile, int dir_no, const char *buf, size_t count)
|
||||
}
|
||||
|
||||
/* Checks for validity the macro name in #define, #undef, #ifdef and
|
||||
#ifndef directives. */
|
||||
#ifndef directives. IS_DEF_OR_UNDEF is true if this call is
|
||||
processing a #define or #undefine directive, and false
|
||||
otherwise. */
|
||||
static cpp_hashnode *
|
||||
lex_macro_node (cpp_reader *pfile)
|
||||
lex_macro_node (cpp_reader *pfile, bool is_def_or_undef)
|
||||
{
|
||||
const cpp_token *token = _cpp_lex_token (pfile);
|
||||
|
||||
@ -520,7 +522,7 @@ lex_macro_node (cpp_reader *pfile)
|
||||
{
|
||||
cpp_hashnode *node = token->val.node;
|
||||
|
||||
if (node == pfile->spec_nodes.n_defined)
|
||||
if (is_def_or_undef && node == pfile->spec_nodes.n_defined)
|
||||
cpp_error (pfile, CPP_DL_ERROR,
|
||||
"\"defined\" cannot be used as a macro name");
|
||||
else if (! (node->flags & NODE_POISONED))
|
||||
@ -543,7 +545,7 @@ lex_macro_node (cpp_reader *pfile)
|
||||
static void
|
||||
do_define (cpp_reader *pfile)
|
||||
{
|
||||
cpp_hashnode *node = lex_macro_node (pfile);
|
||||
cpp_hashnode *node = lex_macro_node (pfile, true);
|
||||
|
||||
if (node)
|
||||
{
|
||||
@ -562,7 +564,7 @@ do_define (cpp_reader *pfile)
|
||||
static void
|
||||
do_undef (cpp_reader *pfile)
|
||||
{
|
||||
cpp_hashnode *node = lex_macro_node (pfile);
|
||||
cpp_hashnode *node = lex_macro_node (pfile, true);
|
||||
|
||||
if (node)
|
||||
{
|
||||
@ -1606,7 +1608,7 @@ do_ifdef (cpp_reader *pfile)
|
||||
|
||||
if (! pfile->state.skipping)
|
||||
{
|
||||
const cpp_hashnode *node = lex_macro_node (pfile);
|
||||
const cpp_hashnode *node = lex_macro_node (pfile, false);
|
||||
|
||||
if (node)
|
||||
{
|
||||
@ -1628,7 +1630,7 @@ do_ifndef (cpp_reader *pfile)
|
||||
|
||||
if (! pfile->state.skipping)
|
||||
{
|
||||
node = lex_macro_node (pfile);
|
||||
node = lex_macro_node (pfile, false);
|
||||
|
||||
if (node)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user