Changelog of the TIGCC-local changes to GCC (4.0 branch):

2005-09-29  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * Rebase GCC to 4.0.2 release (identical to the 20050924 snapshot except for the missing
          PR 23043 fix).
        * version.c: Update version number.
        * Reapply PR 23043 fix from 20050924 snapshot:
          2005-09-21  Andreas Schwab  <schwab@suse.de>
            PR rtl-optimization/23043
            * postreload-gcse.c (eliminate_partially_redundant_load): Fix typo
                when allocating a struct unoccr.
        * Merge PR 24109 fix (gcc4-pr24109.patch) from Fedora GCC:
          2005-09-29  Jakub Jelinek  <jakub@redhat.com>
            * c-decl.c (c_write_global_declarations_1): If any
                wrapup_global_declaration_2 call returned true, restart the loop.

2005-09-24  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * Update GCC to 4.0 20050924 (post-4.0.2 snapshot).
        * version.c: Update version number.
        * Drop patch for PR 21828 (fixed upstream):
          2005-06-27  Kevin Kofler  <Kevin@tigcc.ticalc.org>
            * toplev.c (check_global_declarations): Don't ignore BSS variables for debugging info.
        * Merge DWARF 2 patches/backports from Fedora GCC:
          - gcc4-dwarf2-pr20268.patch
            2005-03-30  James E. Wilson  <wilson@specifixinc.com>
              PR debug/20268
              * dwarf2out.c (add_high_low_attributes): New function, extracted from
                                                       gen_lexical_block_die.
                (gen_lexical_block_die, gen_inlined_subroutine_die): Call it.
          - gcc4-dwarf2-inline-details.patch
            2005-07-25  James E Wilson  <wilson@specifixinc.com>
              * dwarf2out.c (add_call_src_coords_attributes): New.
                (gen_inlined_subroutine_die): Call it.
                (maybe_emit_file, init_file_table): Add comments.
                (prune_unused_types_walk_attribs): Pass DW_AT_call_file through
                                                   maybe_emit_file.
              * tree-inline.c (remap_block): Copy BLOCK_SOURCE_LOCATION.
                (expand_call_inline): Set BLOCK_SOURCE_LOCATION.
              * tree.h (BLOCK_SOURCE_LOCATION): New.
                (struct tree_block): New field locus.
          - gcc4-dwarf2-usefbreg.patch
            2005-08-10  Jakub Jelinek  <jakub@redhat.com>
              * dwarf2out.c (concat_loc_descriptor): Add can_use_fbreg argument,
                                                     pass it down to loc_descriptor.
                (loc_descriptor): Pass can_use_fbreg to concat_loc_descriptor.
                (containing_function_has_frame_base): Move earlier in the file.
                (loc_descriptor_from_tree_1): Use containing_function_has_frame_base
                                              instead of always assuming fbreg can't be used.
          - gcc4-dwarf2-prefer-1elt-vartracking.patch
            2005-08-10  Jakub Jelinek  <jakub@redhat.com>
              * dwarf2out.c (add_location_or_const_value_attribute): Prefer locations
                  gathered by var-tracking in single entry loc_list over loc_descriptor_from_tree.
          - gcc4-dwarf2-frame_base.patch
            2005-08-22  Richard Henderson  <rth@redhat.com>
              * function.c (ARG_POINTER_CFA_OFFSET): Move ...
              * defaults.h (ARG_POINTER_CFA_OFFSET): ... here.
                (INCOMING_FRAME_SP_OFFSET): Moved from ...
              * dwarf2out.c (INCOMING_FRAME_SP_OFFSET): ... here.
                (struct cfa_loc): Change reg to unsigned int,
                                  rearrange for better packing.
                (lookup_cfa_1): Remove inline marker.
                (cfa_equal_p): Split out of ...
                (def_cfa_1): ... here.  Use INVALID_REGNUM.
                (build_cfa_loc): Handle !cfa->indirect.
                (frame_pointer_cfa_offset): New.
                (dbx_reg_number): Assert register elimination performed; do
                                  leaf register remapping.
                (reg_loc_descriptor): Avoid calling dbx_reg_number when unused.
                (eliminate_reg_to_offset): New.
                (based_loc_descr): Remove can_use_fbreg argument.  Use fbreg only
                                   for verifiably local stack frame addresses; re-base to CFA.
                (mem_loc_descriptor): Remove can_use_fbreg argument.
                (concat_loc_descriptor, loc_descriptor): Likewise.
                (containing_function_has_frame_base): Remove.
                (rtl_for_decl_location): Don't do register elimination or
                                         leaf register remapping here.
                (secname_for_decl): Split out from ..
                (add_location_or_const_value_attribute): ... here.
                (convert_cfa_to_loc_list): New.
                (compute_frame_pointer_to_cfa_displacement): New.
                (gen_subprogram_die): Use them.
              * tree.h (frame_base_decl): Remove.
              * var-tracking.c (frame_base_decl, frame_stack_adjust): Remove.
                (prologue_stack_adjust): Remove.
                (vt_stack_adjustments): Use INCOMING_FRAME_SP_OFFSET.
                (adjust_stack_reference): Re-base memories to arg_pointer_rtx.
                (set_frame_base_location): Remove.
                (compute_bb_dataflow, emit_notes_in_bb): Don't call it.
                (dump_attrs_list, dump_dataflow_set): Use string concatenation.
                (vt_add_function_parameters): Don't eliminate_regs.
                (vt_initialize): Don't create frame_base_decl.
        * m68k.c (m68k_regno_mode_ok): Don't reject bytes in address registers if !TARGET_COLDFIRE.

2005-07-01  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * Update GCC to 4.0 20050630 (4.0.1-pre snapshot).
        * version.c: Update version number.

2005-06-27  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * toplev.c (check_global_declarations): Don't ignore BSS variables for debugging info.

2005-06-03  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * config/m68k/m68k-ti.h (CPP_SPEC): Define to CPP_SUBTARGET_SPEC.

2005-05-17  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * varasm.c (default_section_type_flags_1): Make sure DECL_INITIAL (decl) is non-null before
                                                   using it.
          (asm_emit_uninitialised): Add one more check for flag_data_sections && TARGET_NO_BSS.
        * config/m68k/m68k-ti.h (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL): Call data_section before
                                                                       emitting variables.

2005-05-07  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * dwarf2out.c (output_call_frame_info): Don't output .eh_frame section.

2005-05-05  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * dwarf2out.c (dwarf2out_start_source_file): Use the correct file number.

2005-04-30  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * Update GCC to 4.0.0.
        * version.c: Update version number to 4.0.0-tigcc-1.

2005-04-24  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * gcc/config/m68k/m68k.c (m68k_cannot_force_const_mem): New static function.
          (TARGET_CANNOT_FORCE_CONST_MEM): Define to m68k_cannot_force_const_mem.

2005-04-24  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * gcc/varasm.c (assemble_asm): Emit .loc directive. Switch to the text section before the
                                       asm and reset the stored section afterwards.
        * gcc/dwarf2out.c (dwarf2out_source_line): Don't crash if no current_function_decl.

2005-04-20  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * gcc/toplev.c (set_src_pwd): Eliminate duplicate backslashes from Win32 path names.

2005-04-09  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * gcc/dwarf2.h (enum dwarf_attribute): Add DW_AT_regparm_location.
        * gcc/dwarf2out.c (dwarf_attr_name): Likewise.
          (gen_formal_types_die, gen_subprogram_die): Emit DW_AT_regparm_location entries for
                                                      register parameters.

2005-04-07  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * gcc/config/m68k/m68k.c (m68k_output_function_prologue): Fix off-by-4 in the unwinding
            information for the !frame_pointer_needed case.

2005-04-03  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * gcc/config/m68k/m68k-ti.h (DWARF2_ASM_LINE_DEBUG_INFO): Define.

2005-04-03  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * gcc/config/m68k/m68k-ti.h (DWARF2_DEBUGGING_INFO, DWARF2_UNWIND_INFO): Define.
        * gcc/dwarf2out.c (add_const_value_attribute): Don't assume sizeof(float) is divisible by
                                                       4.

2005-03-24  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * gcc/rtlanal.c (subreg_regno_offset, subreg_offset_representable_p): Special-case
            GET_MODE_SIZE (xmode) == 10.

2005-03-23  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * Update GCC to 4.0-20050319.
        * Revert pessimization:
          2005-03-11  David Edelsohn  <edelsohn@gnu.org>
        	PR rtl-optimization/20306
        	* expr.c (emit_move_complex): Set try_int false if mode is
        	MODE_COMPLEX_FLOAT and mov_optab exists for inner mode.  Only try
        	emit_block_move if try_int is true.

2005-03-06  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * Update GCC to 4.0-20050305.
        * gcc/c-opts.c (c_common_post_options): Don't use libcall method for complex
            multiplication/division, as we currently have no such libcalls.

2005-02-17  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * gcc/c-opts.c (c_common_init_options): Enable -fms-extensions by default.
          (c_common_handle_option): Disable it for -pedantic and -pedantic-errors.

2005-02-17  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * gcc/opts.c (decode_options): Change default max-inline-insn-auto for -O3 (but not -O4 or
            higher) from 120 to 60. Enable -finline-functions by default at -O2 and set
            max-inline-insn-auto to 5 (as for -Os).

2005-02-16  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * Update GCC to 4.0-20050213.
        * gcc/optabs.c (expand_absneg_bit, expand_copysign_bit): Disable.
        * gcc/real.c (REAL_MODE_FORMAT_COMPOSITE_P): Disable.
        * gcc/config/smapbcd.h (REAL_MODE_FORMAT_COMPOSITE_P): Define to 0.
        * gcc/machmode.def (BF, XF): Move...
        * gcc/config/m68k/m68k-modes.def (BF, XF): ... here.

2005-02-16  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * gcc/tree-ssa-pre.c (eliminate): Honor -fno-function-cse.
        * gcc/tree-ssa-dom.c (optimize_stmt): Fix overconservative -fno-function-cse call sequence
                                              test.

2005-02-16  Kevin Kofler  <Kevin@tigcc.ticalc.org>

       * gcc/config/m68k/m68k.md (unnamed argument passing peepholes): AND the least significant
           word with 0xFFFF to make sure the most significant word isn't off by one if it is <0.

2005-02-16  Kevin Kofler  <Kevin@tigcc.ticalc.org>

       * gcc/real.c (real_from_integer): Cast 10 to HOST_WIDE_INT before shifting.

2005-02-13  Kevin Kofler  <Kevin@tigcc.ticalc.org>

       * gcc/opts.c (decode_options): Don't enable flag_delete_null_pointer_checks by default.

2005-02-13  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * gcc/config/m68k/m68k.md (unnamed peephole2s): Check REG_P before checking REGNO.
          (5 new unnamed peephole2s): Optimize redundant code generated by the zero_extend
                                      splitters.

2005-02-13  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * gcc/config/m68k/m68k.c (const_method): Don't declare static.
        * gcc/postreload.c (reload_cse_move2add): Prototype and use it. Don't do the
          strict_low_part optimization for QImode, nor for long moves which can be done using
          moveq.

2005-02-12  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * gcc/c.opt (-Wpointer-sign): Disable by default.

2005-02-12  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * libcpp/internal.h (struct cpp_reader): Remove boolean lexing_mls member.
        * libcpp/lex.c (parse_string): Don't set it.
          (_cpp_clean_string): Don't check it. Always change "\r\n" into "\n\r", not "\n\n".
          (create_literal): Delete \r characters based on the given string length, not on the C
                            string length. Don't use strchr.

2005-02-12  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * gcc/c-parse.in (stmts_and_decls): Don't error about labels at end of compound statements,
                                            only pedwarn if pedantic.
        * libcpp/lex.c (lex_string): Pedwarn about multi-line string literals if pedantic.
        * libcpp/expr.c (cpp_classify_number): Pedwarn about binary (0b...) constants if pedantic.

2005-02-11  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * gcc/config/m68k.md (unnamed peephole2s): Fix "constraints not supported in
            define_peephole2" warnings. Don't optimize a push into a move for operands in the range
            for a moveq. Use a pea or moveq instead depending on whether a stack adjust is needed
            anyway or not. New unnamed peephole2 for the moveq case.
          (unnamed peephole for stack adjust + stack push):  Don't misoptimize a push into a move
            for operands in the range for a pea if a stack adjustment is needed anyway.

2005-02-10  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * gcc/real.c: Don't include math.h and setjmp.h.
          (bcdpadd1ulp): Take parameter by reference, don't return it.
          (bcdppadd, real_value_dtof, real_from_integer): Update calls to bcdpadd1ulp.
          (real_value_dtof): Handle overflow and underflow.
          (struct arbprec_decimal): New structure (arbitrary precision decimal float).
          (arbprec_pack, arbprec_mul2, arbprec_div2, arbprec_mul16, arbprec_div16, arbprec_add,
          arbprec_add_n_times, arbprec_to_bcd): New static functions to handle arbprec_decimal
                                                objects.
          (real_value_htof): Use them. Don't use finite, sprintf, real_value_dtof. Remove
                             unnecessary lvalue cast.

2005-02-10  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * gcc/config/m68k.md (pushqi1_imm, pushqi1_reg, pushqi1_mem): New expanders for byte
                                                                      pushes.
          (pushqi1): Use them. Original code moved to pushqi1_mem.

        * gcc/config/m68k.md (unnamed define_peephole): New peephole to optimize constant argument
            passing after a stack adjustment (bundle 2 immediate word pushes to the stack into 1
            immediate longword push). Recognizes the pattern generated by my define_peephole2.

2005-02-10  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * gcc/config/m68k.md (unnamed peephole2): Fix copy&paste error.

        * gcc/fold-const.c (real_uzerop): Fix another copy&paste error.

2005-02-10  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * gcc/simplify-rtx.c (simplify_immed_subreg): Fix use of undefined behavior (vp incremented
            twice without a sequence point in-between).

2005-02-10  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        Implement correct handling of 3-sign zeros (POSITIVE_ZERO, NEGATIVE_ZERO and
        UNSIGNED_ZERO):

        * gcc/combine.c (combine_simplify_rtx): Don't optimize x-0 to x if HONOR_SIGNED_ZEROS, even
                                                if !HONOR_SIGN_DEPENDENT_ROUNDING.
        * gcc/fold-const.c (fold_real_zero_addition_p): Likewise.
        * gcc/simplify-rtx.c (simplify_binary_operation): Likewise.

        * gcc/fold-const.c (real_uzerop): New static function. Tests tree for UNSIGNED_ZERO.
          (fold): Allow folding UNSIGNED_ZERO*x to UNSIGNED_ZERO if -ffinite-math-only.
          (fold_binary_to_constant): Likewise.
        * gcc/simplify-rtx.c (simplify_binary_operation): Likewise.

        * gcc/simplify-rtx.c (simplify_unary_operation): Always allow simplifying -(X-Y) into Y-X,
          -(A+C) into -C-A and -(A+B) into -A-B, independently of HONOR_SIGNED_ZEROS.

2005-02-10  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * gcc/config/m68k.md (4 new unnamed peephole2s): Optimize lea (1,%an),%am;
            move.w foo,-(%am), m!=7 into move.l %an,%am; move.b foo,(%an). Optimize
            lea (x,%an),%am; move.l foo,-(%am), x!=4, x>=-0x7ffc into lea (x-4,%an),%am;
            move.l foo,(%am). Optimize lea (x,%an),%am; move.w foo,-(%am), x!=2, x>=-0x7ffe into
            lea (x-2,%an),%am; move.w foo,(%am). Optimize lea (x,%an),%am; move.b foo,-(%am), m!=7,
            x!=1, x>=-0x7fff into lea (x-1,%an),%am; move.b foo,(%am).

2005-02-10  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * gcc/tree.c (initializer_zerop): Don't return 1 for UNSIGNED_ZERO.

2005-02-10  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * gcc/config/m68k.md (2 new unnamed peephole2s): Optimize lea (4,%an),%am;
            move.l foo,-(%am) into move.l %an,%am; move.l foo,(%an). Optimize lea (2,%an),%am;
            move.w foo,-(%am) into move.l %an,%am; move.w foo,(%an).

2005-02-10  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * gcc/real.c (bcdadd): Return NAN instead of UNSIGNED_INF if adding 2 infinities with
                               different sign, or UNSIGNED_INF+UNSIGNED_INF.

2005-02-10  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * gcc/c-pretty-print.c (pp_c_expression): Add support for statement expressions (BIND_EXPR,
                                                  STATEMENT_LIST).

2005-02-10  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * gcc/config/m68k.md (zero_extendhisi2, zero_extendqisi2): Mark data register earlyclobber
            for memory operands in order to avoid inefficient andi.l code.

2005-02-10  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * gcc/config/m68k.c (m68k_rtx_costs): Decrease cost of longword shifts for speed
                                              optimization.

2005-02-09  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * gcc/config/smapbcd.h (REAL_VALUE_TO_STRING): Don't output trailing \n. Handle special
            cases properly. Output leading digit before the decimal point.

2005-02-09  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * gcc/config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Define to INVALID_REGNUM
                                                            unconditionally.
        * gcc/config/m68k/m68k.c (m68k_output_pic_call): Use jbsr instead of bsr for _ROM_CALL_...
                                                         and _RAM_CALL_...

2005-02-08  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * gcc/config/smapbcd.h (REAL_VALUES_EQUAL): Use !REAL_VALUE_ISNANUINF, not
                                                    REAL_VALUE_ISFINITE.

2005-02-08  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * gcc/optabs.c (expand_float): Reenable erroneously #if 0'ed libcall code.
          (init_optabs): Add missing ufloat initialization.

2005-02-08  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * gcc/real.h (real_value_dtof): Round correctly.

2005-02-08  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * gcc/real.h (real_from_string, real_from_string2): Enable prototypes.
        * gcc/config/smapbcd.h (REAL_VALUE_ATOF): Use real_from_string2, not REAL_VALUE_DTOF and
            REAL_VALUE_HTOF.
          (REAL_VALUE_DTOF, REAL_VALUE_HTOF): Delete. Move code to...
          Don't include math.h.
        * gcc/real.c (real_value_dtof, real_value_htof): ... here. New static functions. Remove
            unnecessary lvalue cast from the REAL_VALUE_DTOF code.
          (real_from_string): Enable. Implement using real_value_dtof and real_value_htof.
          (real_from_string2): Enable.
          Include math.h.
        * Revert:
          2002-12-26  Kevin Kofler  <Kevin@tigcc.ticalc.org>
          * c-lex.c (interpret_float): Don't use real_from_string, real_convert. Use
                                       REAL_VALUE_ATOF instead.

2005-02-08  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * gcc/real.c (ereal_from_int, ereal_from_uint, REAL_DEBUG_INFO, REAL_DEBUG_SPRINTF):
            Delete.
          (real_from_integer): Implement from scratch.
        * gcc/real.h (ereal_from_int, ereal_from_uint): Delete prototypes.
          (real_from_integer): Enable prototype.
        * gcc/config/smapbcd.h (REAL_FROM_INT, REAL_FROM_UINT): Use real_from_integer, not
            ereal_from_int and ereal_from_uint.
          (real_from_integer): Don't define as a macro.
        * gcc/fold-const.c (fold_convert_const_int_from_real): Reenable overflow checks.

2005-02-08  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * gcc/real.c (ereal_to_int): Delete.
          (real_to_integer2): Implement from scratch.
        * gcc/real.h (ereal_to_int): Delete prototype.
          (real_to_integer2): Enable prototype.
        * gcc/config/smapbcd.h (REAL_TO_INT): Use real_to_integer2, not ereal_to_int.

2005-02-08  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * gcc/fold-const.c (fold_convert_const_int_from_real): Enable support for FIX_TRUNC_EXPR,
            don't call real_trunc (let REAL_VALUE_TO_INT handle it), use REAL_VALUE_ISNANUINF, not
            REAL_VALUE_ISNAN. Disable overflow checks for now.
          (fold): Use REAL_VALUE_ISNANUINF, not REAL_VALUE_ISNAN.
        * gcc/simplify-rtx.c (simplify_unary_operation): Likewise.
          (simplify_const_relational_operation): Likewise.

2005-02-08  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * gcc/m68k/m68k.c (m68k_init_cumulative_args): Use register calling convention for local
            functions when possible. Partially copied from i386.c. Add fndecl parameter.
          (amigaos_init_cumulative_args): Add fndecl parameter. Pass it to
                                          m68k_init_cumulative_args.
        * gcc/m68k/m68k.h (INIT_CUMULATIVE_ARGS): Pass FNDECL to amigaos_init_cumulative_args.
        * gcc/m68k/m68k-protos.h (amigaos_init_cumulative_args): Add fndecl parameter to prototype.

2005-02-08  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * gcc/m68k/m68k.c (m68k_save_reg, m68k_output_function_prologue): Handle
            OPTIMIZE_ROM_CALLS (save/restore %a5, load jump table).

2005-02-07  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * gcc/m68k/m68k.md (unnamed define_peephole): New peephole to optimize constant argument
            passing (bundle 2 immediate word pushes to the stack into 1 immediate longword push).

2005-02-06  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * gcc/m68k/m68k-ti.c (m68k_output_function_epilogue): Don't output junk nops for barriers.

        * gcc/m68k/m68k-ti.h (CAN_DEBUG_WITHOUT_FP): Define.

2005-02-06  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * gcc/c-decl.c (build_compound_literal): New method for -fglobal-compound-literals.
        * gcc/c-typeck.c (default_function_array_conversion, build_unary_op): Revert
            flag_global_compound_literals hacks.
        * gcc/varasm.c (default_selection_section): Disable compound literal handling.
            (assemble_variable): Always emit mergeable compound literals into their own sections.
            (default_section_type_flags1): Add compound literal handling.

2005-02-06  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * gcc/gimplify.c (gimplify_call_expr): Switch order of gimplification if -fno-function-cse.
        * gcc/cfgexpand.c (expand_gimple_basic_block): Restore function calls if -fno-function-cse.
        * gcc/tree-ssa-dom.c (optimize_stmt): Honor -fno-function-cse.

2005-02-06  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * gcc/builtins.def (BUILT_IN_ER_THROW): New.
        * gcc/builtins.c (expand_builtin_er_throw): New.
          (expand_builtin): Call it.

2005-02-06  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * Revert (parts of larger patches, changelog entries pruned accordingly):
          2004-11-09  Kazu Hirata  <kazu@cs.umass.edu>
          	* fold-const.c (pedantic_non_lvalue): Make it static.
          	* tree.h: Remove the corresponding prototype.
          2004-01-17  Joseph S. Myers  <jsm@polyomino.org.uk>
          	* c-decl.c (c_init_decl_processing): Set pedantic_lvalues to
          	true unconditionally.
          	* c-typeck.c (unary_complex_lvalue, pedantic_lvalue_warning):
          	Remove.
          	(build_unary_op, build_modify_expr): Don't handle extended
          	lvalues.
          	(build_conditional_expr): Call non_lvalue instead of pedantic_non_lvalue.
          	(build_c_cast): Don't conditional use of non_lvalue on pedantic.
          	* fold-const.c (fold): Don't check pedantic directly for
          	COMPOUND_EXPR.  Ensure that results for COMPOUND_EXPR are
          	passed to pedantic_non_lvalue.
          2003-11-06  Joseph S. Myers  <jsm@polyomino.org.uk>
          	* c-typeck.c (pedantic_lvalue_warning): Deprecate compound
          	expressions as lvalues.
          2003-11-04  Joseph S. Myers  <jsm@polyomino.org.uk>
          	* c-typeck.c (pedantic_lvalue_warning): Deprecate use of
          	conditional expressions as lvalues.
          2003-10-22  Joseph S. Myers  <jsm@polyomino.org.uk>
          	* c-typeck.c (pedantic_lvalue_warning): Unconditionally warn of
          	deprecation of casts as lvalues.

2005-02-06  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * libcpp/lex.c (lex_string): Fix infinite loop with multi-line strings (use code from
                                     _cpp_skip_block_comment).
          (create_literal): Delete \r characters.

        * libcpp/internal.h (struct cpp_reader): Add boolean lexing_mls member.
        * libcpp/lex.c (lex_string): Set it.
          (_cpp_clean_line): Check it. Switch \r and \n instead of converting \r to \n if true.

2005-02-06  Kevin Kofler  <Kevin@tigcc.ticalc.org>

        * gcc/builtins.def: Disable builtin_calloc, which conflicts with TIGCCLIB.

        * gcc/c-opts.c (c_common_handle_option): Don't warn about -I-.

        * gcc/config/i386/xm-mingw32.h (HAVE_DOS_BASED_FILE_SYSTEM): Define.
        * gcc/c-incpath.c (add_path): Convert / to \ if HAVE_DOS_BASED_FILE_SYSTEM, not the other
                                      way round. Strip trailing \.

        * gcc/loop.c (scan_loop): Fix hard register variables as asm inputs. Patch by Ian Lance
            Taylor, 2004-05-13, taken from the GCC mailing list:
            http://gcc.gnu.org/ml/gcc/2004-05/msg00678.html

        * Revert:
          2003-12-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
          	PR c/12085
          	* c-typeck.c (build_function_call): Issue an error if a
          	function is called through an incompatible prototype.

2005-02-02 - 2005-02-06  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* Import GCC 4.0 20050130 snapshot.
	* Merge changes from GCC 3.3.3 (see ChangeLog-gcc-3.3.txt).
        * Preprocessor patches have moved to files with new names:
          gcc/cppexp.c -> libcpp/expr.c
          gcc/cpphash.h -> libcpp/internal.h
          gcc/cppinit.c -> libcpp/init.c, gcc/c-incpath.c
          gcc/cpplex.c -> libcpp/lex.c, libcpp/include/cpplib.h (prototype), gcc/c-lex.c
          gcc/cpplib.c -> libcpp/directives.c
          gcc/cpplib.h -> libcpp/include/cpplib.h
          gcc/cppmacro.c -> libcpp/macro.c
          gcc/cppmain.c -> gcc/c-ppoutput.c
        * Some more patches have moved to other files:
          gcc/c-common.c -> gcc/c-cppbuiltin.c, gcc/builtins.c
          gcc/c-opts.c -> gcc/c-opts.c, gcc/c.opt
          gcc/c-typeck.c -> gcc/c-typeck.c, gcc/c-decl.c
          gcc/emit-rtl.c (gen_lowpart_common, constant_subword) ->
            gcc/simplify-rtx.c (simplify_immed_subreg) (rewritten)
          gcc/toplev.c -> gcc/toplev.c, gcc/common.opt, gcc/opts.c
          gcc/config/m68k/m68k-coff.h -> gcc/config.gcc, gcc/config/m68k/m68k-none.h
          gcc/config/m68k/m68k.h (mul/div/shift costs) -> gcc/config/m68k/m68k.c
          gcc/config/m68k/m68k.md (PIC call patch) -> gcc/config/m68k/m68k.c (m68k_output_pic_call)
          gcc/config/m68k/m68k-ti.h (PROMOTE_PROTOTYPES, ASM_FILE_START) ->
            gcc/config/m68k/m68k.c (TARGET_PROMOTE_PROTOTYPES, TARGET_ASM_FILE_START,
                                    m68k_asm_file_start),
            gcc/config/m68k/m68k-protos.h (m68k_asm_file_start prototype)
        * Patches have been updated to follow the GCC 4.0 conventions where appropriate (ISO C90,
          renamed identifiers, ...).
        * Dropped attrib.c patch, as this looks already fixed (see PR 14587).
        * Dropped reversion of PR 2001 patch (bb-reorder.c, function.c, function.h, stmt.c) which
          was only applied to the 3.3 branch.
        * Dropped combine.c backport which is already in 4.0.
        * Dropped expr.c (is_zeros_p) patch, as this function is no more.
        * Dropped final.c (alter_subreg) paradoxical subreg patch, as this is already fixed.
        * Dropped PR 7871 patch to flow.c, as this bug is already fixed in 4.0.
        * Dropped flow.c (regno_uninitialized) patch, as this function is no more.
        * Dropped the libfuncs.h, optabs.c and expr.c patches which added *bf* libfuncs, as they
          are not needed any more thanks to genopinit.c and the new init_optab.
        * Dropped backport of PR 11823 patch (stmt.c) which is already in 4.0.
        * Dropped toplev.c patch to disable copy_loop_headers for -Os, as this is already done in
          4.0 for the equivalent tree-ssa pass (and the old one is no more).
        * Dropped varasm.c (decode_rtx_const) patch, as this function is no more.
        * Dropped varasm.c (categorize_decl_for_section) flag_zero_initialized_in_bss patch, as
          this is already fixed in 4.0.
        * Dropped varasm.c (const_hash_1) patch which added an unneeded sanity check.
        * Dropped unroll.c patches, as the old unroller is no longer.
        * Dropped config/m68k/m68k.c patch to disable XFmode flavor setting (not needed anymore).
        * Dropped config/m68k/m68k.c backports (output_move_const_into_data_reg NOTB/NOTW/NEGW
          patch, output_andsi3 64-bit cross patch) which are already in 4.0.
        * Dropped obsolete config/m68k/m68k.h attribute support patch (already #if 0ed and moved to
          target macros a few GCC releases ago).
        * Dropped config/m68k/m68k-protos.h patch because the prototype for
          extended_address_operand is auto-generated anyway.
        * gcc/c-decl.c (struct c_parm, build_c_parm): Add asmspec.
        * gcc/config/m68k/m68k-protos.h (amigaos_init_cumulative_args,
            amigaos_function_arg_advance, amigaos_function_arg): Prototype here.
        * Dropped REAL_VALUE_TRUNCATE->real_value_truncate patches in gcc/fold-const.c and
          gcc/simplify-rtx.c, which use real_convert now.
        * gcc/config/smapbcd.h (real_convert, real_from_integer, real_isneg): Define.
        * gcc/real.c (real_compare): Implement.
        * gcc/real.h (real_compare): Declare.

        * config-guess: Always use i386 for mingw32.

        * gcc/builtins.c (expand_builtin, expand_builtin_*, fold_builtin_*, integer_valued_real_p,
            fold_trunc_transparent_mathfn, mathfn_built_in, expand_errno_check,
            builtin_mathfn_code): Disable math builtins. Disable mem and string builtins except the
            ones needed internally: memcpy, memset. Also disable ctype builtins and
            builtin_fork_or_exec.
        * gcc/builtins.def: Disable ctype builtins.

        * gcc/c-incpath.c (register_include_chains): Don't use environment variables.

        * gcc/convert.c (strip_float_extension): Don't use exact_real_truncate and
            real_value_truncate.

        * gcc/emit-rtl.c (init_emit_once): Use real_arithmetic instead of REAL_EXP and SET_REAL_EXP
            to compute 1/2 (dconsthalf). Don't initialize dconstpi and dconste.
          (dconstpi, dconste): Don't declare.
        * gcc/real.h (dconstpi, dconste): Likewise.

        * gcc/expr.c (emit_block_move_via_libcall, emit_block_move_libcall_fn, expand_assignment,
            clear_storage_via_libcall, clear_storage_libcall_fn): Use mem* instead of b*.
              Drop patches changing the sizes for b* functions to ushort, it's all size_t now.

        * gcc/fold-const.c (const_binop): Use REAL_VALUES_IDENTICAL instead of real_identical.
        * gcc/simplify-rtx.c (simplify_binary_operation): Likewise.
        * gcc/fold-const.c (fold_inf_compare): Don't use real_maxval.
          (fold_relational_const): Use REAL_VALUE_ISNANUINF instead of real_isnan.

        * gcc/function.h (function_arg_regno_p): Prototype here.

        * gcc/genmodes.c (emit_real_format_for_mode): Don't emit struct real_format.
          (emit_mode_adjustments): Don't emit code using REAL_MODE_FORMAT.

        * gcc/optabs.c (expand_unop): Don't try negating floating point values by flipping the sign
                                      bit.
            (expand_abs_nojump): Don't try computing abs by clearing the sign bit.
            (copysign): Disable.

        * gcc/output.h (assemble_real): Conditionalize prototype on REAL_WIDTH instead of
            REAL_VALUE_TYPE_SIZE.

        * gcc/simplify-rtx.c (simplify_unary_operation): Don't simplify SQRT, we don't have
            real_sqrt nor builtin_sqrt.

        * gcc/simplify-rtx.c (simplify_unary_operation, simplify_binary_operation,
            simplify_immed_subreg): Use SMAP BCD representation directly instead of real_to_target
                                    and real_from_target.

        * gcc/tree-ssa-ccp.c (ccp_fold_builtin): Do nothing.

        * gcc/tree-pretty-print.c (dump_generic_note): Use REAL_VALUE_TO_STRING instead of
            real_to_decimal.

        * gcc/varasm.c (output_constant_pool): Pass fnname to output_constant_pool1.
          (output_constant_pool1): Add fnname parameter.

        * gcc/config/m68k/m68k.c (m68k_output_pic_call): Use plain bsr now. Guaranteed to be
            PC-relative, and now (latest GNU as) optimized to a byte where possible.
            (m68k_output_mi_thunk): Use plain bra for labels under -mpcrel now. See above.
        * gcc/config/m68k/m68k.md (indirect_jump): Likewise.

        * gcc/config/m68k/m68k-ti.h (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL): Cast ROUNDED to unsigned
            to avoid format mismatches.

        * Revert (parts of larger patches, changelog entries pruned accordingly):
          2003-08-04  Roger Sayle  <roger@eyesopen.com>
          	* c-common.c (built_in_attribute): Don't define/undefine DEF_FN_ATTR.
          	(c_attrs_initialized): Delete.
          	(c_common_nodes_and_builtins): Don't test c_attrs_initialized,
          	always call c_init_attributes.
          	(c_init_attributes): Don't define/undefine DEF_FN_ATTR.  Don't
          	set c_attrs_initialized when done.
          	(c_common_insert_default_attributes): Delete.
          	* c-common.h (c_common_insert_default_attributes): Delete prototype.

          	* c-decl.c (c_insert_default_attributes): Delete.
          	* c-tree.h (c_insert_default_attributes): Delete prototype.

          	* attribs.c (decl_attributes): Don't call insert_default_attributes
          	langhook.  Update function description comment.
          	* langhooks.h (lang_hooks): Remove insert_default_attributes field.
          	* langhooks-def.h (LANG_HOOKS_INSERT_DEFAULT_ATTRIBUTES): Delete.
          	* c-lang.c (LANG_HOOKS_INSERT_DEFAULT_ATTRIBUTES): Don't define.
          	* system.h: Poison LANG_HOOKS_INSERT_DEFAULT_ATTRIBUTES macro.
          2003-08-02  Roger Sayle  <roger@eyesopen.com>
          	* builtin-attrs.def: Remove DEF_FN_ATTR construct and the last
          	few functions that define default attributes using it.
          	* c-common.c (c_common_insert_default_attributes): Do nothing.

        * libcpp/files.c (ssize_t): Define for Win32.

