X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2FChangeLog;h=faf7f1c9c200ac2ad369b2fae3a7126b8e97f2c9;hb=c010d9a7d6d9efb634c37c06e871bbd06085318a;hp=abe6a3042c451d002d785f674c28588dea415720;hpb=c8fe098d028c490b950ff77ca9a61b90ee757588;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/ChangeLog b/gcc/ChangeLog index abe6a3042c4..b45f29a12bb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,1397 @@ +2004-04-23 Paolo Bonzini + + * doc/invoke.texi (Optimize Options): Refer to "unit-at-a-time + mode" rather than "-funit-at-a-time" since -O2 enables it + without requiring -f* options. Refer to -fprofile-generate and + -fprofile-use correctly. Move -funit-at-a-time among options + enabled by -O. Add information about unit-at-a-time caveats. + +2004-04-22 Per Bothner + + * line-map.h (struct line_maps): New field highest_line. + (linemap_position_for_column): Make non-inline function. + (LINEMAP_POSITION_FOR_COLUMN): New macro. + * line-map.c (linemap_init): Clear highest_line field. + (linemap_add): Set highest_line field. + (linemap_line_start): Minor optimization - use highest_line field. + Reduce maximum column hint to 10000. Update highest_line field. + (linemap_position_for_column): Moved from line-map.h. Optimize a bit. + * cpphash.h (struct cpp_reader): Remove line field - instead use + line_table->highest_line. + (saved_line): Remove unused field. + (CPP_INCREMENT_FILE): Don't do linemap_lookup - just use newest map. + Use line_table's highest_line field instead of cpp_reader's line. + * cpplib.c (start_directive): Likewise use highest_line field. + (do_line, do_linemarker): Likewise just use newest map. + (_cpp_do_file_change): Don't need to set cpp_reader's line field. + * cpperror.c (cpp_error): Likewise use highest_line field. + * cppfiles.c (open_file_failed: Likewise. + (cpp_make_system_header): Likewise use newest map and highest_line. + * cppinit.c (cpp_create_reader): Don't initialize removed field. + * cpplex.c (_cpp_process_line_notes, _cpp_skip_block_comment, + skip_line_comment, skip_whitespace, _cpp_get_fresh_line, + _cpp_lex_direct): Likewise use highest_line. + (_cpp_lex_direct): Use new LINEMAP_POSITION_FOR_COLUMN macro. + * cppmacro.c (_cpp_builtin_macro_text): Likewise use highest_line, + and use newest map. + * cpppch.c (cpp_read_state): Don't save+restore cpp_reader's line. + * cpptrad.c (_cpp_overlay_buffer): Don't save cpp_reader's line. + (copy_comment, _cpp_scan_out_logical_line): Likewise use highest_line. + +2004-04-23 Alan Modra + + PR bootstrap/14992 + * gcc.c (init_gcc_specs): Test USE_LD_AS_NEEDED, not HAVE_LD_AS_NEEDED. + * config/linux.h (USE_LD_AS_NEEDED): Define. + * gcc/config/alpha/linux.h (USE_LD_AS_NEEDED): Define. + * gcc/config/arm/linux-elf.h (USE_LD_AS_NEEDED): Define. + * gcc/config/rs6000/linux.h (USE_LD_AS_NEEDED): Define. + * gcc/config/rs6000/linux64.h (USE_LD_AS_NEEDED): Define. + * gcc/config/sh/linux.h (USE_LD_AS_NEEDED): Define. + * gcc/config/sparc/linux.h (USE_LD_AS_NEEDED): Define. + * gcc/config/sparc/linux64.h (USE_LD_AS_NEEDED): Define. + +2004-04-22 Per Bothner + + * cppinit.c (cpp_read_main_file): Return NULL rather than false. + Fixes PR preprocessor/15067. + +2004-04-23 Andreas Schwab + + * config/ia64/ia64intrin.h: Add intermediate cast to void * to + avoid aliasing warning. + +2004-04-22 Jan Hubicka + Mostafa Hagog + + * cfgloopmanip.c (scale_bbs_frequencies): Use RDIV macro + * cfgloopanal.c (expected_loop_iterations): Change the return value + +2004-04-22 Jakub Jelinek + + * cselib.h (struct elt_loc_list): Remove canon_loc field. + * cselib.c (new_elt_loc_list): Remove canon_loc initialization. + (cselib_invalidate_mem): Remove all canon_loc and canon_x + traces. + +2004-04-22 Josef Zlomek + + Revert + 2004-04-20 Josef Zlomek + + * var-tracking.c (variable_part_different_p): Variable parts + differ when the most recent locations differ. + +2004-04-22 Richard Sandiford + + * doc/invoke.texi: Remove the MIPS -membedded-pic option. + * config/mips/mips-protos.h (embedded_pic_fnaddr_reg): Delete. + (embedded_pic_offset): Delete. + * config/mips/mips.h (MASK_EMBEDDED_PIC): Delete. Shuffle other + MASK_* constants. + (TARGET_EMBEDDED_PIC): Delete. + (TARGET_SWITCHES): Remove -m{no-,}embedded-pic. + (ASM_SPEC): Remove -membedded-pic. + (ASM_OUTPUT_ADDR_DIFF_ELT): Remove embedded-pic handling. + (ASM_OUTPUT_CASE_LABEL): Likewise. + * config/mips/vxworks.h (ASM_SPEC): Remove -membedded-pic. + * config/mips/windiss.h (ASM_SPEC): Likewise. + * config/mips/mips.c (struct machine_function): Remove + embedded_pic_fnaddr_rtx. + (TARGET_ENCODE_SECTION_INFO): Remove override. + (embedded_pic_fnaddr_reg, embedded_pic_offset): Delete. + (override_options): Remove -membedded-pic handling. + (print_operand): Remove handling of '%S'. + (mips_select_section: Remove -membedded-pic handling. + (mips_encode_section_info): Delete. + (mips_output_conditional_branch): Remove mention of -membedded-pic. + * config/mips/mips.md (define_attr length, movsi, movdi, jump): Remove + -membedded-pic handling. + (casesi, casesi_internal, casesi_internal_di, get_fnaddr): Delete. + +2004-04-22 Alan Modra + + * var-tracking.c (frame_base_decl): Remove useless GTY. + +2004-04-21 Aldy Hernandez + + * config/rs6000/rs6000.c (rs6000_override_options): Error when + user wants altivec and e500 instructions. + +2004-04-21 H.J. Lu + + PR target/14813 + * config/ia64/crtend.asm: Move pointer to __do_global_ctors_aux + in .init_array section to ... + * config/ia64/crtbegin.asm: Here. + + * config/ia64/crtend.asm: Mark __do_global_ctors_aux global + and hidden if HAVE_INITFINI_ARRAY is defined. + +2004-04-21 James E Wilson + + * config/mips/mips-protos.h (fp_register_operand, lo_operand): Declare. + * config/mips/mips.c (mips_multipass_dfa_lookahead): Declare. + (TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD): New. + (fp_register_operand, lo_operand): New. + (mips_rtx_costs): Add TUNE_SB1 support. + (mips_issue_rate): Add comment. Add PROCESSOR_SB1 support. + (mips_use_dfa_pipeline_interface): Add PROCESSOR_SB1 support. + (mips_multipass_dfa_lookahead): New. + * config/mips/mips.h (MASK_FP_EXCEPTIONS, TARGET_FP_EXCEPTIONS, + TUNE_SB1): New. + (TARGET_SWITCHES): Add -mfp-exceptions support. + (TARGET_FP_EXCEPTIONS_DEFAULT): New. + (BRANCH_COST): Fix whitespace. + * config/mips/mips.md: Include sb1.md. + * config/mips/sb1.md: New file. + * doc/invoke.texi: Document -mfp-exceptions. + + * Makefile.in (fixinc.sh): Don't set or export WARN_CFLAGS. Fix + comment. + * fixinc/Makefile.in (FL_LIST): Don't mention WARN_CFLAGS. + (fixincl.o-warn): Delete. + +2004-04-21 Andrew Pinski + + * config/rs6000/rs6000 (print_operand) ['z']: + Change ifdef of TARGET_MACHO to if TARGET_MACHO. + +2004-04-21 Daniel Jacobowitz + + * config.gcc: Support --with-arch=iwmmxt for ARM. + +2004-04-21 Richard Kenner + + * expmed.c (expand_mult_highpart_optab): Use narrower version of OP1 + in two more places; remove unneeded force_reg + +2004-04-21 Andrew Pinski + + * config/rs6000/rs6000.c (symbol_ref_operand): Remove hack + for TARGET_MACHO. + (print_operand): For TARGET_MACHO check to see if we need a stub + and output one if we need it. + + PR debug/15033 + * dwarf2out.c (rtl_for_decl_location): Check for NULL + rtl. + +2004-04-20 James E Wilson + + * config/ia64/ia64.md (call_value_nogp): Add constraints for op0. + (vall_value_gp): Likewise. + +2004-04-20 DJ Delorie + + * dwarf2out.c (rtl_for_decl_location): Adjust rtl for byte + variables stored in word registers, then in memory. + +2004-04-20 Eric Christopher + + * cp/parser.c (cp_parser_declaration): Move translate + up before tokens are lexed. + +2004-04-20 Uros Bizjak + + * optabs.h (enum optab_index): Add new OTI_asin and OTI_acos. + (asin_optab, acos_optab): Define corresponding macros. + * optabs.c (init_optabs): Initialize asin_optab and acos_optab. + * genopinit.c (optabs): Implement asin_optab and acos_optab + using asin?f2 and acos?f2 patterns. + * builtins.c (expand_builtin_mathfn): Handle BUILT_IN_ASIN{,F,L} + using asin_optab, and BUILT_IN_ACOS{,F,L} using acos_optab. + (expand_builtin): Expand BUILT_IN_ASIN{,F,L} and BUILT_IN_ACOS{,F,L} + using expand_builtin_mathfn if flag_unsafe_math_optimizations is set. + + * config/i386/i386.md (asindf2, asinsf2, asinxf2, acosdf2, + acossf2, acosxf2): New expanders to implement asin, asinf, asinl, + acos, acosf and acosl built-ins as inline x87 intrinsics. + +2004-04-20 Paul Brook + + * config/arm/arm.c (arm_legitimate_address_p): Use rtx_equal_p. + +2004-04-20 Paul Brook + + * config/arm/arm.c (arm_expand_prologue): Fix size calculation. + +2004-04-20 Paolo Bonzini + + Revert part of 2004-04-17 change that moved -frename-registers + to -O1. -frename-registers is buggy. + + * toplev.c (flag_rename_registers): Initialize to 0. + * doc/invoke.texi (Optimize options): Move -frename-registers + to "Not triggered by any -O level" section. Adjust commentary + accordingly. + +2004-04-20 Anil Paranjpe    + + * toplev.c (compile_file): Move targetm.asm_out.file_end call to end. + +2004-04-20 Richard Sandiford + + * config/mips/mips.c (mips_legitimize_move): Generate special patterns + for mflo and mfhi instructions. + (mips_output_move): Remove mflo and mfhi handling. + * config/mips/mips.md (UNSPEC_MFHILO): New unspec. + (*mulsidi3_64bit): Update for new mfhi/mflo representation. + Likewise various define_peephole2s. + (*movdi_32bit, *movdi_64bit, *movsi_internal): Merge x<-J and x<-d + alternatives. + (*movdi_64bit, *movdi_64bit_mips16, *mov[shq]i_internal) + (*mov[shq]i_mips16): Remove mflo and mfhi alternatives. + (mfhilo_di, mfhilo_si): New patterns. + +2004-04-20 Josef Zlomek + + * function.c (assign_parms): Force + MEM_EXPR (DECL_INCOMING_RTL (parm)) == parm. + +2004-04-20 Josef Zlomek + + * var-tracking.c (variable_part_different_p): Variable parts differ + when the most recent locations differ. + +2004-04-19 James E Wilson + + * rtl.h (reg_set_last): Delete declaration. + * rtlanal.c (reg_set_last): Delete. + +2004-04-19 Roger Sayle + + * fold-const.c (fold_convert): Make function extern/public. + * tree.h (fold_convert): Prototype here. + * builtins.c (expand_builtin_strstr, expand_builtin_strchr, + expand_builtin_strrchr, expand_builtin_strpbrk, + expand_builtin_mempcpy, expand_builtin_bcopy, + expand_builtin_bzero, expand_builtin_memcmp, + expand_builtin_strcmp, expand_builtin_strncmp, + stabilize_va_list, expand_builtin_sprintf, + fold_trunc_transparent_mathfn, fold_builtin_logarithm, + fold_builtin_exponent, fold_builtin_mempcpy, + fold_builtin_strcpy, fold_builtin_strcmp, fold_builtin_strncmp, + fold_builtin_signbit, fold_builtin_isdigit, fold_builtin): Prefer + fold_convert to "convert" or "fold (build1 (NOP_EXPR, ...))". + +2004-04-19 Aldy Hernandez + + * config/rs6000/rs6000.md (UNSPEC_MV_CR_GT): New constant. + (move_from_CR_gt_bit): New. + (cceq_ior_compare): Name previously unnamed pattern. Disable for + E500. + (cceq_rev_compare): Name previously unnamed pattern. Allow for + E500. + + * config/rs6000/spe.md (cmpsfeq_gpr): Rewrite as unspec. + (tstsfeq_gpr): Same. + (cmpsfgt_gpr): Same. + (tstsfgt_gpr): Same. + (cmpsflt_gpr): Same. + (tstsflt_gpr): Same. + (e500_cceq_ior_compare): New. + (e500_flip_gt_bit): New. + + * config/rs6000/rs6000.c (ccr_bit): Remove E500 specific code. + (print_operand): Add 'c' and 'D'. + (rs6000_generate_compare): Rewrite to generate correct rtl. + (rs6000_emit_sCOND): Handle E500. + (output_cbranch): Adjust for changes in rs6000_generate_compare. + (output_e500_flip_gt_bit): New. + + * config/rs6000/rs6000-protos.h (output_e500_flip_gt_bit): + Protoize. + +2004-04-19 Eric Christopher + + * config/mips/mips.h (DWARF2_ADDR_SIZE): New. + +2004-04-19 David Edelsohn + + * doc/install.texi (*-ibm-aix*): Add AIX 5.1 assembler and archiver + fix information. + +2004-04-19 Rainer Orth + + * doc/install.texi (Specific, mips-sgi-irix5): Fix IRIX 5.3 IDO + download URL. + +2004-04-19 Daniel Jacobowitz + + * stor-layout.c (layout_decl): Check DECL_PACKED before calling + ADJUST_FIELD_ALIGN. Check maximum_field_alignment after. + +2004-04-19 Andrew PInski + + * builtins.c (fold_builtin_cabs): Remove fndecl parameter. + (fold_builtin): Update caller to match. + + PR bootstrap/15009 + * bb-reorder.c (fix_up_fall_thru_edges): Init cond_jump. + + PR bootstrap/14999 + * builtins.c (fold_builtin_cabs): Mark fndecl as unused. + +2004-04-19 Richard Kenner + + * varasm.c (compare_constant, case VIEW_CONVERT_EXPR): Add case. + + * expmed.c (expand_mult_highpart_adjust): Make OP1 valid for MODE. + (expand_mult_highpart_optab): Likewise. + (expand_mult_highpart): Make OP1 valid for WIDER_MODE, not MODE. + +2004-04-19 Paul Brook + + * config/arm/arm.md (fixuns_truncsfsi2, fixuns_truncdfsi2, + floatunssisf2, floatunssidf2): New patterns. + +2004-04-18 Mark Mitchell + + PR other/14918 + * doc/invoke.texi (-fprofile-generate): Document requirement to + use -fprofile-generate when linking. + + * doc/extend.texi (Strong Using): Warn users against using this + feature. + +2004-04-18 Richard Sandiford + + * config/mips/mips-protos.h (m16_usym8_4, m16_usym5_4): Delete. + * config/mips/mips.h (mips_entry, mips_string_length): Delete. + (CONSTANT_POOL_BEFORE_FUNCTION, ASM_OUTPUT_POOL_EPILOGUE): Undefine. + * config/mips/mips.c (struct mips16_constant): Renamed from struct + constant. Propogate change throughout file. + (struct machine_function): Remove insns_len. + (mips_string_length, mips16_strings, string_constants): Delete. + (mips_classify_symbol): Return SYMBOL_CONSTANT_POOL for LABEL_REFs + when generating mips16 code. Remove special mips16 treatment of + string constants. + (mips_symbolic_constant_p): Allow mips16 constant pool accesses + to have the form LABEL+CONSTANT. + (mips_symbolic_address_p): Fix comment. + (m16_usym8_4, m16_usym5_4): Delete. + (mips_output_function_epilogue): Remove mips16 string handling. + (mips_output_mi_thunk): Call mips16_lay_out_constants. + (mips_select_section, mips_encode_section_info): Remove mips16 + string handling. + (struct mips16_constant_pool): New. + (add_constant): Take a mips16_constant_pool structure. Keep pool + sorted into order of ascending mode size. Keep track of the highest + possible start address, taking padding and the masking of the base PC + value into account. + (dump_constants_1): New function, split out from dump_constants. + Handle vector constants. Use gen_consttable_{int,float} rather than + separate functions for each mode. + (dump_constants): Simplify. Use GET_MODE_ALIGNMENT. Use gen_align + rather than separate functions for each alignment. + (mips_find_symbol): Delete. + (mips16_insn_length): New function, split out from + mips16_lay_out_constants. + (mips16_rewrite_pool_refs): New function. + (mips16_lay_out_constants): Rework. Remove string handling. + Always create an inline constant pool. + * config/mips/mips.md (UNSPEC_CONSTTABLE_INT, UNSPEC_CONSTTABLE_FLOAT) + (UNSPEC_ALIGN): New constants. + (UNSPEC_CONSTTABLE_[QHSD]I, UNSPEC_CONSTTABLE_[SD]F): Delete. + (UNSPEC_ALIGN_[248]): Delete. + (consttable_int, consttable_float, align): New patterns. + (consttable_[qhsd]i, consttable_[sd]f, align_[248]): Delete. + +2004-04-17 Aldy Hernandez + + * config/rs6000/altivec.h (vec_any_numeric): Correct typo in + __unn_args_eq. + +2004-04-17 Alan Modra + + PR target/14715 + * config/rs6000/rs6000.c (rs6000_stack_info): Make parm_size agree + with STARTING_FRAME_OFFSET. + +2004-04-17 Richard Sandiford + + * config/mips/mips.h (PREDICATE_CODES): Add macc_msac_operand. + * config/mips/mips.c (macc_msac_operand): New function. + * config/mips/mips.md (*msac): Move after *macc. + (*msac2): New. Generalize macc-related peepholes so that they apply + to msac too. + +2004-04-17 Paolo Bonzini + + * opts.c (decode_options): Do not enable flag_rename_registers + and flag_web at -O3. + * toplev.c (flag_rename_registers): Initialize + flag_rename_registers and flag_web to + AUTODETECT_FLAG_VAR_TRACKING. + (default_debug_hooks): New global. + (process_options): Initialize default_debug_hooks. Warn if + -fvar-tracking specified but not supported by the current + debug format. Do not run var tracking at -O0 or if not + supported by the current debug format, even if + -fvar-tracking was given. If -fno-rename-registers + is not specified, always run register renaming if var + tracking is supported by the default debugging information + format for the target, and we are at -O1 or higher; similarly + for -fweb, but only at -O2 or higher. + * doc/invoke.texi (Optimize Options): Document this. + +2004-04-17 Richard Sandiford + + * configure.ac (gcc_cv_ld_as_needed): Use AC_CACHE_CHECK. + * configure: Regenerate. + +2004-04-17 Richard Sandiford + + * gcc.c (used_arg): Check whether an option has been removed. + +2004-04-17 Rainer Orth + + * config.gcc (i[34567]86-*-solaris2*): Default to DWARF-2 + debugging on Solaris 7 and up. + +2004-04-16 Rainer Orth + + * doc/install.texi (Specific, mips-sgi-irix5): Reflect working + IRIX 5 port. + Remove -save-temps workaround, handled automatically. + Require GNU binutils 2.15 for debugging. + Remove SGI make warnings since GNU make is now required. + (Specific, mips-sgi-irix6): Some markup fixes. + Describe MIPSpro C problems and workarounds. + Mention working O32 ABI support. + Recommend GNU as 2.15 for O32 with debugging. + Remove description of fixed structure pass/return bug. + +2004-04-16 DJ Delorie + + * sdbout.c (sdbout_one_type): Use TYPE_VALUES for enums, not + TYPE_FIELDS. + (sdbout_finish): Don't free deferred_global_decls; it's GC'd. + +2004-04-16 John David Anglin + + * pa.md: Remove unnecessary declarations for asm_out_file. + + * pa64-regs.h (DBX_REGISTER_NUMBER): Simplify and correct mapping of + SAR register. Fix comment. + (ADDITIONAL_REGISTER_NAMES): Correct register number of SAR register + (%cr11). + + * pa64-hpux.h (LIB_SPEC): Fix library specification used with GNU ld. + +2004-04-16 Nick Clifton + + * config/arm/arm.c (arm_override_options): Revert previous patch. + * config/arm/t-xscale-elf: Disable iwmmxt multilibs until they can + be safely built. + +2004-04-16 Kazuhiro Inaoka + + * config/m32r/m32r.h (BIG_ENDIAN_BIT): Deleted to fix endian + bug. + (TARGET_LITTLE_ENDIAN, TARGET_BIG_ENDIAN, + TARGET_DEFAULT): Changed. Ditto. + (LITTLE_ENDIAN_BIT, TARGET_CPU_DEFAULT, + TARGET_ENDIAN_DEFAULT): Added. Ditto. + * config/m32r/little.h (TARGET_LITTLE_ENDIAN): Deleted. + (TARGET_ENDIAN_DEFAULT): Added. + +2004-04-15 Kaveh R. Ghazi + + * builtins.def (BUILT_IN_ISDIGIT, BUILT_IN_ISXDIGIT): Mark with + ATTR_CONST_NOTHROW_LIST. + +2004-04-15 Kaveh R. Ghazi + + PR/middle-end 14915 + * builtins.c (expand_builtin_signbit): Test BYTES_BIG_ENDIAN, not + BITS_BIG_ENDIAN. + +2004-04-15 Pat Haugen + + * ra-debug.c (ra_print_rtx): Add break's to case legs. + +2004-04-14 James E Wilson + + * Makefile.in (fixinc.sh): Set WARN_CFLAGS to empty string. + +2004-04-14 Nathanael Nerode + + * libada-mk.in: New file. + * configure.ac: Create libada-mk from libada-mk.in. + * configure: Regenerate. + +2004-04-14 Uros Bizjak + + * optabs.h (enum optab_index): Add new OTI_logb and OTI_ilogb. + (logb_optab, ilogb_optab): Define corresponding macros. + * optabs.c (init_optabs): Initialize logb_optab and ilogb_optab. + * genopinit.c (optabs): Implement logb_optab and ilogb_optab + using logb?f2 and ilogb?i2 patterns. + * builtins.c (expand_builtin_mathfn): Handle BUILT_IN_LOGB{,F,L} + using logb_optab, and BUILT_IN_ILOGB{,F,L} using ilogb_optab. + (expand_builtin): Expand BUILT_IN_LOGB{,F,L} and BUILT_IN_ILOGB{,F,L} + using expand_builtin_mathfn if flag_unsafe_math_optimizations is set. + + * reg-stack.c (subst_stack_regs_pat): Handle UNSPEC_XTRACT_FRACT + and UNSPEC_XTRACT_EXP. + + * config/i386/i386.md (*fxtractdf3, *fxtractsf3, *fxtractxf3): New + patterns to implement fxtract x87 instruction. + (logbdf2, logbsf2, logbxf2, ilogbsi2): New expanders to implement + logb, logbf, logbl, ilogb, ilogbf and ilogbl built-ins as inline x87 + intrinsics. + (UNSPEC_XTRACT_FRACT, UNSPEC_XTRACT_EXP): New unspecs to represent + x87's fxtract insn. + +2004-04-14 Eric Christopher + + * config/mips/t-elf: Enable multilibs by default. + +2004-04-14 Andreas Tobler + + * bb-reorder.c (fix_crossing_conditional_branches): Adjust the + previous fix to check HAVE_return at runtime too. + +2004-04-14 Nick Clifton + + * config/arm/arm.c (arm_override_options): If the user has not + specified an ABI, then default to AAPCS for the iWMMXt processor. + * config/arm/t-xscale-elf: Remove redundant multilib specifications. + * config/arm/t-xscale-coff: Likewise. + +2004-04-14 Kaveh R. Ghazi + + * builtins.c (fold_builtin_isdigit): New. + (fold_builtin): Handle BUILT_IN_ISDIGIT. + * defaults.h: Add TARGET_DIGIT0 and sort. + * doc/tm.texi: Add TARGET_BS and TARGET_DIGIT0. + +2004-04-14 Kaveh R. Ghazi + + * builtins.c (fold_builtin_cabs, fold_builtin): Use + `mathfn_built_in' to determine the new builtin. + * fold-const.c (fold): Likewise. + +2004-04-14 Richard Sandiford + + * doc/invoke.texi: Rename MIPS's -mfix-vr4122-bugs to -mfix-vr4120. + * config/mips/mips.h (MASK_FIX_VR4120): Renamed from MASK_FIX_VR4122. + (TARGET_FIX_VR4120): Likewise TARGET_FIX_VR4122. + (TARGET_SWITCHES): Replace -mfix-vr4122-bugs with -mfix-vr4120. + (ASM_SPEC): Update accordingly. + * config/mips/mips.c: Update after above renaming. + * config/mips/mips.md, config/mips/t-vr, config/mips/vr.h: Likewise. + * config/mips/vr4120-div.S: Renamed from vr4122-div.S. + +2004-04-13 James E Wilson + + * c-opt.c (c_common_post_options): If this_input_filename is NULL, + increment errorcount and return false instead of true. + +2004-04-13 Uros Bizjak : + + * optabs.c (expand_twoval_unop): Reorder function arguments. + * builtins.c (expand_builtin_mathfn_3): Update calls to + expand_twoval_unop. + + * reg-stack.c (subst_stack_regs_pat): Handle UNSPEC_TAN_ONE + and UNSPEC_TAN_TAN. Add missing comment. + + * config/i386/i386.md (*tandf3_1, *tansf3_1, *tanxf3_1): New + patterns to implement fptan x87 instruction. + (tandf2, tansf2, tanxf2): New expanders to implement tan, tanf + and tanl built-ins as inline x87 intrinsics. Define corresponding + peephole2 optimizers for 'fptan; fstp %st(0); fld1' sequence. + (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): New unspecs to represent + x87's fptan insn. + +2004-03-13 Richard Henderson + + * bb-reorder.c (fix_crossing_unconditional_branches): Use Pmode + for LABEL_REFs. + + * defaults.h (HOT_TEXT_SECTION_NAME): Add leading dot. + (UNLIKELY_EXECUTED_TEXT_SECTION_NAME): Likewise. + * doc/invoke.texi: Update to match. + + * varasm.c (unlikely_text_section): Use assemble_align instead of + ASM_OUTPUT_ALIGN. Use it in the correct place with an approximately + correct alignment argument. + +2004-04-13 Ulrich Weigand + + * reload1.c (emit_reload_insns): Set reg_has_output_reload to one + after setting reg_last_reload_reg for optional output reloads. + +2004-04-12 Fariborz Jahanian + + * config/rs6000/altivec.h (vec_mergeh, vec_mergel): + Definition of these two macros are corrected by adding + matchine right paren. + +2004-04-12 Jonathan Larmour + + * fix-header.c: kill(), putenv() and tzset() are POSIX not ANSI. + +2004-04-12 Roger Sayle + + * config/i386/i386.c (output_387_reg_move): New function. + * config/i386/i386-protos.h (output_387_reg_move): Prototype here. + * config/i386/i386.md (*movsf_1, *movsf1_nointerunit, + *movdf_nointeger, *movdf_integer, *movxf_nointeger, *movxf_integer, + *extendsfdf2_1, *extendsfxf2_1, *extenddfxf2_1, truncdfsf2_noop, + truncxfsf2_noop, truncxfdf2_noop): Call output_387_reg_move. + +2004-04-12 Richard Kenner + + * c-decl.c (finish_decl): Make a decl_stmt for a variable-sized + TYPE_DECL. + * c-semantics.c (genrtl_decl_stmt): Handle TYPE_DECL. + * stmt.c (expand_decl): Remove redundant expansion of TYPE_DOMAIN. + * stor-layout.c (variable_size): Don't check for MINUS_EXPR. + Use skip_simple_arithmetic to find SAVE_EXPR. + (force_type_save_exprs, force_type_save_exprs_1): New functions. + * tree-inline.c (remap_type, case POINTER_TYPE, case REFERENCE_TYPE): + Properly chain multiple pointers. + (copy_tree_r): Copy a TYPE_DECL. + * tree.c (variably_modified_type_p): Add some missing tests and + make some other minor changes. + * tree.h (force_type_save_exprs): New declaration. + +2004-04-12 Roger Sayle + + * simplify-rtx.c (simplify_binary_operation) : + Remove fall throughs. Convert 0/x and 0%x into x&0 when x has + side-effects. Don't convert x/1.0 into x if we honor signaling NaNs. + Convert x/-1.0 into -x if we don't honor signaling NaNs. Convert + x/-1 into -x. Optimize x%1 into x&0 if x has side-effects. Optimize + x%-1 into 0 (or x&0 if x has side-effects). + +2004-04-11 Aldy Hernandez + + * config/rs6000/rs6000.md: Document why a pattern is not + available. + + * config/rs6000/rs6000.c (rs6000_emit_cmove): Disable comparisons + of floats on the E500. + (branch_positive_comparison_operator): Do not allow NE even on the + E500. + +2004-04-11 Aldy Hernandez + + * config/rs6000/rs6000.c (rs6000_assemble_integer): Change + in_text_unlikely_section to in_unlikely_text_section. + +2004-04-11 Roger Sayle + + * fold-const.c (fold_binary_op_with_conditional_arg): Tweak + calling convention to allow a NULL_TREE to be returned. Factor + sanity checks from callers, return NULL_TREE when appropriate. + (fold): Handle COMPOUND_EXPR operands of binary expressions + before COND_EXPR operands. Use reorder_operands_p(a,b) to check + whether a op (b,c) can be rewritten as (b, a op c). Simplify + calls to fold_binary_op_with_conditional_arg. + +2004-04-11 Kaveh R. Ghazi + + * config/mips/iris5.h (current_section_flags): Add + in_unlikely_executed_text and default case. + +2004-04-11 Andreas Tobler + + * bb-reorder.c (fix_crossing_conditional_branches): Fix bootstrap + failure on solaris. Place ifdef HAVE_return around gen_ret call. + * cfgrtl.c (force_nonfallthru_and_redirect): Remove ifdef + HAVE_return and place it around the place where it is needed. + +2004-04-11 Andrew Pinski + + * varasm.c (text_section): Use TEXT_SECTION_ASM_OP and + ASM_OUTPUT_ALIGN instead of SECTION_FORMAT_STRING + and NORMAL_TEXT_SECTION_NAME. + (unlikely_text_section): Check targetm.have_named_sections + instead of TARGET_ASM_NAMED_SECTION and use TEXT_SECTION_ASM_OP + instead of SECTION_FORMAT_STRING. + * config/mips/iris5.h (current_section_name): Add + in_unlikely_executed_text case and move the abort into the switch. + * config/rs6000/sysv4.h (HOT_TEXT_SECTION_NAME): Remove. + (NORMAL_TEXT_SECTION_NAME): Remove. + (UNLIKELY_EXECUTED_TEXT_SECTION_NAME): Remove. + (SECTION_FORMAT_STRING): Remove. + * defaults.h (SECTION_FORMAT_STRING): Remove. + * tm.texi (NORMAL_TEXT_SECTION_NAME): Remove. + (SECTION_FORMAT_STRING): Remove. + +2004-04-10 Joseph S. Myers + + * c-typeck.c (common_type): Prefer long long to long when same + precision. + +2004-04-09 Zack Weinberg + + PR 14887 + * config/ia64/hpux.h (MEMBER_TYPE_FORCES_BLK): Look only at + mode argument. + * config/ia64/ia64.c (ia64_hpux_file_end): Check + TREE_SYMBOL_REFERENCED on DECL_ASSEMBLER_NAME, not DECL_NAME. + +2004-04-09 Roger Sayle + + * simplify-rtx.c (mode_signbit_p): New function to check whether + an RTX is an immediate constant that represents the most significant + bit of a given machine mode. + (simplify_unary_operation) : Optimize ~(X+C) as X ^ ~C, where + C is the sign bit. + (simplify_binary_operation) : Optimize (X^C1) + C2 as X^(C1^C2) + when C2 is the sign bit. + (simplify_binary_operation) : Canonicalize X^C as X+C when C + is the sign bit. Optimize (X+C1) ^ C2 as X^(C1^C2) when C1 is the + sign bit. + +2004-04-09 Kaveh R. Ghazi + + * builtins.c (mathfn_built_in): Check TYPE_MAIN_VARIANT, not + TYPE_MODE. + +2004-04-09 Andrew Pinski + + * c-common.c (handle_noreturn_attribute): Use TYPE_READONLY instead + of TREE_READONLY for types. + +2004-04-09 Caroline Tice + + * basic-block.h (struct edge_def): Add new field, crossing_edge. + (struct basic_block_def): Add new field, partition. + (UNPARTITIONED, HOT_PARTITION, COLD_PARTITION): New constant macro + definitions. + (partition_hot_cold_basic_blocks): Add extern function + declaration. + * bb-reorder.c (function.h, obstack.h, expr.h, regs.h): Add four new + include statements. + (N_ROUNDS): Increase the maximum number of rounds by 1. + (branch_threshold): Add array value for new round. + (exec_threshold): Add array value for new round. + (push_to_next_round_p): New function. + (add_unlikely_executed_notes): New function. + (find_rarely_executed_basic_blocks_and_crossing_edges): New function. + (mark_bb_for_unlikely_executed_section): New function. + (add_labels_and_missing_jumps): New function. + (add_reg_crossing_jump_notes): New function. + (fix_up_fall_thru_edges): New function. + (find_jump_block): New function. + (fix_crossing_conditional_branches): New function. + (fix_crossing_unconditional_branches): New function. + (fix_edges_for_rarely_executed_code): New function. + (partition_hot_cold_basic_blocks): New function. + (find_traces): Add an extra round for partitioning hot/cold + basic blocks. + (find_traces_1_round): Add a parameter. Modify to push all cold blocks, + and only cold blocks, into the last (extra) round of collecting traces. + (better_edge_p): Add a parameter. Modify to favor non-crossing edges + over crossing edges. + (bb_to_key): Add code to correctly identify cold blocks when + doing partitioning. + (connect_traces): Modify to connect all the non-cold traces first, then + go back and connect up all the cold traces. + (reorder_basic_blocks): Add call to add_unlikely_executed_notes. + * cfg.c (entry_exit_blocks): Add initialization for partition field in + entry and exit blocks. + * cfgbuild.c (make_edges): Update current_function_has_computed_jump + if we are doing hot/cold partitioning. + * cfgcleanup.c (cfglayout.h): Add new include statement. + (try_simplify_condjump): Modify to not attempt on blocks with jumps + that cross section boundaries. + (try_forward_edges): Likewise. + (merge_blocks_move_predecessor_nojumps): Likewise. + (merge_blocks_move_successor_nojumps): Likewise. + (merge_blocks_move): Likewise. + (try_crossjump_to_edge): Modify to not attempt after we have done + the block partitioning. + (try_crossjump_bb): Modify to not attempt on blocks with jumps that + cross section boundaries. + (try_optimize_cfg): Likewise. + * cfghooks.c (tidy_fallthru_edges): Modify to not remove indirect + jumps that cross section boundaries. + * cfglayout.c (flags.h): Add new include statement. + (update_unlikely_executed_notes): New function. + (fixup_reorder_chain): Add code so when a new jumping basic block is + added, it's UNLIKELY_EXECUTED_CODE and REG_CROSSING_JUMP notes are + updated appropriately. + (duplicate_insn_chain): Add code to duplicate the new NOTE insn + introduced by this optimization. + * cfglayout.h (scan_ahead_for_unlikely_executed_note): Add new + extern function declaration. + * cfgrtl.c (can_delete_note_p): Add NOTE_INSN_UNLIKELY_EXECUTED_CODE to + list of notes that can be deleted. + (create_basic_block_structure): Add initialization for partition field. + (rtl_can_merge_blocks): Modify to test blocks for jumps that cross + section boundaries. + (try_redirect_by_replacing_jump): Modify to not attempt on jumps that + cross section boundaries. + (commit_one_edge_insertion): Add code so newly created basic block + ends up in correct (hot or cold) section. Modify to disallow + insertions before NOTE_INSN_UNLIKELY_EXECUTED_CODE notes. + (rtl_verify_flow_info_1): Add code to verify that no fall_thru edge + crosses section boundaries. + (cfg_layout_can_merge_blocks_p): Modify to test blocks for jumps that + cross section boundaries. + (force_nonfallthru_and_redirect): Modify to make sure new basic block + ends up in correct section, with correct notes attached. + * common.opt (freorder-blocks-and-partition): Add new flag for this + optimization. + * dbxout.c (dbx_function_end): Add code to make sure scope labels at + the end of functions are written into the correct (hot or cold) + section. + (dbx_source_file): Add code so writing debug file information + doesn't incorrectly change sections. + * defaults.h (NORMAL_TEXT_SECTION_NAME): New constant macro, for use + in partitioning hot/cold basic blocks into separate sections. + (SECTION_FORMAT_STRING): New constant macro, for linux/i386 hot/cold + section partitioning. + (HAS_LONG_COND_BRANCH): New constant macro, indicating whether or not + conditional branches can span all of memory. + (HAS_LONG_UNCOND_BRANCH): New constant macro, indicationg whether or not + unconditional branches can span all of memory. + * final.c (scan_ahead_for_unlikely_executed_note): New function. + (final_scan_insn): Add code to check for NOTE instruction indicating + whether basic block belongs in hot or cold section, and to make sure + the current basic block is being written to the appropriate section. + Also added code to ensure that jump table basic blocks end up in the + correct section. + * flags.h (flag_reorder_blocks_and_partition): New flag. + * ifcvt.c (find_if_case_1): Modify to not attempt if conversion if + one of the branches has a jump that crosses between sections. + (find_if_case_2): Likewise. + (ifcvt): Modify to not attempt to mark loop exit edges after + hot/cold partitioning has occurred. + * opts.c (decode_options): Code to handle new flag, + flag_reorder_blocks_and_partition; also to turn it off if + flag_exceptions is on. + (common_handle_option): Code to handle new flag, + flag_reorder_blocks_and_partition. + * output.h (unlikely_text_section): New extern function declaration. + (in_unlikely_text_section): New extern function declaration. + * passes.c (rest_of_handle_stack_regs): Add + flag_reorder_blocks_and_partition as an 'or' condition for calling + reorder_basic_blocks. + (rest_of_handle_reorder_blocks): Add flag_reorder_blocks_and_partition + as an 'or' condition for calling reorder_basic_blocks. + (rest_of_compilation): Add call to partition_hot_cold_basic_blocks. + * print-rtl.c (print_rtx): Add code for handling new note, + NOTE_INSN_UNLIKELY_EXECUTED_CODE + * rtl.c (NOTE_INSN_UNLIKELY_EXECUTED_CODE): New note insn (see below). + (REG_CROSSING_JUMP): New kind of reg_note, to mark jumps that + cross between section boundaries. + * rtl.h (NOTE_INSN_UNLIKELY_EXECUTED_CODE): New note instruction, + indicating the basic block containing it belongs in the cold section. + (REG_CROSSING_JUMP): New type of reg_note, to mark jumps that cross + between hot and cold sections. + * toplev.c (flag_reorder_blocks_and_partition): Add code to + initialize this flag, and to tie it to the command-line option + freorder-blocks-and-partition. + * varasm.c (cfglayout.h): Add new include statement. + (unlikely_section_label_printed): New global variable, used for + determining when to output section name labels for cold sections. + (in_section): Add in_unlikely_executed_text to enum data structure. + (text_section): Modify code to use SECTION_FORMAT_STRING and + NORMAL_TEXT_SECTION_NAME macros. + (unlikely_text_section): New function. + (in_unlikely_text_section): New function. + (function_section): Add code to make sure beginning of function is + written into correct section (hot or cold). + (assemble_start_function): Add code to make sure stuff is written to + the correct section. + (assemble_zeros): Add in_unlikely_text_section as an 'or' condition + to an if statement that was checking 'in_text_section'. + (assemble_variable): Add 'in_unlikely_text_section' as an 'or' + condition to an if statement that was checking 'in_text_section'. + (default_section_type_flags_1): Add check: if in cold section + flags = SECTION_CODE. + * config/darwin.c (darwin_asm_named_section): Modify to use + SECTION_FORMAT_STRING if we are partitioning hot/cold blocks. + * config/i386/i386.h (HAS_LONG_COND_BRANCH): Defined this macro + specifically for the i386. + (HAS_LONG_UNCOND_BRANCH): Defined this macro specifically for the i386. + * config/rs6000/darwin.h (UNLIKELY_EXECUTED_TEXT_SECTION_NAME): Change + text string to something more informative. + (NORMAL_TEXT_SECTION_NAME): Add new definition. + (SECTION_FORMAT_STRING): Add new definition. + * config/rs6000/rs6000.c (rs6000_assemble_integer): Add + '!in_unlikely_text_section' as an 'and' condition to an if statement + that was already checking '!in_text_section'. + * config/rs6000/sysv4.h (HOT_TEXT_SECTION_NAME,NORMAL_TEXT_SECTION_NAME, + UNLIKELY_EXECUTED_TEXT_SECTION_NAME,SECTION_FORMAT_STRING): Make + sure these are properly defined for linux on ppc. + * doc/invoke.texi (freorder-blocks-and-partition): Add documentation + for this new flag. + * doc/rtl.texi (REG_CROSSING_JUMP): Add documentation for new + reg_note. + * doc/tm.texi (NORMAL_TEXT_SECTION_NAME, SECTION_FORMAT_STRING, + HAS_LONG_COND_BRANCH, HAS_LONG_UNCOND_BRANCH): Add documentation for + these new macros. + +2004-04-08 Roger Sayle + + * function.c (gen_mem_addressof): When changing the RTX from a REG + to a MEM, clear MEM_VOLATILE_P which was formerly REG_USERVAR_P. + +2004-04-08 Roger Sayle + + PR target/14888 + * config/i386/i386.md (truncdfsf2_noop, truncxfsf2_noop, + truncxfdf2_noop): Provide dummy "fmov" implementations. + +2004-04-08 Ian Lance Taylor + + * gcc.c (default_compilers): Add missing initializers. + + * config/rs6000/host-darwin.c (darwin_rs6000_gt_pch_use_address): + Return 1 if file was successfully mapped. + +2004-04-08 Geoffrey Keating + + PR pch/13419 + PR pch/14137 + Radar #: 3315288 + * doc/invoke.texi (Precompiled Headers): Suggest -o + to put an output file in a particular place. Be more detailed + about which options affect PCH validity and which options + might not work. + * c-pch.c (pch_matching): New. + (MATCH_SIZE): New. + (struct c_pch_validity): New field 'match'. + (pch_init): Handle pch_matching. + (c_common_valid_pch): Check pch_matching. + + * explow.c: Fix typo defining default of PROMOTE_FUNCTION_MODE. + +2004-04-08 Mark Mitchell + + * doc/invoke.texi (Precompiled Headers): Warn about known + problems. + +2004-04-08 Danny Smith + + PR c++/14808 + * defaults.h (TARGET_USE_LOCAL_THUNK_ALIAS_P): New macro. Default + to 1 if ASM_OUTPUT_DEF is defined. + * doc/tm.texi (TARGET_USE_LOCAL_THUNK_ALIAS_P): Document. + * config/i386/cygming.h (TARGET_USE_LOCAL_THUNK_ALIAS_P): Define. + Set to non-zero iff not a one_only decl. + +2004-04-08 Paul Brook + + * arm.h (CLASS_LIKELY_SPILLED_P): Define. + +2004-04-08 Paul Brook + + * explow.c (promote_mode): Use PROMOTE_FUNCTION_MODE instead of + PROMOTE_FOR_CALL_ONLY. + * config/arm/arm-protos.h (arm_function_value): Declare. + * config/arm/arm.h (TARGET_PROMOTE_FUNCTION_ARGS): Define. + (TARGET_PROMOTE_PROTOTYPES): Return false. + (arm_function_value): New function. + * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Define. + (FUNCTION_VALUE): Call arm_function_value. + * config/cris/cris.h (PROMOTE_MODE): Rename ... + (PROMOTE_FUNCTION_MODE): ... to this. + (PROMOTE_FOR_CALL_ONLY): Remove. + * config/mmix/mmix.h: Likewise. + * config/s390/s390.h: Likewise. + * config/sparc/sparc.h: Likewise. + * config/sparc/sparc.c: Update comments about PROMOTE_MODE. + * doc/tm.texi (PROMOTE_FUNCTION_MODE): Document. + (TARGET_PROMOTE_FUNCTION_MODE, TARGET_PROMOTE_FUNCTION_RETURN): Update. + (PROMOTE_FOR_CALL_ONLY): Remove. + +2004-04-08 Joel Sherrill + + PR ada/14538 + * ada/5rosinte.adb: Remove fake mprotect() body. + * ada/5rosinte.ads: Add SA_SIGINFO. + * ada/5rtpopsp.adb: Rewrite to use new interface. + * ada/init.c: Reorder so the simple single OS conditional __rtems__ + is tested before more complex ones which mix UNIX and embedded + systems in the conditional. + +2004-04-08 Joel Sherrill + + PR ada/14665 + * ada/osint.adb (Find_Program_Name): Rework to properly handle + filenames which end in .exe or have versioning suffixes like VMS. + +2004-04-08 Andrew Pinski + + PR target/10129 + * config/darwin.c (darwin_encode_section_info): When the decl has + a DECL_INITIAL, it is only defined also when it is not a common. + +2004-04-08 Kaveh R. Ghazi + + * builtins.c (fold_builtin_isascii, fold_builtin_toascii): New. + (fold_builtin): Handle BUILT_IN_ISASCII and BUILT_IN_TOASCII. + +2004-04-07 H.J. Lu + + * config/ia64/ia64.c (ia64_encode_section_info): Don't prod + global register variables. + +2004-04-07 Joseph S. Myers + + * fixinc/inclhack.def (rpc_xdr_lvalue_cast_a, + rpc_xdr_lvalue_cast_b): New fixes. + * fixinc/fixincl.x: Regenerate. + * fixinc/tests/base/rpc/xdr.h: Add new tests. + +2004-04-07 David Edelsohn + + * config/rs6000/rs6000.c (processor_target_table): Add MASK_MFCRF + to power4 and power5 entries. + +2004-04-06 Geoffrey Keating + + * c-common.h (pending_lang_change): Mark for PCH. + +2004-04-07 Caroline Tice + + * gcc.c (main): Move 'break' in main loops (on an error) + to wait until error processing has occurred. + +2004-04-06 Nathanael Nerode + + * config.gcc: Stop changing enable_threads midstream. + Replace uses of enable_threads_flag with enable_threads. + * configure.ac: Replace uses of enable_threads_flag with + enable_threads. Improve autoconf quotation in one place. + * configure: Regenerate. + +2004-04-06 Uros Bizjak + + * builtins.c: Implement support for sincos function. + (expand_builtin_mathfn): Remove BUILT_IN_SIN{,F,L} and + BUILT_IN_COS{,F,L}. + (expand_builtin_mathfn_3): New function. + (expand_builtin): Expand BUILT_IN_SIN{,F,L} and + BUILT_IN_COS{,F,L} using expand_builtin_mathfn_3 if + flag_unsafe_math_optimization is set. + + * optabs.h (enum optab_index): Add new OTI_sincos. + (sincos_optab): Define corresponding macro. + + * optabs.c (init_optabs): Initialize sincos_optab. + (expand_twoval_unop): New function. + + * genopinit.c (optabs): Implement sincos_optab using sincos?f3 + patterns. + + * reg-stack.c (subst_stack_regs_pat): Handle UNSPEC_SINCOS_COS + and UNSPEC_SINCOS_SIN. + + * config/i386/i386.md (sincosdf3, sincossf3, *sincosextendsfdf3, + sincosxf3): New patterns to implement sincos, sincosf and sincosl + built-ins as inline x87 intrinsics. Define splits for + sindf2, sinsf2, *sinextendsfdf2, sinxf2, cosdf2, + cossf2, *cosextendsfdf2 and cosxf2 patterns from corresponding + sincos patterns. + (sindf2, sinsf2, sinxf2): Rename to *sindf2, *sinsf2, *sinxf2. + (cosdf2, cossf2, cosxf2): Rename to *cosdf2, *cossf2, *cosxf2. + + (UNSPEC_SINCOS_SIN, UNSPEC_SINCOS_COS): New unspecs to represent + x87's fsincos insn. + +2004-04-06 Devang Patel + + PR 14467 + * config/darwin.h (LINK_COMMAND_SPEC): Use c++filt instead of c++filt3. + +2004-04-06 John David Anglin + + * doc/install.texi: Update HP-UX 11 installation procedure. + +2004-04-06 Paul Brook + + * doc/sourcebuild.texi: Remove obsolete contraint on testcases. + +2004-04-05 Kaz Kojima + + * config/sh/sh.c (prepare_move_operands): Use emit_call_insn + when the TLS address is generated by a function call. + * config/sh/sh.md (tls_global_dynamic): Use a call expression. + (tls_local_dynamic): Likewise. + +2004-04-05 Andrew Pinski + + * tree.c (reconstruct_complex_type): Use TYPE_READONLY + and TYPE_VOLATILE. + +2004-04-05 Caroline Tice + + * gcc.c (combine_flag): New global variable, for new driver option. + (struct compiler): Add two new fields, to be used when + combining multiple input files in a single pass (IMA). + (default_compilers): Add values for the new fields to all + compiler entries. Modify the "@c" compiler entry for doing IMA + properly with "-save-temps" and the "combine" flag. + (option_map): Add new driver option, "--combine", to tell driver + to pass multiple input files to compiler at one time. + (have_o_argbuf_index): New global variable. + (store_arg): Modify to assign value to have_o_argbuf_index. + (struct infile): Add three new fields, to help with IMA. + (display_help): Add help for new "combine" option. + (process_command): Remove local variable have_o; add code to check + for new "combine" option; remove assignment to combine_inputs. + (do_spec_1): Modify to deal with IMA better. + (main): Make variable 'lang_n_infiles' local to entire function + rather than to a single block. Use flag combine_flag to + determine whether to do IMA or not; Modify loop initializing + infiles to deal properly with linker files. + Add code for doing preprocessing in presence of + IMA with "-save-temps" flag. Modify "main" loop to handle + multiple input files, in multiple languages, with or without + preprocessing, gracefully. + * toplev.c (set_src_pwd): Modify to not complain if attempting to + re-set it to same directory it's previously been set to (avoid + irritating, meaningless warning messages when doing IMA with + save-temps). + * doc/invoke.texi: Add "-combine" to list of Overall Options; + remove documentation about IMA that is no longer accurate; Add + documentation explaining what "-combine" does. + * ada/lang-specs.h: Add initialization values for new fields in + "struct compiler". + * cp/lang-specs.h: Likewise. + * f/lang-specs.h: Likewise. + * java/lang-specs.h: Likewise. + * objc/lang-specs.h: Likewise. + * treelang/lang-specs.h: Likewise. + +2004-04-05 David Edelsohn + + * config/rs6000/rs6000.c (VTABLE_NAME_P): Add _ZTI to special + symbol handling. + +2004-04-05 Jakub Jelinek + John David Anglin + + PR optimization/13424 (hppa), bootstrap/14462, c/14828 + * pa.md: Use replace_equiv_address to retain the attributes of the + memory operands used in the split and peephole2 patterns for optimizing + the pre-reload movstrsi, movstrdi, clrstrsi and clrstrdi patterns. + +2004-04-05 Richard Kenner + + * c-decl.c (build_compound_literal): Use TYPE_READONLY. + * emit-rtl.c (set_mem_attributes_minus_bitpos): Likewise. + * objc/objc-act.c (adorn_decl, gen_declspecs): Likewise. + * c-typeck.c (decl_constant_value): Don't access DECL_INITIAL of a + PARM_DECL. + * calls.c (flags_from_decl_or_type): Use TYPE_READONLY and do so only + for a type. + * print-tree.c (print_node): Properly handle side-effects, readonly, + and constant flags. + * tree.c (build1_stat, build_expr_wfl): Only look at TREE_SIDE_EFFECTS + and TREE_CONSTANT if not a type. + * tree.h (IS_NON_TYPE_CODE_CLASS): New macro. + (IS_EXPR_CODE_CLASS): Write 'E', not 'e'. + (NON_TYPE_CHECK): New macro. + (TREE_SIDE_EFFECT, TREE_READONLY, TREE_CONSTANT: Add check. + +2004-04-05 Eric Botcazou + + * config/sparc/sol2-bi.h (PREFERRED_DEBUGGING_TYPE): Set + to DWARF2_DEBUG unconditionally. + (ASM_DEBUG_SPEC): Set the default to --gdwarf2 unconditionally. + +2004-04-04 Ian Lance Taylor + Nathanael Nerode + + PR target/14548 + * config.host: Set the shell variable host_can_use_collect2. + Set it to yes by default, and to no for alpha*-dec-*vms*, + i[34567]86-*-mingw32*, and powerpc-*-beos*. + * configure.ac: Set and substitute the shell variable collect2. + Give an error if use_collect2 is yes and host_can_use_collect2 is + no. + * Makefile.in (COLLECT2): Rename from USE_COLLECT2. Change all + uses. Initialize to @collect2@. + (STAGESTUFF): Remove $(USE_COLLECT2). + * config/alpha/x-vms (USE_COLLECT2): Don't set. + * config/i386/t-mingw32 (USE_COLLECT2): Likewise. + * config/rs6000/t-beos (USE_COLLECT2): Likewise. + * config/pa/t-pa64: Remove commented out USE_COLLECT2. + * configure: Regenerate. + +2004-04-04 Roger Sayle + + * simplify-rtx.c (simplify_binary_operation): Constant fold + DIV, MOD, UDIV and UMOD using div_and_round_double. + +2004-04-04 Mark Mitchell + + PR c++/14804 + * varasm.c (initializer_constant_valid_p): Allow NOP_EXPRs to + RECORD_TYPEs. + +2004-04-04 Mark Mitchell + + * doc/invoke.texi (-mabi=o64): Create link to O64 ABI + documentation. + +2004-04-04 Roger Sayle + + * cse.c (cse_insn): Correct usage of simplify_replace_rtx when + updating the REG_EQUAL note on an insn's libcall_insn. + +2004-04-04 Roger Sayle + + * df.h: Tidy up whitespace in the definitions of the DF_ flags. + +2004-04-03 Roger Sayle + + * fold-const.c (fold) : Guard (-A)+B -> B-A transformation + with reorder_operands_p. + +2004-04-03 Jan Hubicka + + * md.texi (vec_set, vec_extract, vec_init): Document. + +2004-04-02 Gabor Loki + + * opts.c (decode_options): Do function inlining with very small + max-inline-insns-* parameters when optimizing for size. + +2004-04-02 Vladimir Makarov + + * config/i386/i386.h (TARGET_NOCONA): New macro. + (TARGET_CPU_CPP_BUILTINS): Add code for Nocona. + (processor_type): Add PROCESSOR_NOCONA. + + * config/i386/i386.md (cpu): Add nocona to the attribute values. + + * config/i386/i386.c (nocona_cost): New variable. + (m_NOCONA): New macro. + (x86_push_memory, x86_movx, x86_cmove, x86_deep_branch, + x86_branch_hints, x86_use_sahf, x86_single_stringop, + x86_sub_esp_4, x86_sub_esp_8, x86_add_esp_4, x86_add_esp_8, + x86_integer_DFmode_moves, x86_partial_reg_dependency, + x86_memory_mismatch_stall, x86_accumulate_outgoing_args, + x86_decompose_lea, x86_arch_always_fancy_math_387, + x86_sse_partial_reg_dependency, x86_sse_load0_by_pxor, + x86_ext_80387_constants, x86_four_jump_limit): + (override_options): Add nocona_cost to processor_target_table. + Set up PROCESSOR_NOCONA for Nocona entry in processor_alias_table. + (incdec_operand): Prevent inc/dec generation for Nocona too. + (ix86_issue_rate): Add PROCESSOR_NOCONA. + +2004-04-01 Andrew Pinski + + * rtlanal.c (find_reg_note): Manually + unswitch the loop. + +2004-04-01 Mark Mitchell + + * genemit.c (gen_split): Change prototype of generated code. + * genrecog.c (write_action): Adjust prototype for and calls to + gen_split_*. + * gensupport.c (struct queue_elem): Add split field. + (queue_pattern): Return a value. Clear the split field. + (process_rtx): Maintain an association between an insn and the + split generated from it for a define_insn_and_split. + (process_one_cond_exec): Generate a new split for a + define_insn_and_split. + * config/arm/arm-protos.h (arm_split_constant): Add insn + parameter. + (emit_constant_insn): New function. + (arm_gen_constant): Use it. + * config/arm/arm.md: Adjust calls to arm_split_constant. + +2004-04-02 Jan Hubicka + + * cgraph.c: Add overall comment. + (cgraph_inline_hash): New global variable. + (cgraph_create_node): Break out from ... + (cgraph_node): ... here. + (cgraph_edge): New function. + (cgraph_create_edge): New CALL_EXPR argument; some sanity checking. + (cgraph_remove_edge): Accept edge, intead of source and destination. + (cgraph_redirect_edge_callee): New. + (cgraph_remove_node): Update all new datastructures. + (cgraph_record_call, cgraph_remove_call): Kill. + (dump_cgraph_node): Break out from ... ; dump new datastructures. + (dump_cgraph): ... here. + (cgraph_function_possibly_inlined_p): Use new hashtable. + (cgraph_clone_edge, cgraph_clone_node): New. + * cgraph.h: Include hashtab.h + (struct cgraph_global_info): Kill cloned_times, inline_once, will_be_output + fields, add inlined_to pointer. + (cgraph_node): Add pointer to next_clone. + (cgraph_remove_edge, cgraph_create_edge): Update prototype. + (cgraph_remove_call, cgraph_record_call): Kill. + (cgraph_inline_hash): Declare. + (dump_cgraph_node, cgraph_edge, cg4raph_clone_edge, cgraph_clone_node, + cgraph_redirect_edge_callee): Declare. + (cgraph_create_edges, cgraph_inline_p): Update prorotype. + (cgraph_preserve_function_body_p, verify_cgraph, verify_cgraph_node, + cgraph_mark_inline_edge, cgraph_clone_inlined_nodes): Declare. + * cgraphunit.c: Add overall comment. + (cgraph_optimize_function): Kill. + (cgraph_assemble_pending_functions): Do not assemble inline clones. + (cgraph_finalize_function): Update call of cgraph_remove_node + (record_call_1): Record call sites. + (cgraph_create_edges): Accept node instead of decl argument. + (error_found): New static variable. + (verify_cgraph_node_1, verify_cgraph_node, verify_cgraph): New functions. + (cgraph_analyze_function): Update for new datastructures. + (cgraph_finalize_compilation_unit): Plug memory leak. + (cgraph_optimize_function): Kill. + (cgraph_expand_function): Do not use cgraph_optimize_function. + (INLINED_TIMES, SET_INLINED_TIMES, cgraph_inlined_into, + cgraph_inlined_callees): Kill. + (cgraph_remove_unreachable_nodes): Verify cgraph; update handling of + clones. + (estimate_growth): Simplify. + (cgraph_clone_inlined_nodes): New function. + (cgraph_mark_inline_edge): Re-implement. + (cgraph_mark_inline): Likewise. + (cgraph_check_inline_limits): Simplify. + (cgraph_recursive_inlining_p): New. + (update_callee_keys): Break out from ... + (cgraph_decide_inlining_of_small_functions): ... here; simplify. + (cgraph_decide_inlining, cgraph_decide_inlining_incrementally): + Likewise. + (cgraph_expand_all_functions): Remove inline clones from the ordered + list. + (cgraph_preserve_function_body_p): New predicate. + (cgraph_optimize): Verify cgraph. + * function.h (struct function): Add fields saved_tree/saved_args. + * timevar.def (TV_CGRAPH_VERIFY): Use verifier. + * toplev.c (rest_of_compilation): Do not free cfun. + * tree-inline.c: Include function.h + (struct inline_data): Add saving_p field; replace decl/current_decl by + node/current_node. + (insert_decl_map): New function. + (copy_body_r): Handle saving; update cgraph datastructure. + (copy_body): Handle recursive inlining. + (initialize_inlined_parameters): Likewise. + (expand_call_inline): Propagate node attributes; update cgraph. + (optimize_inline_calls): Verify that datastructure still match. + (save_body): New function. + * tree-inline.h (save_body): New. + * tree-optimize.c (tree_rest_of_compilation): preserve function body; do inlining. + * langhooks-def.c (LANG_HOOKS_UPDATE_DECL_AFTER_SAVING): New. + * langhooks.c (lang_hooks): Add update_decl_after_saving. + +2004-04-01 Serge Belyshev <1319@bot.ru> + + PR target/14702 + * config/i386/i386.md: fix source operand constraints in + mmx_pshufw, sse2_pshufd, sse2_pshuflw, sse2_pshufhw + +2004-04-01 Waldek Hebisch + + * fold-const.c (folda): Preserve types of comparisons. + 2004-04-01 Richard Henderson * toplev.c (backend_init): Move init_optimization_passes call ...