2008-08-04  Bill Wendling  <wendling@apple.com>

        Radar 6121572
        * charset.c (_cpp_convert_input): Don't read to.text[-1].

2008-05-01  Mike Stump  <mrs@apple.com>

	Radar 5774975
	* charset.c (_cpp_convert_input): Eat UTF-8 BOM.

2007-05-17  Fariborz Jahanian <fjahanian@apple.com>

        Radar 2996215
        * charset.c (cpp_utf8_utf16): New
        * include/cpplib.h (cpp_utf8_utf16): New decl.

2007-05-02  Eric Christopher  <echristo@apple.com>

	Radar 4238322
	* expr.c (num_div_op): Don't overflow if the result is
	zero.

2007-02-22  Geoffrey Keating  <geoffk@apple.com>

	Radar 4927549
	* init.c (lang_defaults): Enable extended identifiers by default
	for languages which require them.

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.
