OSDN Git Service

patch from Anil Paranjpe to fix H8/300 .ident problem.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
index abbb5b6..14134e9 100644 (file)
+2004-04-20  Anil Paranjpe   <anilp1@kpitcummins.com>
+
+       * toplev.c (compile_file): Move targetm.asm_out.file_end call to end.
+
+2004-04-20  Richard Sandiford  <rsandifo@redhat.com>
+
+       * 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  <zlomekj@suse.cz>
+
+       * function.c (assign_parms): Force
+       MEM_EXPR (DECL_INCOMING_RTL (parm)) == parm.
+
+2004-04-20  Josef Zlomek  <zlomekj@suse.cz>
+
+       * var-tracking.c (variable_part_different_p): Variable parts differ
+       when the most recent locations differ.
+
+2004-04-19  James E Wilson  <wilson@specifixinc.com>
+
+       * rtl.h (reg_set_last): Delete declaration.
+       * rtlanal.c (reg_set_last): Delete.
+
+2004-04-19  Roger Sayle  <roger@eyesopen.com>
+
+       * 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  <aldyh@redhat.com>
+
+        * 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  <echristo@redhat.com>
+
+       * config/mips/mips.h (DWARF2_ADDR_SIZE): New.
+
+2004-04-19  David Edelsohn  <edelsohn@gnu.org>
+
+       * doc/install.texi (*-ibm-aix*): Add AIX 5.1 assembler and archiver
+       fix information.
+
+2004-04-19  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
+
+       * doc/install.texi (Specific, mips-sgi-irix5): Fix IRIX 5.3 IDO
+       download URL.
+
+2004-04-19  Daniel Jacobowitz  <drow@mvista.com>
+
+       * stor-layout.c (layout_decl): Check DECL_PACKED before calling
+       ADJUST_FIELD_ALIGN.  Check maximum_field_alignment after.
+
+2004-04-19  Andrew PInski  <pinskia@physics.uc.edu>
+
+       * 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  <kenner@vlsi1.ultra.nyu.edu>
+
+       * 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  <paul@codesourcery.com>
+
+       * config/arm/arm.md (fixuns_truncsfsi2, fixuns_truncdfsi2,
+       floatunssisf2, floatunssidf2): New patterns.
+
+2004-04-18  Mark Mitchell  <mark@codesourcery.com>
+
+       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  <rsandifo@redhat.com>
+
+       * 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  <aldyh@redhat.com>
+
+       * config/rs6000/altivec.h (vec_any_numeric): Correct typo in
+       __unn_args_eq.
+
+2004-04-17  Alan Modra  <amodra@bigpond.net.au>
+
+       PR target/14715
+       * config/rs6000/rs6000.c (rs6000_stack_info): Make parm_size agree
+       with STARTING_FRAME_OFFSET.
+
+2004-04-17  Richard Sandiford  <rsandifo@redhat.com>
+
+       * 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  <bonzini@gnu.org>
+
+       * 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  <rsandifo@redhat.com>
+
+       * configure.ac (gcc_cv_ld_as_needed): Use AC_CACHE_CHECK.
+       * configure: Regenerate.
+
+2004-04-17  Richard Sandiford  <rsandifo@redhat.com>
+
+       * gcc.c (used_arg): Check whether an option has been removed.
+
+2004-04-17  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
+
+       * config.gcc (i[34567]86-*-solaris2*): Default to DWARF-2
+       debugging on Solaris 7 and up.
+
+2004-04-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
+
+       * 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  <dj@redhat.com>
+
+       * 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  <dave.anglin@nrc-cnrc.gc.ca>
+
+       * 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  <nickc@redhat.com>
+
+       * 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 <inaoka dot kazuhiro at renesas dot com>
+
+       * 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  <ghazi@caip.rutgers.edu>
+
+       * builtins.def (BUILT_IN_ISDIGIT, BUILT_IN_ISXDIGIT): Mark with
+       ATTR_CONST_NOTHROW_LIST.
+
+2004-04-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       PR/middle-end 14915
+       * builtins.c (expand_builtin_signbit): Test BYTES_BIG_ENDIAN, not
+       BITS_BIG_ENDIAN.
+
+2004-04-15  Pat Haugen  <pthaugen@us.ibm.com>
+
+       * ra-debug.c (ra_print_rtx): Add break's to case legs.
+
+2004-04-14  James E Wilson  <wilson@specifixinc.com>
+
+       * Makefile.in (fixinc.sh): Set WARN_CFLAGS to empty string.
+
+2004-04-14  Nathanael Nerode  <neroden@gcc.gnu.org>
+
+       * libada-mk.in: New file.
+       * configure.ac: Create libada-mk from libada-mk.in.
+       * configure: Regenerate.
+
+2004-04-14  Uros Bizjak  <uros@kss-loka.si>
+
+       * 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  <echristo@redhat.com>
+
+       * config/mips/t-elf: Enable multilibs by default.
+
+2004-04-14  Andreas Tobler  <a.tobler@schweiz.ch>
+
+       * bb-reorder.c (fix_crossing_conditional_branches): Adjust the
+       previous fix to check HAVE_return at runtime too.
+
+2004-04-14  Nick Clifton  <nickc@redhat.com>
+
+       * 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  <ghazi@caip.rutgers.edu>
+
+       * 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  <ghazi@caip.rutgers.edu>
+
+       * 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  <rsandifo@redhat.com>
+
+       * 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  <wilson@specifixinc.com>
+
+       * 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  <uros@kss-loka.si>:
+
+       * 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  <rth@redhat.com>
+
+       * 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  <uweigand@de.ibm.com>
+
+       * 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 <fjahanian@apple.com>
+
+       * 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  <jifl@eCosCentric.com>
+
+       * fix-header.c: kill(), putenv() and tzset() are POSIX not ANSI.
+
+2004-04-12  Roger Sayle  <roger@eyesopen.com>
+
+       * 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  <kenner@vlsi1.ultra.nyu.edu>
+
+       * 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  <roger@eyesopen.com>
+
+       * simplify-rtx.c (simplify_binary_operation) <UDIV, DIV, UMOD, MOD>:
+       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  <aldyh@redhat.com>
+
+       * 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  <aldyh@redhat.com>
+
+       * config/rs6000/rs6000.c (rs6000_assemble_integer): Change
+       in_text_unlikely_section to in_unlikely_text_section.
+
+2004-04-11  Roger Sayle  <roger@eyesopen.com>
+
+       * 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  <ghazi@caip.rutgers.edu>
+
+       * config/mips/iris5.h (current_section_flags):  Add
+       in_unlikely_executed_text and default case.
+
+2004-04-11  Andreas Tobler  <a.tobler@schweiz.ch>
+
+       * 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  <pinskia@physics.uc.edu>
+
+       * 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  <jsm@polyomino.org.uk>
+
+       * c-typeck.c (common_type): Prefer long long to long when same
+       precision.
+
+2004-04-09  Zack Weinberg  <zack@codesourcery.com>
+
+       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  <roger@eyesopen.com>
+
+       * 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) <NOT>: Optimize ~(X+C) as X ^ ~C, where
+       C is the sign bit.
+       (simplify_binary_operation) <PLUS>: Optimize (X^C1) + C2 as X^(C1^C2)
+       when C2 is the sign bit.
+       (simplify_binary_operation) <XOR>: 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  <ghazi@caip.rutgers.edu>
+
+       * builtins.c (mathfn_built_in): Check TYPE_MAIN_VARIANT, not
+       TYPE_MODE.
+
+2004-04-09  Andrew Pinski  <pinskia@physics.uc.edu>
+
+       * c-common.c (handle_noreturn_attribute): Use TYPE_READONLY instead
+       of TREE_READONLY for types.
+
 2004-04-09  Caroline Tice  <ctice@apple.com>
 
-        * basic-block.h (struct edge_def):  Add new field, crossing_edge.
+       * 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 
+       (partition_hot_cold_basic_blocks): Add extern function
        declaration.
-        * bb-reorder.c (function.h, obstack.h, expr.h, regs.h):  Add four new 
+       * 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.
        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 
+       (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 
+       (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  
+       * 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 
+       (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.
        (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.
+       * 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 
+       (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.
+       * 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.
        (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 
+       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.
        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.
+       * 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
+       * 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_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.
+       * 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 
+       (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
+       * 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.
+       (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 
+       * 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 
+       (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).
+       * 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.
+       * 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.
+       * 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.
+       (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 
+       * 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
+       * 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.
+       * 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 
+       * 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  <roger@eyesopen.com>
 
        * gcc.c (main): Move 'break' in main loops (on an error)
        to wait until error processing has occurred.
-       
+
 2004-04-06  Nathanael Nerode  <neroden@gcc.gnu.org>
 
        * config.gcc: Stop changing enable_threads midstream.
        (sindf2, sinsf2, sinxf2): Rename to *sindf2, *sinsf2, *sinxf2.
        (cosdf2, cossf2, cosxf2): Rename to *cosdf2, *cossf2, *cosxf2.
 
-       (UNSPEC_SINCOS_SIN, UNPEC_SINCOS_COS): New unspecs to represent
-       x87's unspec insn.
+       (UNSPEC_SINCOS_SIN, UNSPEC_SINCOS_COS): New unspecs to represent
+       x87's fsincos insn.
 
 2004-04-06  Devang Patel  <dpatel@apple.com>
 
        PR 14467
        * config/darwin.h (LINK_COMMAND_SPEC): Use c++filt instead of c++filt3.
-       
+
 2004-04-06  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
 
        * doc/install.texi: Update HP-UX 11 installation procedure.
        * 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 
+       (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.
        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 
+       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
        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 
+       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
        * 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.
        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  <pinskia@physics.uc.edu>
 
        * rtlanal.c (find_reg_note): Manually
 
 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
+       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  <hebisch@math.uni.wroc.pl>