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

2004-09-25 Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* Backport from mainline:
	  2004-06-02  Andreas Schwab  <schwab@suse.de>

		* config/m68k/m68k.c (output_andsi3): Fix detection of narrowable
		operation for 64 bit hosts.

	* Apply proposed patch from http://gcc.gnu.org/ml/gcc-patches/2003-12/msg00717.html:
	  2003-12-07  Eric Botcazou  <ebotcazou@libertysurf.fr>

	        PR optimization/12085
	        * tree-inline.c (expand_call_inline): Do not inline functions at
		calling points where they are viewed with too different a prototype
		than the actual one.

	* ifcvt.c (noce_operand_ok): Don't if-convert global register variables.
	  (dead_or_predicable): Likewise.

2004-08-08 Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* varasm.c (output_addressed_constants): Address differences are not reloc-free for TIGCC.
	  (default_select_section): Don't put compound literals in mergeable sections if they
	                            contain relocations.

	* config/m68k/m68k.c (print_operand): Add -__relation(%an) after a MEM(CONST) if
	                                      reg-relative.
	* final.c (output_asm_insn): Likewise.
	* config/m68k/m68k.h (EXTRA_CONSTRAINT): Disable 'T' if reg-relative.
	  (LEGITIMATE_CONSTANT_P): Disallow pcrel_address (#label or #label+const) if reg-relative.
	* config/m68k/m68k.md (unnamed pattern for expanded movesi): Also enable the TARGET_PCREL
	    lea/pea pattern if TARGET_REG_RELATIVE.

	* config/m68k/m68k.md (cmphi, cmpqi, 2 unnamed patterns related to them): Accept only
	    nonimmediate_operand, not nonimmediate_src_operand. (Fixes invalid ASM with -mpcrel.)

2004-08-05 Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* 3.3.3-tigcc-6 released as part of TIGCC 0.95 Beta 15.

2004-07-28 Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* c-format.c (check_format_types): Warn if someone passes an integer where a
	                                   floating-point constant is expected.

2004-07-27 Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* varasm.c (default_select_section): Put compound literals (if
	    flag_global_compound_literals) and complex literals in mergeable sections.

	* flags.h (flag_merge_constant_pools): New flag.
	* toplev.c (flag_merge_constant_pools): Likewise. Default to 1.
	  (f_options): Add -fmerge-constant-pools.
	* varasm.c (output_constant_pool): Create new mergeable section for constant pool if
	                                   (flag_merge_constants && flag_merge_constant_pools).

2004-07-26 Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* 3.3.3-tigcc-5 released as part of TIGCC 0.95 Beta 14.

2004-07-25 Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* config/m68k/m68k.c (m68k_coff_asm_named_section): Handle mergeable and unaligned flag.
	* varasm.c (enum section_category): Move declaration up.
	  (categorize_decl_for_section): Move prototype up.
	  (mergeable_string_section): Implement string merging for TIGCC-extended COFF.
	  (mergeable_constant_section): Implement constant merging for TIGCC-extended COFF.
	  (default_select_section): Add support for mergeable sections.
	  (default_section_type_flags_1): Likewise.

2004-07-20 Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* 3.3.3-tigcc-4 released as part of TIGCC 0.95 Beta 13.

2004-07-19 Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* stmt.c (emit_case_nodes): Don't omit the conditional branch to default where needed to
                                    handle case ranges correctly.

2004-06-20 Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* 3.3.3-tigcc-3 released as part of TIGCC 0.95 Beta 11.

2004-06-20 Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* config/m68k/m68k.c (m68k_coff_asm_named_section): Handle rodata sections properly
	                                                    with -fdata-sections.
	* varasm.c (asm_emit_uninitialised): Don't manually create sections for common symbols
	                                     under -fdata-sections, the linker does it anyway.
	    (assemble_variable): Likewise.
	    (categorize_decl_for_section): Handle -fzero-initialized-in-bss correctly.

2004-06-19 Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* config/m68k/m68k_ti.h (TRAMPOLINE_ADJUST_ADDRESS): Don't hardcode 0x40000, let TIGCCLIB
	    compute the offset. Remove the ghost space warning, this is now handled automatically
	    by TIGCCLIB.

	* toplev.c (process_options): Remove pointless warning about -ffunction-sections and
	                              debugging on some targets (not ours!).

	* config/m68k/m68k.c (m68k_coff_asm_named_section): Handle BSS sections properly with
	                                                    -fdata-sections.

2004-04-15 Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* 3.3.3-tigcc-2 released as part of TIGCC 0.95 Beta 7.

2004-04-05 Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* calls.c (expand_call): Revert broken PR 8081 patch (2003-09-02/2004-02-11).

2004-03-13 Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* 3.3.3-tigcc-1 released as part of TIGCC 0.95 Beta 6.

2004-02-22  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	Fix -mpcrel support:
	* config/m68k/m68k.md (2 anonymous PIC call sequence patterns): Don't use bsr.l under
	    -mpcrel. Use jbsr instead and let the assembler sort it out.
	* config/m68k/m68k.c (m68k_output_mi_thunk): Use jra instead of bra.l under -mpcrel.

	* config/m68k/m68k.md (3 anonymous patterns for cmp): Don't force addressing to be
	                                                      absolute.
	    (ashrdi_const): Fix %d0 typo/thinko.

	* config/m68k/m68k.md (indirect_jump): Use jra instead of jmp. Don't add (%pc) under
	                                       -mpcrel (using "%A0").
	* config/m68k/m68k.c (print_operands): Add %A letter to support this.

	* config/m68k/m68k.c (extended_address_operand): New function.
	* config/m68k/m68k-protos.h (extended_address_operand): Add prototype.
	* config/m68k/m68k.h (PREDICATE_CODES): Add extended_address_operand.
	* config/m68k/m68k.md (indirect_jump): Use it.

2004-02-22  Kevin Kofler  <Kevin@tigcc.ticalc.org>

 	* config/m68k/m68k-ti.h (ASM_FILE_START): Don't global-import __reg_relative, current
	                                          tigcc.a only exports __reg_relative_an.

2004-02-19  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* config/m68k/m68k-ti.h (ASM_FILE_START): Use __ld_entry_point_plus_0x8000 as __relation.

2004-02-19  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* Merge with GCC 3.3.3 release.

2004-02-19  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* config/m68k/m68k.c (output_move_double): Fix 10-byte fp stack pushes.

2004-02-19  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* c-format.c (printf_length_specs): Remove modifiers not supported by AMS.
	    (printf_flag_specs, print_char_table, format_types): Likewise. Add AMS extensions.
	    (scanf_length_specs): Remove modifiers not supported by my *scanf implementation.
	    (scanf_flag_specs, scan_char_table, format_types): Likewise.
	    (print_char_table): Mark %y and %Y as extensions, add %r and %R.
	* builtin-attrs.def: Add list of 5. Add list pairs of 4,0 and 4,5. Add nonnull at 4.
	                     Move vscanf, vfscanf, vsscanf to C89. Add vcbprintf, cbprintf,
	                     vcbscanf, cbscanf.

2004-02-19  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* Backport from mainline:
	2003-04-16  J"orn Rennecke <joern.rennecke@superh.com>

		Re-apply this patch:

		2002-05-16  Dale Johannesen  <dalej@apple.com>
		  * combine.c (cant_combine_insn_p):  Reenable combinations
		  involving hard regs unless CLASS_LIKELY_SPILLED_P.

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

	* c-format.c (print_char_table): Remove %o.

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

	Apply proposed patch for PR 8081:
	2003-09-02 Sitikant Sahu  <sitikants@noida.hcltech.com>

		* calls.c (expand_call): Allocate dynamically on stack for
		variable size structure return (PR 8081).

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

	Backport from mainline:
	2004-01-11  Andreas Schwab  <schwab@suse.de>

		* config/m68k/m68k.c (output_move_const_into_data_reg): Clear cc
		status for NOTB/NOTW/NEGW methods.

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

	* Merge with GCC 3.3.3 20030209 snapshot.
	* Don't configure with --with-gnu-ld, there is no point in lying about the linker we use.

2004-01-06 Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* 3.3.1-pre26 released as part of TIGCC 0.95 Beta 5.

2004-01-04  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* cppdefaults.c (struct cpp_include_defaults): Disable hardcoded prefixes.
	    (GCC_INCLUDE_DIR, GCC_INCLUDE_DIR_LEN): Disable hardcoded prefix.
	* gcc.c (STANDARD_EXEC_PREFIX, STANDARD_STARTFILE_PREFIX, TOOLDIR_BASE_PREFIX,
	         STANDARD_BINDIR_PREFIX, standard_exec_prefix, standard_exec_prefix_1,
	         md_exec_prefix, md_startfile_prefix, md_startfile_prefix_1,
	         standard_startfile_prefix, standard_startfile_prefix_1,
	         standard_startfile_prefix_2, tooldir_base_prefix, tooldir_prefix,
	         standard_bindir_prefix): Disable.
	    (struct static_specs): Disable md_exec_prefix, md_startfile_prefix,
	                           md_startfile_prefix_1 and startfile_prefix_spec.
	    (int warn_std_ptr): Disable unused variable.
	    (process_command): Don't use environment variables. Don't hardcode any prefix at
	                       compile time.
	    (main): Likewise.

2003-12-28  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* unroll.c (loop_iterations): Subtract 1 from n_iterations in unrotated (-Os) loop.
            Optimize case where n_iterations ends up 0 after subtracting 1 by deleting the loop.

2003-11-24  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* 3.3.1-pre25 released as part of TIGCC 0.95 Beta 4.

2003-11-16  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* real.c (bcdppmul): Handle resultl carry greater than 1 (if->while). Add sanity check.
	  (bcdmul) Unswap operands for the neg*pos case.
	  (bcddiv) Unswap operands for the neg/pos case.

2003-10-26  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* 3.3.1-pre24 released as part of TIGCC 0.95 Beta 3.

2003-10-25  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* real.c (bcdpdroplast): Remove.
          (bcdpadd1ulp): New function.
          (bcdppadd): Don't use bcdpdroplast. Do the rounding at the end, using bcdpadd1ulp.
          (bcdpnorm): Remove. Inline into bcdppsub.
          (bcdppsub): Don't use bcdpdroplast. Do the rounding at the end, during normalization.
                      Also handle extra digits there. Don't use bcdpnorm.

	* real.c (bcdppadd): Avoid shift count overflow.
	  (bcdppsub): Likewise.

2003-10-21  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* 3.3.1-pre23 prepared for release (but not released).

2003-10-21  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* real.c (bcdppmul): Fix exponent off-by-one.
	  (bcdppdiv): Fix typo in multiplication of divisor by 2^56.
	              Add missing reinitialization of factor in loop to compute divisorl.
	              Fix off-by-one when checking if the divisor fits (need <=, not <).

2003-10-19  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* 3.3.1-pre22b released as part of TIGCC 0.95 Beta 2 r1 for *nix

2003-10-19  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* real.c (bcdppadd, bcdppsub, bcdppmul, bcdppdiv): Don't initialize a structure with a
	    non-constant initializer, GCC 2 doesn't like that.

2003-10-12  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* 3.3.1-pre22a released as part of TIGCC 0.95 Beta 2

2003-10-12  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* toplev.c (flag_zero_initialized_in_bss): Make default off.

2003-10-12  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* 3.3.1-pre22 prepared for release (but not released).

2003-10-12  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* real.c (bcdppmul, bcdmul, bcdppdiv, bcddiv): New static functions.
          (real_arithmetic): Use bcdmul for multiplication and bcddiv for division. Drop obsolete
                             hack using host floating point.
          (exact_real_inverse): Use bcddiv for the division. Only do the optimization if the
                                inverse actually _is_ exact.
	* config/smapbcd.h (ZERO, UNSIGNED_ZERO, POSITIVE_ZERO, NEGATIVE_ZERO, UNSIGNED_INF,
                            POSITIVE_INF, NEGATIVE_INF, NAN, REAL_VALUES_LESS, REAL_VALUE_LDEXP,
                            REAL_VALUE_UNSIGNED_FIX, REAL_VALUE_RNDZINT, REAL_VALUE_DTOF,
                            REAL_VALUE_HTOF, REAL_VALUE_NEGATE): Add __extension__ to shut up
                                                                 some -pedantic warnings.
          (MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS): Define.
	* Revert local patches merged 2002-12-26:
		* toplev.c: Include setjmp.h.
		  (float_signal): Revert removal.
		  (float_handler_set, float_handled, float_handler): Likewise.
		  (set_float_handler): Likewise.
		  (general_init): Set SIGFPE to float_handler, not crash_handler.
		* toplev.h (set_float_handler): Add prototype.

2003-10-11  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* Revert local patches merged 2002-12-26:
		* fold-const.c (const_binop): Don't use REAL_ARITHMETIC.
		* tree.h (struct real_value): Disable.
		  (struct smap_bcd_float): Declare.
		  (TREE_REAL_CST): Add cast to (REAL_VALUE_TYPE *) to convert struct smap_bcd_float
		                   to the typedef'ed smap_bcd_float.
		  (struct tree_real_cst): Use struct smap_bcd_float instead of struct real_value.
		* rtl.h (smap_bcd_float): Declare.
		  (CONST_DOUBLE_REAL_VALUE): Use smap_bcd_float instead of struct real_value.
	* real.h (struct real_value): Comment out definition, add own definition instead.
	* config/smapbcd.h (smap_bcd_float): Typedef to struct real_value. Remove old typedef.
	* real.c (bcdpdroplast, bcdpnorm, bcdppadd, bcdppsub, bcdadd, bcdsub, bcdmin, bcdmax): New
                     static functions.
          (real_arithmetic): Use bcdadd, bcdsub, bcdmin and bcdmax for addition, subtraction, min
                             and max (respectively).

2003-10-10  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* 3.3.1-pre21 prepared for release (but not released).

2003-10-10  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* Revert local patches merged 2002-12-26:
		* c-decl.c (pushdecl): If compiled using "nostub" mode, set a flag.
		* config/m68k/m68k.h:
		  (MASK_BADLINK, TARGET_BADLINK): Define.
		  (MASK_NOSTUB, TARGET_NOSTUB): Define.
	* config/m68k/m68k.h: (TARGET_SWITCHES): Remove no longer supported "badlink" and "mlink"
	                                         switches (and their negatives).
	* Revert:
	  2002-12-26  Kevin Kofler  <Kevin@tigcc.ticalc.org>
		* config/m68k/coff.h (BSS_SECTION_ASM_OP): Disable.
		  (ASM_OUTPUT_ALIGNED_BSS): Likewise.
	* config/m68k/m68k-coff.h: (TARGET_DEFAULT): Remove MASK_BADLINK.
	* config/m68k/m68k-ti.h: (ASM_OUTPUT_COMMON): Don't use TARGET_BADLINK and TARGET_NOSTUB.
	  (ASM_OUTPUT_LOCAL): Likewise.
	  (BSS_SECTION_ASM_OP): Redefine, handle TARGET_NO_BSS.

2003-10-09  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* 3.3.1-pre20 prepared for release (but not released).

2003-10-09  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* config/m68k/m68k-ti.h (ASM_FILE_START): Adapt -freg-relative code for the new linker.

2003-10-08  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* config/smapbcd.h (REAL_VALUE_TO_STRING): Use "%08lx", not "%lx".
	  (REAL_VALUE_ATOF): Call REAL_VALUE_HTOF for hex floats or REAL_VALUE_DTOF for decimal
	                     floats. Rename original to...
	  (REAL_VALUE_DTOF): ...this new macro.
	  (REAL_VALUE_HTOF): Detect host floating point overflow.
	* fold-const.c (const_binop): Likewise.
	* real.c (real_arithmetic): Likewise.
	  (exact_real_inverse): Likewise.

2003-10-07  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* cppinit.c (cpp_read_main_file): Always disable "standard" include directory processing.

2003-09-08  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* 3.3.1-pre19 released.

2003-09-07  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* stmt.c (expand_end_case_type): Don't balance the tree when optimizing for size.
	                                 A linear decision tree gives far smaller code.
	  (emit_case_nodes): Omit the conditional branch to default if we are optimizing for size.

2003-09-06  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	Backport from mainline (3.4):

	2003-08-30  Steven Bosscher  <steven@gcc.gnu.org>
		    Roger Sayle  <roger@eyesopen.com>

		PR middle-end/11823
		* stmt.c (expand_end_case_type): Only use jump tables for dense
		switch statements when optimizing for size.

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

	* 3.3.1-pre18 released.

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

	* config/m68k/m68k.h (MULW_COST): Decrease multiplication cost under -Os.
	  (DIVW_COST): Decrease division cost under -Os.
	  (UDIVW_COST): Likewise.
	  (RTX_COSTS): Adjust shift costs under -Os. Distinguish signed vs. unsigned division.

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

	* 3.3.1-pre17 released.

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

	* Merge with GCC 3.3.1 20030623 snapshot.
	* config/m68k/m68k.h (MASK_NO_BSS, TARGET_NO_BSS): Define.
	  (TARGET_SWITCHES): Add -mno-bss, -mnobss, -mbss.
	* config/m68k/m68k_ti.h (ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL): Use them.

2003-06-07  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* 3.3.1-pre16 released.

2003-06-07  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* Disabled the following patch:

	  2003-03-21  Richard Henderson  <rth@redhat.com>

		PR opt/2001
		* bb-reorder.c (maybe_duplicate_computed_goto_succ): New.
		(make_reorder_chain_1): Call it.

		* function.h (struct function): Add computed_goto_common_label,
		computed_goto_common_reg.
		* function.c (free_after_compilation): Zap them.
		* stmt.c (expand_computed_goto): Use them to produce one
		indirect branch per function.

2003-06-06  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* 3.3.1-pre15 released.

2003-06-06  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* config/m68k/m68k.h (MASK_MERGE_TO_DATA, TARGET_MERGE_TO_DATA): Define.
	  (TARGET_SWITCHES): Add -mmerge-to-data, -mno-merge-to-data, -mnomerge-to-data.
	* config/m68k/m68k_ti.h (TEXT_SECTION_ASM_OP): Use them.
	  (DATA_SECTION_ASM_OP): Use them. Add.
	  (ASM_FILE_START): Use them.
	* config/m68k/m68k.h (MASK_RODATA_TO_TEXT, TARGET_RODATA_TO_TEXT): Define.
	  (TARGET_SWITCHES): Add -mrodata-to-text, -mno-rodata-to-text, -mnorodata-to-text.
	* config/m68k/m68k_ti.h (READONLY_DATA_SECTION_ASM_OP): Define.
	  (JUMP_TABLES_IN_TEXT_SECTION): Define to 1.
	* real.h (significand_size): Fix definition.

2003-06-06  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* 3.3.1-pre14 released.

2003-06-06  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* Merge with GCC 3.3.1 20030602 snapshot.
	* unroll.c (unroll_loop): Delete unconditional jump first.

2003-04-23  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* 3.3-pre13 released.

2003-04-23  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* builtin_attrs.def: Add predefined attributes for *printf and *scanf (removed in FSF
	  GCC) back.
	* builtins.def: Disable new *printf and *scanf builtins (added to FSF GCC).

2003-04-21  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* Merge with GCC 3.3 20030421 snapshot.
	* Revert the following patch (added to FSF GCC):
	  Wed Mar  5 15:45:40 CET 2003  Jan Hubicka  <jh@suse.cz>

	          * toplev.c (rest_of_compilation):  Do duplicate loop headers when
	            optimizing for size.

2003-03-16  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* 3.3-pre12 released.

2003-03-16  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* Applied the following proposed patch for PR 7871 (and 7595):
	  2003-03-10  James E Wilson  <wilson@tuliptree.org>

	           * flow.c (mark_set_1): Handle global_regs like the frame pointer.

2003-03-15  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* expr.c (emit_block_move_libcall_fn): Use emit_library_call.
	  (clear_storage_libcall_fn): Likewise.

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

	* 3.3-pre11 released.

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

	* Merge with GCC 3.3 20030303 snapshot.

2003-02-20  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* 3.3-pre10 released.

2003-02-20  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* final.c (alter_subreg): On big-endian machines, adjust offset of paradoxical
	                          subregs of memory to point to the correct place.

2003-02-14  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* 3.3-pre9 released.

2003-02-14  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* gcse.c (do_local_cprop): Handle global register variables.

2003-02-14  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* 3.3-pre8 released.

2003-02-14  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* Merge with GCC 3.3 20030210 snapshot.
	* gcse.c (do_local_cprop): Revert 20030104 patch. (Fixed differently in FSF tree.)

2003-01-04  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* 3.3-pre7 released.

2003-01-04  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* Merge with GCC 3.3 20031230 snapshot.
	* config/m68k/m68k_ti.h (TRAMPOLINE_ADJUST_ADDRESS): Add.
	* builtin-attrs.def: Add definitions for printf, fprintf.
	* c-format.c (check_format_types): Account for *printf and *scanf not actually supporting
                                           -mlong. Fix misplaced parentheses.

2003-01-01  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* 3.3-pre6 released.

2003-01-04  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* gcse.c (do_local_cprop): Don't touch %sp.

2002-12-27  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* 3.3-pre5 released.

2002-12-27  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* cppmacro.c (replace_args): Add missing "macro = node->value.macro;".
	* local-alloc.c (update_equiv_regs): Put abort back.

2002-12-26  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* 3.3-pre4 released.

2002-12-26  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* c-opts.c (COMMAND_LINE_OPTIONS): Change -fno-auto-octals to -fauto-octals.
	  (c_common_decode_option): Likewise. Use preprocessor option.
	* cppinit.c: Add no_auto_octals option.
	* flags.h (flag_auto_octals): Remove.
	* toplev.c (flag_auto_octals): Remove.
	  (struct f_options): Remove auto-octals.

2002-12-26  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* 3.3-pre3 prepared for release (but not released).

2002-12-26  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* cpplib.c (_cpp_init_internal_pragmas): Define #pragma poison in the global namespace.

2002-12-26  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* 3.3-pre2 prepared for release (but not released).

2002-12-26  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* config/m68k/coff.h (BSS_SECTION_ASM_OP): Disable.
	  (ASM_OUTPUT_ALIGNED_BSS): Likewise.

2002-12-26  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* 3.3-pre1 prepared for release (but not released).

2002-12-26  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* Merge TIGCC patchset (1999-2002; changes by Jean Canazzi, François
	  Révol, Sebastian Reichelt, Zeljko Juric and me; some changes by
	  Fred Fish dated 1998-01-21 imported from AmigaOS-GCC):
		* attribs.c (decl_attributes): Use modified build_type_attribute_variant instead
		                               of build_type_copy.
		* builtin-attrs.def (expand_builtin_fputs): Disable. Also disable prototype.
		  (fold_builtin_inf, fold_builtin_nan): Likewise.
		  (expand_builtin): Don't use expand_builtin_fputs.
		  (fold_builtin): Don't use fold_builtin_inf, fold_builtin_nan.
		  (apply_args_size): Don't use register passing for __builtin_apply.
		* builtins.def: Disable stdio builtins.
		* c-common.c (builtin_define_with_hex_fp_value): Disable. Also disable prototype.
		  (is_valid_printf_arglist): Likewise.
		  (c_expand_builtin_printf, c_expand_builtin_fprintf): Likewise.
		  (c_expand_builtin): Don't use c_expand_builtin_printf, c_expand_builtin_fprintf.
		  (builtin_define_float_constants): Disable contents. Do nothing.
		* c-decl.c (pushdecl): If compiled using "nostub" mode, set a flag.
		  (push_parm_decl): Add asmspec to support explicit register specification of 
		                    parameters, and use when set.
		  (build_compound_literal): Handle -fglobal-compound-literals.
		* c-format.c (print_char_table, scan_char_table): Add TI-specific formats.
		                                                  Remove unsupported formats.
		  (check_format_types): Don't warn about differences in floating point format;
		                        they're all the same.
		* c-lex.c (interpret_float): Don't use real_from_string, real_convert. Use
		                             REAL_VALUE_ATOF instead.
		* c-opts.c (COMMAND_LINE_OPTIONS): Add -fno-auto-octals.
		  (c_common_decode_option): Handle -fno-auto-octals.
		* c-parse.in (parms, parm, firstparm, myparms, my parm): Add support for explicit
		    register specification for parameters.
		  (absdcl_maybe_attribute): Likewise, rename to absdcl_maybeasm_maybe_attribute.
		  Fix %expect directive.
		* c-pretty-print.c (pp_c_real_literal): Use REAL_VALUE_TO_STRING instead of
		                                        real_to_decimal.
		* c-tree.h: (push_parm_decl): Add type of asmspec to prototype.
		* c-typeck.c (undeclared_variable_notice): Remove.
		  (build_external_ref): Remove redundant undeclared variable notice.
		  (default_function_array_conversion): Handle -fglobal-compound-literals.
		  (build_unary_op): Likewise.
		  (error_init): Use one-line instead of two-line diagnostic.
		  (pedwarn_init): Likewise.
		  (warning_init): Likewise.
		* collect2.c: Applied patch to allow collect2 to build on MinGW by Lev Serebryakov
		              (2002-10-25).
		* config/dbxcoff.h (ASM_OUTPUT_SOURCE_LINE): Use absolute rather than
		    function-relative COFF line numbers if TARGET_COFFABSLINES.
		* config/m68k/m68k-coff.h: (TARGET_CPU_DEFAULT, TARGET_DEFAULT): Define.
		  Include m68k-ti.h instead of m68kemb.h.
		* config/m68k/m68k-ti.h: New file. Defines AMS-specific target settings.
		* config/m68k/m68k.c:
		  Add support for '-mregparm' and explicit register specification for parameters:
		    (comp_m68k_type_attributes): New function. Add prototype.
		    (comp_amigaos_type_attributes): Likewise.
		    (m68k_regparm_string, m68k_regparm): New variables.
		    (override_options): Validate -mregparm and -mregparm= value.
		    (m68k_init_cumulative_args, amigaos_init_cumulative_args): New functions.
		    (m68k_function_arg_advance, amigaos_function_arg_advance): Likewise.
		    (m68k_function_arg, amigaos_function_arg): Likewise.
		  Add support for __attribute__((regparm)) and __attribute__((stkparm)):
		    (TARGET_ATTRIBUTE_TABLE): Define.
		    (TARGET_COMP_TYPE_ATTRIBUTES): Define.
		    (m68k_attribute_table): New array.
		    (m68k_handle_stkparm_attribute): New function. Add prototype.
		    (m68k_handle_regparm_attribute): Likewise.
		  Add AMS floating point support:
		    (override_options): Don't select any flavor of XFmode.
		    (output_move_himode_const): New function.
		    (halfsinglemove_string): Likewise.
		    (output_move_double): Handle BFmode.
		    (floating_exact_log2): Disable contents. Abort if called.
		    (print_operand): Disable handling of SFmode, DFmode, XFmode.
		    (const_uint32_operand): Don't handle CONST_DOUBLE.
		                            Check for "INTVAL (op) >= 0" (possibly wrong?).
		  Add support for -freg-relative:
		    (TARGET_RELATION_REG): Declare, initialize.
		    (print_operand): Handle TARGET_REG_RELATIVE.
		* config/m68k/m68k.h:
		  Add support for '-mregparm' and explicit register specification for parameters:
		    Update comment about TARGET_REGPARM.
		    (TARGET_SWITCHES): Add "regparm", "noregparm", "no-regparm".
		    (TARGET_OPTIONS): Add "regparm=".
		    (EXPLICIT_REGPARM): Define.
		    (FUNCTION_ARG_REGNO_P): Handle register parameters.
		    (struct m68k_args): New structure.
		    (CUMULATIVE_ARGS): Use it.
		    (M68K_MAX_REGPARM): Define to 6.
		    (M68K_DEFAULT_REGPARM): Define to 4.
		    (INIT_CUMULATIVE_ARGS): Use amigaos_init_cumulative_args.
		    (FUNCTION_ARG_ADVANCE): Use amigaos_function_arg_advance.
		    (FUNCTION_ARG): Use amigaos_function_arg.
		    (FUNCTION_ARG_PARTIAL_NREGS): Change to always 0.
		    (m68k_regparm_string, m68k_regparm): Declare as extern.
		  Add support for -freg-relative:
		    (TARGET_RELATION_REG): Declare as extern.
		  (MASK_TIOS, TARGET_TIOS): Define.
		  (MASK_DIRECTFLOAT, TARGET_DIRECTFLOAT): Define.
		  (MASK_REG_RELATIVE, TARGET_REG_RELATIVE): Define.
		  (MASK_BADLINK, TARGET_BADLINK): Define.
		  (MASK_COFFABSLINES, COFFABSLINES): Define.
		  (MASK_NOSTUB, TARGET_NOSTUB): Define.
		  (MASK_MERGE_SECTIONS, TARGET_MERGE_SECTIONS): Define.
		  (TARGET_SWITCHES): Add "long", "badlink", "mlink", "tios", "merge-sections" and
		                     negations, "no-pcrel", "coff-abslines".
		  (PARM_BOUNDARY): Set to 16 independently of TARGET_SHORT.
		  (ASM_OUTPUT_COMMON): Guard with #ifndef.
		  (ASM_OUTPUT_LOCAL): Likewise.
		  (VALID_MACHINE_TYPE_ATTRIBUTE, COMP_TYPE_ATTRIBUTES): Add, but disabled.
		* config/m68k/m68k.md (movbf): New define_expand for AMS floating point support.
		  (unnamed BF move): New define_insn for AMS floating point support.
		* config/m68k/smapbcd.h: New file. Defines macros for AMS floating point support.
		* cppexp.c (cpp_classify_number): Handle binary numbers and -fno-auto-octals.
		  (cpp_interpret_integer): Handle binary numbers.
		* cpphash.h (mls_line, mls_col): Revert removal.
		* cpplex.c (unterminated): Likewise.
		  (parse_string): Revert removal of multi-line strings. Use "unterminated".
		* cpplib.h (struct cpp_options): Add no_auto_octals.
		  (CPP_N_BINARY): Define.
		* cppmacro.c (replace_args): If 'SYMSTR' is used with a string literal, convert
		                             automatically to 'SYMSTR_CONST'.
		* cppmain.c (scan_translation_unit): Revert removal of multi-line strings.
		* diagnostic.c (internal_error): Change bug report instructions.
		* dwarf2out.c (add_const_value_attribute): Handle BFmode (AMS floating point).
		* emit-rtl.c (const_double_htab_eq): Use REAL_VALUES_IDENTICAL instead of
		                                     real_identical.
		  (gen_lowpart_common): Disable handling of floating point. Handle BFmode instead.
		  (constant_subword): Disable handling of floating point.
		  (operand_subword): Handle BFmode (AMS floating point).
		* explow.c (copy_to_mode_reg): Handle BFmode by calling convert_move.
		* expr.c (convert_move): Add BFmode (AMS floating point) libcalls.
		  (convert_modes): Handle BFmode (AMS floating point).
		  (emit_block_move_via_libcall): Pass short integers to bcopy even if -mlong.
		  (emit_block_move_libcall_fn): Likewise.
		  (expand_assignment): Likewise.
		  (clear_storage_via_libcall): Pass short integers to bzero even if -mlong.
		  (clear_storage_libcall_fn): Likewise.
		  (compress_float_constant): Don't call exact_real_truncate. Disable code using it.
		  (emit_push_insn): Don't take a modulus by 0. Set offset to constant 0 instead.
		  (is_zeros_p): Use REAL_VALUE_ISZERO instead of REAL_VALUES_IDENTICAL.
		* final.c (output_asm_insn): Add support for -freg-relative.
		  (split_double): Disable code which doesn't work for AMS floats. Abort if reached.
		* flags.h (flag_auto_octals, flag_global_compound_literals): Declare extern.
		* flow.c (regno_uninitialized): Support explicit register specification of
		                                parameters.
		* fold-const.c (const_binop): Don't use REAL_ARITHMETIC.
		                              Use REAL_VALUE_TRUNCATE instead of
		                              real_value_truncate.
		  (fold_convert): Don't fold real to integer conversion, as the required functions
		                  are not implemented.
		                  Use REAL_VALUE_TRUNCATE instead of real_value_truncate.
		  (fold): Use temporaries for REAL_VALUE_NEGATE and REAL_VALUE_NEGATIVE because of
		          side effects.
		* function.c (function_arg_regno_p): New function for explicit register
		                                     specification of parameters.
		* gcc.c (process_command): Don't try to create gcc_exec_prefix from argv[0].
		  (main): Don't load specs from exec prefix. Always use builtin specs.
		* libfuncs.h (enum libfunc_index): Add BFmode (AMS floating point) libcalls.
		  Define extendsfbf2_libfunc etc.
		* local-alloc.c (update_equiv_regs): Disable abort.
		* machmode.def: Add BFmode (AMS floating point) to the machine modes.
		* optabs.c (expand_binop): Don't look for a wider mode for floating point numbers.
		  (expand_twoval_binop): Likewise.
		  (expand_unop): Likewise.
		  (prepare_float_lib_cmp): Handle BFmode (AMS floating point).
		  (expand_float): Don't special-case unsigned integers, as the required functions
		                  are not implemented.
		                  Handle BFmode (AMS floating point).
		  (ftruncify): Likewise.
		  (init_optabs): Initialize extendsfbf2_libfunc etc.
		* print-rtl.c (print_rtx): Don't use real_to_decimal, real_to_hexadecimal. Use
		                           REAL_VALUE_TO_STRING.
		* print-tree.c (print_node_brief): Use REAL_VALUE_TO_STRING instead of
		                                   real_to_decimal.
		  (print_node): Likewise.
		* real.c: Include setjmp.h.
		  (NULL_PTR): Define.
		  (REAL_DEBUG_INFO, REAL_DEBUG_SPRINTF): Define.
		  Disable all static function prototypes.
		  (real_arithmetic): Replace with own implementation.
		  (exact_real_inverse): Likewise.
		  (real_hash): Likewise.
		  Disable all other functions.
		  (ereal_to_int, ereal_from_int, ereal_from_uint): New functions.
		* real.h: Include smapbcd.h.
		  (SMAP_BCD_FLOAT_FORMAT): Define.
		  (REAL_WIDTH): Change definition to correspond to AMS floating point.
		  (ereal_to_int, ereal_from_int, ereal_from_uint): Add prototypes.
		  Disable everything else except the prototypes of real_arithmetic,
		  exact_real_inverse, real_hash, real_value_from_int_cst,
		  const_double_from_real_value, build_real, the REAL_VALUE_FROM_CONST_DOUBLE and
		  CONST_DOUBLE_FROM_REAL_VALUE macros and the dconst0, dconst1, dconst2, dconstm1
		  externs.
		* rtl.h (smap_bcd_float): Declare.
		  (CONST_DOUBLE_REAL_VALUE): Use smap_bcd_float instead of struct real_value.
		* sdbout.c (sdbout_source_line): Use absolute, not function-relative, lines by
		                                 default.
		* simplify-rtx.c (simplify_unary_operation): Use REAL_VALUE_TRUNCATE instead of
		                                             real_value_truncate.
		  (simplify_binary_operation): Likewise.
		* toplev.c: Include setjmp.h.
		  (float_signal): Revert removal.
		  (float_handler_set, float_handled, float_handler): Likewise.
		  (set_float_handler): Likewise.
		  (flag_auto_octals, flag_global_compound_literals): Initialize
		  (struct f_options): Add auto-octals, global-compound-literals,
		                      global-cast-constructors.
		  (decode_f_option): Add support for -freg-relative.
		  (general_init): Set SIGFPE to float_handler, not crash_handler.
		  (parse_options_and_default_flags): Set %d2 to call-used if TARGET_TIOS.
		* toplev.h (set_float_handler): Add prototype.
		* tree.c (real_zerop): Use REAL_VALUE_ISZERO instead of REAL_VALUES_EQUAL.
		* tree.h (struct real_value): Disable.
		  (struct smap_bcd_float): Declare.
		  (TREE_REAL_CST): Add cast to (REAL_VALUE_TYPE *) to convert struct smap_bcd_float
		                   to the typedef'ed smap_bcd_float.
		  (struct tree_real_cst): Use struct smap_bcd_float instead of struct real_value.
		* varasm.c (assemble_real): Handle BFmode (AMS floating point).
		  (const_hash_1): Add sanity check (code must not be zero).
		  (decode_rtx_const): Use members of smap_bcd_float, not struct real_value, for
		                      member-by-member copying.
		* version.c (version_string): Add "TIGCC".
		  (bug_report_url): Change from gnu.org URL to tigcc.ticalc.org URL.

2002-12-26  Kevin Kofler  <Kevin@tigcc.ticalc.org>

	* Import GCC 3.3 20021223 snapshot.
