+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.
+ (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 <roger@eyesopen.com>
+
+ * 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 <roger@eyesopen.com>
+
+ PR target/14888
+ * config/i386/i386.md (truncdfsf2_noop, truncxfsf2_noop,
+ truncxfdf2_noop): Provide dummy "fmov" implementations.
+
+2004-04-08 Ian Lance Taylor <ian@wasabisystems.com>
+
+ * 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 <geoffk@apple.com>
+
+ 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 <mark@codesourcery.com>
+
+ * doc/invoke.texi (Precompiled Headers): Warn about known
+ problems.
+
+2004-04-08 Danny Smith <dannysmith@users.sourceforge.net>
+
+ 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 <paul@codesourcery.com>
+
+ * arm.h (CLASS_LIKELY_SPILLED_P): Define.
+
+2004-04-08 Paul Brook <paul@codesourcery.com>
+
+ * 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 <joel@oarcorp.com>
+
+ 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 <joel@oarcorp.com>
+
+ 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 <pinskia@physics.uc.edu>
+
+ 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 <ghazi@caip.rutgers.edu>
+
+ * 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 <hongjiu.lu@intel.com>
+
+ * config/ia64/ia64.c (ia64_encode_section_info): Don't prod
+ global register variables.
+
+2004-04-07 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * 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 <edelsohn@gnu.org>
+
+ * config/rs6000/rs6000.c (processor_target_table): Add MASK_MFCRF
+ to power4 and power5 entries.
+
+2004-04-06 Geoffrey Keating <geoffk@apple.com>
+
+ * c-common.h (pending_lang_change): Mark for PCH.
+
+2004-04-07 Caroline Tice <ctice@apple.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.
+ 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 <uros@kss-loka.si>
+
+ * 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 <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.
+
+2004-04-06 Paul Brook <paul@codesourcery.com>
+
+ * doc/sourcebuild.texi: Remove obsolete contraint on testcases.
+
+2004-04-05 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ * 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 <pinskia@physics.uc.edu>
+
+ * tree.c (reconstruct_complex_type): Use TYPE_READONLY
+ and TYPE_VOLATILE.
+
+2004-04-05 Caroline Tice <ctice@apple.com>
+
+ * 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 <jakub@redhat.com>
+ John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ 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 <kenner@vlsi1.ultra.nyu.edu>
+
+ * 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 <ebotcazou@libertysurf.fr>
+
+ * 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 <ian@wasabisystems.com>
+ Nathanael Nerode <neroden@gcc.gnu.org>
+
+ 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 <roger@eyesopen.com>
+
+ * simplify-rtx.c (simplify_binary_operation): Constant fold
+ DIV, MOD, UDIV and UMOD using div_and_round_double.
+
+2004-04-04 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/14804
+ * varasm.c (initializer_constant_valid_p): Allow NOP_EXPRs to
+ RECORD_TYPEs.
+
+2004-04-04 Mark Mitchell <mark@codesourcery.com>
+
+ * doc/invoke.texi (-mabi=o64): Create link to O64 ABI
+ documentation.
2004-04-04 Roger Sayle <roger@eyesopen.com>
* 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>