• zack's avatar
    * cpplib.h (cpp_reader): Remove if_stack. Change · c4357c92
    zack authored
    	potential_control_macro to a cpp_hashnode *.  Add skipping flag.
    	* cpphash.h (struct ihash): Change control_macro to a
    	cpp_hashnode * and shorten name to cmacro.
    	Add NEVER_REINCLUDE constant.
    
    	* cppfiles.c (redundant_include_p): Drop cpp_reader argument.
    	Examine the cmacro node directly, no need to call cpp_defined.
    	(_cpp_execute_include, read_include_file): Set cmacro to
    	NEVER_REINCLUDE, not U"".
    	* cpplex.c (cpp_push_buffer): Don't set new->if_stack.
    	(cpp_get_token): If pfile->skipping is true, discard text and
    	keep scanning until we hit a directive; don't expand macros.
    
    	* cpplib.c (struct if_stack): Remove if_succeeded, add
    	was_skipping. Change control_macro to a cpp_hashnode * and
    	shorten name to cmacro.  Remove typedef IF_STACK.
    	(parse_ifdef), detect_if_not_defined): Return a cpp_hashnode *.
    	(conditional_skip, skip_if_group,
    	consider_directive_while_skipping): Delete.
    	(push_conditional): New.
    	(_cpp_handle_directive): Don't process directives other than
    	conditionals if we are skipping.
    
    	(do_ifdef, do_ifndef, do_if, do_else, do_elif, do_endif):
    	Update to new scheme.
    	(validate_else): Skip rest of line here, unconditionally.
    	(_cpp_unwind_if_stack): The stack is per-buffer.  Force
    	pfile->skipping off.
    
    	(all): Remove `scare quotes' from error messages.
    
    	* gcc.dg/cpp-mi.c: Add another case, cpp-mix.h, where the
    	guard macro is already defined when the header is first
    	included.
    	* gcc.dg/cpp-mix.h: New file.
    	* gcc.dg/endif-label.c: Update patterns to match compiler.
    
    	* g++.brendan/complex1.C: Declare abort.
    	* g++.law/refs4.C: Remove XFAIL.
    	* g++.oliva/expr2.C: Declare abort and exit.
    
    
    git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@34253 138bc75d-0d04-0410-961f-82ee72b054a4
    c4357c92
cpplib.c 43.8 KB