gcc-patches@gcc.gnu.org
[Top] [All Lists]

Re: [patch]: Add push_macro/pop_macro feature for all targets by movin

Subject: Re: [patch]: Add push_macro/pop_macro feature for all targets by moving it from C frontent into libcpp
From: Kai Tietz
Date: Fri, 6 Nov 2009 10:38:59 +0100
I have added to this patch a tests for pch.

ChangeLog for libcpp

2009-11-03  Kai Tietz  <kai.tietz@xxxxxxxxxxxxx>

        * directives.c (do_pragma_push_macro): New pragma handler.
        (do_pragma_pop_macro): Likewise.
        (_cpp_init_internal_pragmas): Add push_macro and
        pop_macro handler to internal pragmas.
        (lex_macro_node_from_str): Removed.
        (cpp_push_definition): Replace lex_macro_node_from_str
        by _cpp_lex_identifier.
        (cpp_pop_definition): Likewise.
        * internal.h (_cpp_lex_identifier): New prototype.
        (def_pragma_macro): New structure.
        (cpp_reader): New member pushed_macros.
        * lex.c (_cpp_lex_identifier): New function.
        (lex_identifier_intern): New function.
        * init.c (cpp_create_reader): Initialize pushed_macros
        member.
        (cpp_destroy): Free elements in pushed_macros member.
        * pch.c (_cpp_save_pushed_macros): New function.
        (_cpp_restore_pushed_macros): Likewise.
        (_cpp_restore_pushed_macros): Use _cpp_save_pushed_macros.
        (cpp_read_state): Use _cpp_restore_pushed_macros.

ChangeLog for gcc

2009-11-03  Kai Tietz  <kai.tietz@xxxxxxxxxxxxx>

        * config/i386/cygming.h (HANDLE_PRAGMA_PUSH_POP_MACRO):
        Removed.
        * c-pragma.c (def_pragma_macro_value): Likewise.
        (def_pragma_macro): Likewise.
        (pushed_macro_table): Likewise.
        (HANDLE_PRAGMA_PUSH_POP_MACRO): Remove guarded
        code.
        * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO):
        Removed.

ChangeLog for gcc/testsuite

2009-11-03  Kai Tietz  <kai.tietz@xxxxxxxxxxxxx>

        * g++.dg/torture/pushpop_macro.C: New testcase.
        * gcc.c-torture/execute/pushpop_macro.c: New testcase.
        * gcc.dg/cpp/pragma-pop_macro-1.c: Allow test for all
        targets.
        * gcc.dg/pch/pushpop-1.c: New.
        * gcc.dg/pch/pushpop-1.hs: New.

Tested for i686-pc-mingw32, x86_64-pc-mingw32, i686-pc-linux, and
i686-pc-cygwin.
Ok for apply?
-- 
|  (\_/) This is Bunny. Copy and paste
| (='.'=) Bunny into your signature to help
| (")_(") him gain world domination
<Prev in Thread] Current Thread [Next in Thread>