]> git.ipfire.org Git - thirdparty/gcc.git/commit - libcpp/macro.c
libcpp/
authoraaw <aaw@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 30 Jul 2007 18:29:20 +0000 (18:29 +0000)
committeraaw <aaw@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 30 Jul 2007 18:29:20 +0000 (18:29 +0000)
commitfcde64dc3abc672d1353e44993b839c4db1d5758
treebb584ffda6bfb46d8b03b533da0e2f408e0bbd23
parent81a410b1e4f861bb1eb31c7fa7daedf6bf70abc4
libcpp/
* directives-only.c: New file.
* internal.h (struct _cpp_dir_only_callbacks): New.
(_cpp_preprocess_dir_only): New function.
* directives.c (_cpp_handle_directive): Check directives_only before
disabling execution of indented directives.
* files.c (_cpp_stack_file): Add directives_only check.
* include/cpplib.h (struct cpp_options): Add directives_only.
(cpp_init_special_builtins): New function.
* init.c (cpp_init_special_builtins): New function.
(cpp_init_builtins): Move builtin_array initialization to
cpp_init_special_builtins.
(post_options): Check directives_only before setting
pfile->state.prevent_expansion = 1.
* macro.c (_cpp_builtin_macro_text): Print an error if __COUNTER__
is expanded inside a directive while -fdirectives-only is enabled.
* Makefile.in (libcpp_a_OBJS): Add directives-only.o.
(libcpp_a_SOURCES): Add directives-only.c.

gcc/
* c-ppoutput.c (print_lines_directives_only): New function.
(scan_translation_unit_directives_only): New function.
(preprocess_file): Add call to scan_translation_unit_directives_only.
* c-opts.c (c_common_handle_option): Add OPT_fdirectives_only.
(sanitize_cpp_opts): Add default flag_dump_macros setting for
-fdirectives-only.  Add errors for -fdirectives-only conflict with
-Wunused-macros and -traditional.
(finish_options): Add builtin macro initialization for
-fdirectives-only + -fpreprocessed.
* c.opt (fdirectives-only): New.
* doc/cppopts.texi (fdirectives-only): New.

gcc/testsuite/
* gcc.dg/cpp/counter-2.c: New test.
* gcc.dg/cpp/counter-3.c: New test.
* gcc.dg/cpp/dir-only-1.c: New test.
* gcc.dg/cpp/dir-only-1.h: New file.
* gcc.dg/cpp/dir-only-2.c: New test.
* gcc.dg/cpp/dir-only-3.c: New test.
* gcc.dg/cpp/dir-only-3a.h: New file.
* gcc.dg/cpp/dir-only-3b.h: New file.
* gcc.dg/cpp/dir-only-4.c: New test.
* gcc.dg/cpp/dir-only-5.c: New test.
* gcc.dg/cpp/dir-only-6.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@127066 138bc75d-0d04-0410-961f-82ee72b054a4
26 files changed:
gcc/ChangeLog
gcc/c-opts.c
gcc/c-ppoutput.c
gcc/c.opt
gcc/doc/cppopts.texi
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/cpp/counter-2.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/cpp/counter-3.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/cpp/dir-only-1.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/cpp/dir-only-1.h [new file with mode: 0644]
gcc/testsuite/gcc.dg/cpp/dir-only-2.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/cpp/dir-only-3.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/cpp/dir-only-3a.h [new file with mode: 0644]
gcc/testsuite/gcc.dg/cpp/dir-only-3b.h [new file with mode: 0644]
gcc/testsuite/gcc.dg/cpp/dir-only-4.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/cpp/dir-only-5.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/cpp/dir-only-6.c [new file with mode: 0644]
libcpp/ChangeLog
libcpp/Makefile.in
libcpp/directives-only.c [new file with mode: 0644]
libcpp/directives.c
libcpp/files.c
libcpp/include/cpplib.h
libcpp/init.c
libcpp/internal.h
libcpp/macro.c