2007-01-05  Bill Wendling  <wendling@apple.com>

        Radar 4897123
        * directives.c (_cpp_do_file_change): Array of maps could change after
        the "file_change" callback. We should relookup the map afterwards.

2006-09-18  Bill Wendling  <wendling@apple.com>

        Radar 3222135
        * charset.c (narrow_str_to_charconst): If the -pedantic[-errors] flag
        is set, then issue a warning for multi-character character constants.

2005-02-28  Devang Patel  <dpatel@apple.com>
  	    Ziemowit Laski  <zlaski@apple.com>

	Radar 4137741
        * directives.c (_cpp_do_file_change): If preprocessor
        defer_file_change_debug_hooks flag is set, synthesize CPP_BINCL
        and CPP_EINCL tokens.
        * init.c (cpp_create_reader): Initialize token run (and associated
        pointers) for storing CPP_EINCL tokens.
        * internal.h (struct cpp_reader): Add new fields for storing
        CPP_EINCL tokens.
        (_cpp_next_tokenrun): Add declaration.
        * lex.c (next_tokenrun): Make externally visible and rename to
        _cpp_next_tokenrun().
        (_cpp_temp_token): Call _cpp_next_tokenrun() instead of
        next_tokenrun().
        (_cpp_lex_token): Likewise; return any pending CPP_EINCL tokens
        before returning token actually read.
        * include/cpplib.h (TTYPE_TABLE): Define new CPP_BINCL and CPP_EINCL
        token types, similar to CPP_PRAGMA.
        (cpp_options): Define new defer_file_change_debug_hooks flag.

2006-04-25  Mike Stump  <mrs@apple.com>

	Radar 4505741
	* lex.c: Rename cw_asm_states to iasm_states.
	Rename cw_asm_in_operands to iasm_in_operands.
	Rename cw_asm_state to iasm_state.
	Rename cw_asm_label_follows to iasm_label_follows.
	Rename flag_cw_asm_blocks to flag_iasm_blocks.
	* macro.c: Likewise.
	* makedepend.c: Likewise.	

2006-04-17  Devang Patel  <dpatel@apple.com>

	Radar 4499790
	* charset.c (cpp_interpret_string): Enable pascal strings for wchars.

2005-12-13  Mike Stump  <mrs@apple.com>

	* Revert 2005-12-07  Devang Patel  <dpatel@apple.com> Radar 4137741

2005-12-09  Mike Stump  <mrs@apple.com>

	Radar 4371958
	* macro.c (cpp_get_token): Be sure to reset the BOL flag when
	injecting macro bodies, as we wouldn't want a previous value.

2005-12-07  Devang Patel  <dpatel@apple.com>
   	    Ziemowit Laski  <zlaski@apple.com>

        Radar 4137741
        * directives.c (_cpp_do_file_change): If preprocessor
        defer_file_change_debug_hooks flag is set, synthesize CPP_BINCL
        and CPP_EINCL tokens.
        * init.c (cpp_create_reader): Initialize token run (and associated
        pointers) for storing CPP_EINCL tokens.
        * internal.h (struct cpp_reader): Add new fields for storing
        CPP_EINCL tokens.
        (_cpp_next_tokenrun): Add declaration.
        * lex.c (next_tokenrun): Make externally visible and rename to
        _cpp_next_tokenrun().
        (_cpp_temp_token): Call _cpp_next_tokenrun() instead of
        next_tokenrun().
        (_cpp_lex_token): Likewise; return any pending CPP_EINCL tokens
        before returning token actually read.
        * include/cpplib.h (TTYPE_TABLE): Define new CPP_BINCL and CPP_EINCL
        token types, similar to CPP_PRAGMA.
        (cpp_options): Define new defer_file_change_debug_hooks flag.

2005-08-22  Mike Stump  <mrs@apple.com>

	Radar 4211954
	* expr.c (interpret_int_suffix): Add support for the h suffix to
	identify hex integers.	
	(cpp_classify_number): Likewise.
	(cpp_interpret_integer): Likewise.
	* include/cpplib.h (struct cpp_options): Likewise.
	
2005-06-15  Geoffrey Keating  <geoffk@apple.com>

	* lex.c (warn_about_normalization): Add cast to 'sz'.
	* macro.c (cpp_get_token): Use cast on 'result' rather than making
	it non-const.
	* pch.c (cpp_read_state): Don't mix declarations and code.

2005-06-01  Devang Patel  <dpatel@apple.com>

	Radar 4133801
	* include/cpplib.h (CPP_BINCL, CPP_EINCL):  New.

2005-04-21  Devang Patel  <dpatel@apple.com>

	Radar 4058553
	Backport from FSF Mainline.
	2005-04-19  Per Bothner  <per@bothner.com>

	PR preprocessor/20907
	* line-map.c (linemap_line_start): Fix bug when we need to increse
	column_bits but can re-use the current line_map.

2005-03-11  Devang Patel  <dpatel@apple.com.

	* diretives.c: Fix white space.

2005-03-06  Devang Patel  <dpatel@apple.com>

	* init.c (cpp_read_main_file): Remove Symbol Separation support.
	* internal.h (cpp_cinfo_state): Remove.
	(struct cpp_reader): Remove Symbol Separation support.
	(find_include_cinfo): Remove.
	* pch.c (count_defs): Remove Symbol Separation support.
	(write_defs): Same.
	(cpp_valid_state): Remove warn_invalid_sr use.
	* directives.c (find_include_cinfo, cpp_symbol_separation_init, 
	cpp_write_symbol_deps, cpp_get_stabs_checksum): Remove.

2005-02-27  Devang Patel  <dpatel@apple.com>

	Radar 3982899
	* directives.c (do_line): Save sysp early before line table is realloc'ed.

2005-02-21  Devang Patel  <dpatel@apple.com>

	Radar 4007432
	* charset.c (_cpp_convert_input): Check '\r' before inserting
	'\n' at the end.

2005-02-17  Devang Patel  <dpatel@apple.com>

	Radar 3958387
	* libcpp/lex.c (_cpp_get_fresh_line): Check warn_newline_at_eof.

2005-01-04  Anders Bertelrud  <anders@apple.com>

	Radar 3871393
	* include/cpplib.h (struct cpp_dir):  Added 'header_map' field. 

2005-01-06  Mike Stump  <mrs@apple.com>

	Radar 3929334
	* files.c (pch_open_file): Add indirection for pch files for distcc.
	(read_from_parent): Add.
	(write_to_parent): Add.
	(init_indirect_pipes): Add.
	(indirect_file): Add.

2004-12-10  Devang Patel  <dpatel@apple.com>

        Undo Radar 3909961
        * libcpp/directivec.c (do_elif): Do not check EOL when -Wextra-tokens is used.

2004-12-10  Devang Patel  <dpatel@apple.com>

        Radar 3909961
        * libcpp/directivec.c (do_elif): Check EOL when -Wextra-tokens is used.

2004-08-03  Stan Shebs  <shebs@apple.com>

	Radar 3368707
	Support for CodeWarrior-style assembly language blocks and
	functions.  
	* include/cpplib.h (CPP_BOL, CPP_EOL): Define.
	* internal.h (struct cpp_context): New field bol_p.
	* lex.c (lex_identifier): Handle special chars in opcodes.
	(cw_asm_label_follows): New global.
	(_cpp_lex_direct): Special handling for @-labels,
	flag end of operands when ';' seen.
	* macro.c (enter_macro_context): Add bol_p argument and use.
	(push_ptoken_context): Seed bol_p field.
	(push_token_context): Ditto.
	(cpp_get_token): Detect tokens at beginning of line and record.
