cppopts.texi (-dU): Document.
gcc: * doc/cppopts.texi (-dU): Document. * c-common.h (flag_dump_macros): Update comment. * c-opts.c (handle_OPT_d): Handle -dU. * c-ppoutput.c (macro_queue, define_queue, undef_queue, dump_queued_macros, cb_used_define, cb_used_undef): New. (init_pp_output): Handle -dU. (cb_line_change): Call dump_queued_macros. * toplev.c (decode_d_option): Accept -dU as preprocessor option. gcc/testsuite: * gcc.dg/cpp/cmdlne-dU-1.c, gcc.dg/cpp/cmdlne-dU-2.c, gcc.dg/cpp/cmdlne-dU-3.c, gcc.dg/cpp/cmdlne-dU-4.c, gcc.dg/cpp/cmdlne-dU-5.c, gcc.dg/cpp/cmdlne-dU-6.c, gcc.dg/cpp/cmdlne-dU-7.c, gcc.dg/cpp/cmdlne-dU-8.c, gcc.dg/cpp/cmdlne-dU-9.c, gcc.dg/cpp/cmdlne-dU-10.c, gcc.dg/cpp/cmdlne-dU-11.c, gcc.dg/cpp/cmdlne-dU-12.c, gcc.dg/cpp/cmdlne-dU-13.c, gcc.dg/cpp/cmdlne-dU-14.c, gcc.dg/cpp/cmdlne-dU-15.c, gcc.dg/cpp/cmdlne-dU-16.c, gcc.dg/cpp/cmdlne-dU-17.c, gcc.dg/cpp/cmdlne-dU-18.c, gcc.dg/cpp/cmdlne-dU-19.c, gcc.dg/cpp/cmdlne-dU-20.c, gcc.dg/cpp/cmdlne-dU-21.c, gcc.dg/cpp/cmdlne-dU-22.c: New tests. libcpp: * include/cpplib.h (struct cpp_callbacks): Add used_define, used_undef and before_define. (NODE_USED): Define. * directives.c (do_define, do_undef, undefine_macros, do_ifdef, do_ifndef, cpp_pop_definition): Handle new flag and use new callbacks. * expr.c (parse_defined): Handle new flag and use new callbacks. * macro.c (enter_macro_context, _cpp_free_definition): Handle new flag and use new callbacks. From-SVN: r133847
This commit is contained in:
parent
e6b69d0e56
commit
93d45d9eda
34 changed files with 360 additions and 6 deletions
|
@ -480,6 +480,14 @@ struct cpp_callbacks
|
|||
This callback receives the translated message. */
|
||||
void (*error) (cpp_reader *, int, const char *, va_list *)
|
||||
ATTRIBUTE_FPTR_PRINTF(3,0);
|
||||
|
||||
/* Callbacks for when a macro is expanded, or tested (whether
|
||||
defined or not at the time) in #ifdef, #ifndef or "defined". */
|
||||
void (*used_define) (cpp_reader *, unsigned int, cpp_hashnode *);
|
||||
void (*used_undef) (cpp_reader *, unsigned int, cpp_hashnode *);
|
||||
/* Called before #define and #undef or other macro definition
|
||||
changes are processed. */
|
||||
void (*before_define) (cpp_reader *);
|
||||
};
|
||||
|
||||
/* Chain of directories to look for include files in. */
|
||||
|
@ -537,6 +545,7 @@ extern const char *progname;
|
|||
#define NODE_WARN (1 << 4) /* Warn if redefined or undefined. */
|
||||
#define NODE_DISABLED (1 << 5) /* A disabled macro. */
|
||||
#define NODE_MACRO_ARG (1 << 6) /* Used during #define processing. */
|
||||
#define NODE_USED (1 << 7) /* Dumped with -dU. */
|
||||
|
||||
/* Different flavors of hash node. */
|
||||
enum node_type
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue