diff options
author | Neil Booth <neil@daikokuya.demon.co.uk> | 2002-05-23 18:55:27 +0000 |
---|---|---|
committer | Neil Booth <neil@gcc.gnu.org> | 2002-05-23 18:55:27 +0000 |
commit | 17645b154d8a32a6fad15296e1030d06f5a0456b (patch) | |
tree | ae57a5c0b975e00e24a2e69297727c26a4bc0aae /gcc/cppinit.c | |
parent | 79ed7328ef779277dfd4bca0ab254db30416e6b7 (diff) | |
download | gcc-17645b154d8a32a6fad15296e1030d06f5a0456b.zip gcc-17645b154d8a32a6fad15296e1030d06f5a0456b.tar.gz gcc-17645b154d8a32a6fad15296e1030d06f5a0456b.tar.bz2 |
cppinit.c (mark_named_operators): Split out from init_builtins.
* cppinit.c (mark_named_operators): Split out from init_builtins.
(cpp_finish_options): Call it from here instead.
testsuite:
* gcc.dg/cpp/named_ops.c: New test.
From-SVN: r53803
Diffstat (limited to 'gcc/cppinit.c')
-rw-r--r-- | gcc/cppinit.c | 32 |
1 files changed, 22 insertions, 10 deletions
diff --git a/gcc/cppinit.c b/gcc/cppinit.c index 55451b5..9878241 100644 --- a/gcc/cppinit.c +++ b/gcc/cppinit.c @@ -98,6 +98,7 @@ static void path_include PARAMS ((cpp_reader *, char *, int)); static void init_library PARAMS ((void)); static void init_builtins PARAMS ((cpp_reader *)); +static void mark_named_operators PARAMS ((cpp_reader *)); static void append_include_chain PARAMS ((cpp_reader *, char *, int, int)); static struct search_path * remove_dup_dir PARAMS ((cpp_reader *, @@ -664,6 +665,23 @@ static const struct builtin operator_array[] = }; #undef B +/* Mark the C++ named operators in the hash table. */ +static void +mark_named_operators (pfile) + cpp_reader *pfile; +{ + const struct builtin *b; + + for (b = operator_array; + b < (operator_array + ARRAY_SIZE (operator_array)); + b++) + { + cpp_hashnode *hp = cpp_lookup (pfile, b->name, b->len); + hp->flags |= NODE_OPERATOR; + hp->value.operator = b->value; + } +} + /* Subroutine of cpp_read_main_file; reads the builtins table above and enters them, and language-specific macros, into the hash table. */ static void @@ -682,16 +700,6 @@ init_builtins (pfile) hp->value.builtin = b->value; } - if (CPP_OPTION (pfile, cplusplus) && CPP_OPTION (pfile, operator_names)) - for (b = operator_array; - b < (operator_array + ARRAY_SIZE (operator_array)); - b++) - { - cpp_hashnode *hp = cpp_lookup (pfile, b->name, b->len); - hp->flags |= NODE_OPERATOR; - hp->value.operator = b->value; - } - if (CPP_OPTION (pfile, cplusplus)) _cpp_define_builtin (pfile, "__cplusplus 1"); else if (CPP_OPTION (pfile, objc)) @@ -976,6 +984,10 @@ void cpp_finish_options (pfile) cpp_reader *pfile; { + /* Mark named operators before handling command line macros. */ + if (CPP_OPTION (pfile, cplusplus) && CPP_OPTION (pfile, operator_names)) + mark_named_operators (pfile); + /* Install builtins and process command line macros etc. in the order they appeared, but only if not already preprocessed. */ if (! CPP_OPTION (pfile, preprocessed)) |