2005-01-28 Ian Lance Taylor PR middle-end/16558 PR middle-end/19583 * gimple-low.c (block_may_fallthru): TRY_FINALLY_EXPR only falls through if both operands fall through. 2005-01-28 Kazu Hirata * cse.c (fold_rtx) : Don't optimize. 2005-01-28 Jeff Law * fold-const.c (fold, case CEIL_MOD_EXPR): Optimize 0 % X. (case FLOOR_MOD_EXPR, ROUND_MOD_EXPR, TRUNC_MOD_EXPR): Similarly. 2005-01-28 Kazu Hirata * cse.c (cse_reg_info_free_list, cse_reg_info_used_list, cse_reg_info_used_list_end): Remove. (cse_reg_info_list, cse_reg_info_list_free): New. (get_cse_reg_info): When allocating an instance of cse_reg_info, add it to the beginning of the cse_reg_info_list list. Remove code to maintain cse_reg_info_used_list. (new_basic_block): Reset the free list to the beginning of cse_reg_info_list. 2005-01-28 Richard Sandiford * config/frv/frv.c (bdesc_2arg): Remove __MDPACKH. (frv_init_builtins): Change its prototype to take 4 uhalf arguments. (frv_expand_mdpackh_builtin): New function. (frv_expand_builtin): Use it to expand __MDPACKH. * doc/extend.texi (__MDPACKH): Update documentation. 2005-01-28 Uros Bizjak * config/i386/i386.c (ix86_expand_fp_absneg_operator): Use SSE_FLOAT_MODE_P for use_sse computation. 2005-01-28 Ralf Corsepius PR target/19663 * config/sparc/rtemself.h (LINK_GCC_C_SEQUENCE_SPEC): undefine. 2005-01-27 Richard Henderson * builtins.c (expand_builtin_copysign): New. (expand_builtin): Call it. * genopinit.c (optabs): Add copysign_optab. * optabs.c (init_optabs): Initialize it. (expand_copysign): New. * optabs.h (OTI_copysign, copysign_optab): New. (expand_copysign): Declare. * config/alpha/alpha.md (UNSPEC_COPYSIGN): New. (copysignsf3, ncopysignsf3, copysigndf3, ncopysigndf3): New. * config/i386/i386.c (ix86_build_signbit_mask): Split from ... (ix86_expand_fp_absneg_operator): ... here. (ix86_split_copysign): New. * config/i386/i386-protos.h: Update. * config/i386/i386.md (UNSPEC_COPYSIGN): New. (copysignsf3, copysigndf3): New. * config/ia64/ia64.md (UNSPEC_COPYSIGN): New. (copysignsf3, ncopysignsf3): New. (copysigndf3, ncopysigndf3): New. (copysignxf3, ncopysignxf3): New. * config/ia64/ia64.c (rtx_needs_barrier): Handle UNSPEC_COPYSIGN. 2005-01-27 Arend Bayer Kazu Hirata * cse.c: (find_best_addr): Don't call copy_rtx before calling fold_rtx. Save cost recomputation if fold_rtx did nothing. (fold_rtx) : Don't do anything if INSN is NULL_RTX. 2005-01-27 Jeff Law * tree-into-ssa.c (ssa_rewrite_initialize_block): Do not register definitions of SSA_NAMEs which are not being rewritten. (rewrite_ssa_into_ssa): Only initialize the current definition of an SSA_NAME if that SSA_NAME has been marked for rewriting. If checking is enabled, assert that SSA_NAME_AUX is clear for all SSA_NAMEs before returning. 2005-01-27 Kazu Hirata * c-common.def, c-dump.c, c-gimplify.c, c-objc-common.c, cfgexpand.c, dbxout.c, function.h, opts.c, tree-flow-inline.h, tree-ssa-operands.h, tree-ssa-threadupdate.c, tree-tailcall.c, config/avr/avr.md, config/cris/aout.h, config/cris/cris.h, config/mips/iris6.h, config/sh/sh.c: Update copyright. 2005-01-27 Steven Bosscher PR middle-end/17278 * opts.c (decode_options): Move flag_thread_jumps from -O1 and higher to -O2 and higher. Likewise for tree PRE. * tree-ssa-dom.c (tree_ssa_dominator_optimize): Only iterate at -O2 and better. 2005-01-27 Ian Lance Taylor PR middle-end/19583 * gimple-low.c (try_catch_may_fallthru): New static function. (block_may_fallthru): Handle TRY_CATCH_EXPR. * tree-inline.c (expand_call_inline): Don't warn about reaching the end of a non-void function being inlined if the function uses a return slot. 2005-01-27 Jakub Jelinek * config/i386/i386.h (CALL_USED_REGISTERS): Fix comment pastos. PR c/18946 * c-decl.c (warn_if_shadowing): Handle old_decl error_mark_node. (pushdecl): Only use DECL_FILE_SCOPE_P if DECL_P. (implicitly_declare): Handle error_mark_node. 2005-01-27 Richard Henderson PR tree-opt/14329 * tree.h (struct tree_decl): Add debug_expr_is_from. (DECL_DEBUG_EXPR_IS_FROM): New. (DECL_DEBUG_EXPR): Rename from DECL_DEBUG_ALIAS_OF. * dwarf2out.c (dwarf2out_var_location): Update to match. * tree-outof-ssa.c (create_temp): Likewise. * var-tracking.c (track_expr_p): Likewise. * tree-sra.c (instantiate_element): Set DECL_DEBUG_EXPR. * c-objc-common.c (c_tree_printer) <'D'>: Handle DECL_DEBUG_EXPR. * toplev.c (default_tree_printer): Likewise. 2005-01-27 Alexandre Oliva * config/frv/frv.c (frv_class_likely_spilled_p): Add GR8_REGS, GR9_REGS, GR89_REGS, FDPIC_FPTR_REGS, FDPIC_REGS. 2005-01-27 Steven Bosscher * tree.h (SWITCH_COND, SWITCH_BODY, SWITCH_LABELS, CASE_LOW, CASE_HIGH, CASE_LABEL, ASM_STRING, ASM_OUTPUTS, ASM_INPUTS, ASM_CLOBBERS): Add tree checks. * c-common.h (SWITCH_TYPE): Rename to SWITCH_STMT_TYPE. (SWITCH_STMT_COND, SWITCH_STMT_BODY): New. * c-common.def (SWITCH_STMT): Update to match. * c-common.c (c_do_switch_warnings): Use SWITCH_STMT accessor macros instead of SWITCH_EXPR ones. * c-dump.c (c_dump_tree): Likewise. * c-gimplify.c (gimplify_switch_stmt): Likewise. * c-typeck.c (c_start_case, do_case, c_finish_case): Likewise. * doc/c-tree.texi (SWITCH_STMT): Update accessor macro names. 2005-01-27 Alan Modra * unwind-dw2.c (execute_stack_op): Add missing cases for DW_OP_shl, DW_OP_shr, DW_OP_shra, DW_OP_xor. 2005-01-27 Eric Botcazou * config.gcc (Obsolete configurations): Remove 'dummy', add sparclite-*-coff*, sparclite-*-elf*, sparc86x-*-elf* and sparc-*-openbsd*. 2005-01-26 Diego Novillo PR tree-optimization/19633 * tree-ssa-alias.c (ptr_is_dereferenced_by): Also handle CALL_EXPRs. (maybe_create_global_var): Do not create .GLOBAL_VAR if there are no call-clobbered variables. * tree-outof-ssa.c (check_replaceable): Return false for calls with side-effects. 2005-01-26 Ulrich Weigand * dbxout.c (dbxout_symbol_location): Resolve constant pool references even for variables with NULL DECL_INITIAL. 2005-01-26 Stuart Hastings * gimplify.c (shortcut_cond_expr): Re-compute side-effects. 2005-01-26 Richard Henderson PR middle-end/18008 * c-decl.c (finish_struct): Set DECL_MODE after resetting a field's type. * expr.c (store_field): Strip conversions to odd-bit-sized types if the destination field width matches. 2005-01-26 Richard Henderson * c-decl.c, expmed.c, expr.c: Revert last change. 2005-01-26 Richard Henderson PR middle-end/18008 * c-decl.c (finish_struct): Set DECL_MODE after resetting a field's type. * expmed.c (store_fixed_bit_field): Create a paradoxical subreg if we don't need the bits above those present in the current mode. * expr.c (store_field): Strip conversions to odd-bit-sized types if the destination field width matches. 2005-01-26 Richard Sandiford * config/mips/iris6.h (ENDFILE_SPEC): Don't link in irix-csr.o if either -ffast-math or -funsafe-math-optimizations is in use. 2005-01-26 Marek Michalkiewicz PR target/19293 PR target/19329 * config/avr/avr.c (notice_update_cc): Only set condition code for ashrqi3 if shift count > 0. (out_shift_with_cnt): Handle shift count <= 0 as a no-op. (ashlqi3_out, ashlhi3_out, ashlsi3_out, ashrqi3_out, ashrhi3_out, ashrsi3_out, lshrqi3_out, lshrhi3_out, lshrsi3_out): Handle shift count <= 0 as a no-op, and shift count >= width by copying zero or sign bit to all bits of the result. * config/avr/avr.md (all shifts): Add alternatives for zero shift count, with attribute "length" set to 0 and "cc" set to "none". 2005-01-26 Aldy Hernandez * doc/invoke.texi: Document -mTLS. * testsuite/gcc.target/frv/all-tls-global-dynamic.c: New. * testsuite/gcc.target/frv/all-tls-initial-exec.c: New. * testsuite/gcc.target/frv/all-tls-initial-exec-pic.c: New. * testsuite/gcc.target/frv/all-tls-local-dynamic.c: New. * testsuite/gcc.target/frv/all-tls-local-dynamic-plt.c: New. * testsuite/gcc.target/frv/all-tls-local-dynamic-plt-pic.c: New. * testsuite/gcc.target/frv/all-tls-local-exec.c: New. * testsuite/gcc.target/frv/all-tls-local-exec-TLS.c: New. * configure.ac: Check for a TLS capable gas. * configure: Regenerate. 2005-01-26 Richard Henderson PR middle-end/18008 * combine.c (make_field_assignment): Simplify store to zero_extract from a source with an overlapping mask. 2005-01-26 Aldy Hernandez 2004-11-11 Eric Christopher * config/frv/frv.md: Add fr400_integer automaton. Don't allow TYPE_MUL, TYPE_MACC, or TYPE_CUT to issue in parallel to TYPE_MACC. 2005-01-26 Steven Bosscher PR middle-end/16585 * cfgbuild.c (make_edges): Do not clear or set current_function_has_computed_jump. * function.h (struct function): Remove the has_computed_jump field. (current_function_has_computed_jump): Do not define. * sched-rgn.c (is_cfg_nonregular): Return true if a basic block ends in a computed jump. Ignore current_function_has_computed_jump. 2005-01-26 Richard Henderson PR middle-end/19515 * expr.c (categorize_ctor_elements): New argument p_must_clear. (categorize_ctor_elements_1): Likewise. Detect a union that isn't fully initialized. (mostly_zeros_p): Update for new categorize_ctor_elements argument. * gimplify.c (gimplify_init_constructor): Likewise. Only shove objects into static storage if they have more than one non-zero value. * tree.h (categorize_ctor_elements): Update decl. 2005-01-26 Steven Bosscher PR middle-end/19616 * tree.h (CALL_EXPR_TAILCALL): Add comment. * calls.c (check_sibcall_argument_overlap_1): Revert the change to this function from 2004-07-10. * tree-tailcall.c (suitable_for_tail_opt_p): Do not consider the the current function for tail call optimizations if the address of one of it its arguments is taken. 2005-01-26 Kazu Hirata * cse.c (fold_rtx): Call equiv_constant only when necessary. 2005-01-26 Bernd Schmidt * function.c (expand_function_end): If current_function_calls_alloca, emit stack restore in a place that is reached when the function falls through at the end. 2005-01-26 Alexandre Oliva * Makefile.in (../$(build_subdir)/fixincludes/fixincl): Add dummy rule to avoid matching inappropriate suffix rule. 2005-01-26 Jan Hubicka PR tree-optimization/19241 * tree-inline.c (copy_body_r): Do not walk subtrees after substituting. 2005-01-26 Hans-Peter Nilsson * config/cris/cris.h (LIB_SPEC) : Use -lsyslinux, not -lsyssim. Wrap -lc -lsyssim in --start-group --end-group instead of doubling. (STARTFILE_SPEC): Add crti.o, before crtbegin.o. : Always use crt1.o, regardless of N in simN. : Drop support for -pg and -p variants; always use crt0.o. (ENDFILE_SPEC): Add crtn.o, after crtend.o. (CRT_CALL_STATIC_FUNCTION): Remove. * config/cris/aout.h (STARTFILE_SPEC): : Always use crt1.o, regardless of N in simN. : Drop support for -pg and -p variants; always use crt0.o. (LIB_SPEC): Do not define; default to the one in config/cris/cris.h. (CRIS_CPP_SUBTARGET_SPEC) : Remove special case isystem setting. (MAX_OFILE_ALIGNMENT): Correct to 32, not 16. 2005-01-25 Ian Lance Taylor * gimple-low.c (block_may_fallthru): Correct handling of SWITCH_EXPR--may fall through if SWITCH_LABELS is NULL. 2005-01-26 Hans-Peter Nilsson * config/cris/cris.h (CPP_SPEC): Adjust the various mtune= handlers to match indentation; nested under the mtune=* handler. Similar for mcpu= and march=. 2005-01-25 Daniel Jacobowitz * config/mips/linux.h (LIB_SPEC): Remove -rpath-link. * config/mips/linux64.h (LIB_SPEC): Likewise. * config/mn10300/linux.h (LIB_SPEC): Likewise. * config/sh/linux.h (LIB_SPEC): Likewise. 2005-01-25 Aldy Hernandez * config/frv/frv.c (frv_legitimize_tls_address): New. (TARGET_HAVE_TLS): Define. (FRV_SYMBOL_REF_TLS_P): Define. (frv_override_options): Handle new register classes. (frv_legitimate_address_p): Reject tls addresses. (frv_legitimize_address): Handle TLS addresses. (gen_inlined_tls_plt): New. (gen_tlsmoff): New. (frv_legitimize_tls_address): New. (unspec_got_name): Add TLS entries. (got12_operand): Add R_FRV_TLSMOFF12 case. (frv_emit_move): Fixup TLS addresses. (frv_emit_movsi): Legitimize TLS addresses. * config/frv/frv.h (MASK_BIG_TLS): New. (TARGET_BIG_TLS): New. (HAVE_AS_TLS): Define. (TARGET_SWITCHES): Add -mTLS and -mtls options. (enum reg_class): Add GR8_REGS, GR9_REGS, GR89_REGS. (REG_CLASS_NAMES): Same. (REG_CLASS_CONTENTS): Same. (CONSTRAINT_LEN): New. (REG_CLASS_FROM_CONSTRAINT): New. (PREDICATE_CODES): Add symbolic_operand. * config/frv/frv.md (define_constants): Add UNSPEC_GETTLSOFF, UNSPEC_TLS_LOAD_GOTTLSOFF12, UNSPEC_TLS_INDIRECT_CALL, UNSPEC_TLS_TLSDESC_LDD, UNSPEC_TLS_TLSDESC_LDD_AUX, UNSPEC_TLS_TLSOFF_LD, UNSPEC_TLS_LDDI, UNSPEC_TLSOFF_HILO, R_FRV_GOTTLSOFF_HI, R_FRV_GOTTLSOFF_LO, R_FRV_TLSMOFFHI, R_FRV_TLSMOFFLO, R_FRV_TLSMOFF12, R_FRV_TLSDESCHI, R_FRV_TLSDESCLO, R_FRV_GOTTLSDESCHI, R_FRV_GOTTLSDESCLO, GR8_REG, GR9_REG, GR14_REG, LRREG. (type): Add load_or_call attribute. ("load_or_call"): New reservation. ("call_gettlsoff"): New. ("tls_indirect_call"): New. ("tls_load_gottlsoff12"): New. ("tlsoff_hilo"): New. ("tls_tlsdesc_ldd"): New. ("tls_tlsoff_ld"): New. ("tls_lddi"): New. * config/frv/frv-protos.h (symbolic_operand): Protoize. 2005-01-25 Alexandre Oliva * config/frv/frv.h (ASM_OUTPUT_DWARF_DTPREL): Define. * config/frv/frv-protos.h (frv_output_dwarf_dtprel): Declare. * config/frv/frv.c (TLS_BIAS): Define. (frv_output_dwarf_dtprel): New. 2005-01-26 Jakub Jelinek PR rtl-optimization/19579 * ifcvt.c (noce_try_cmove_arith): If emitting instructions to set up both A and B, see if they don't clobber registers the other expr uses. 2005-01-25 J"orn Rennecke * real.c (do_add): Initialize signalling and canonical members. * real.c (real_from_integer): Zero out destination. 2005-01-18 Jan Hubicka PR tree-optimize/19337 * tree-inline.c (initialize_inlined_parameters): Copy saved_static_chain_decl only. 2005-01-25 Richard Henderson PR target/19556 PR target/19584 * config/i386/i386.c (x86_inter_unit_moves): Zero. (ix86_preferred_reload_class): Rewrite fp-constant section, with 80387 enabled, to return a proper subclass. Return the subset that overlaps with GENERAL_REGS for PLUS. * config/i386/i386.md (movsi_1, movdi_2): Set type to "mmx" for pxor. 2005-01-25 Richard Henderson PR middle-end/19609 * tree-complex.c (expand_complex_div_wide): Use the correct formulae. 2005-01-25 Roger Sayle * expmed.c (choose_multiplier): Change interface to return the multiplier lowpart as an rtx instead of an unsigned HOST_WIDE_INT. (expand_divmod): Update calls to choose_multiplier. 2005-01-24 John David Anglin PR middle-end/19330 * expmed.c (extract_bit_field): Use adjust_address instead of gen_lowpart when op0 is a MEM. 2005-01-24 Steven Bosscher * cfgexpand.c (expand_gimple_tailcall): Fix typo. 2005-01-24 Richard Sandiford * config/mips/irix-csr.c: New file. * config/mips/t-iris6 (irix-csr.o): New rule to build it. (EXTRA_MULTILIB_PARTS): Add irix-csr.o. * config/mips/iris6.h (ENDFILE_SPEC): Include it in n32 and n64 executables. 2005-01-24 Eric Botcazou PR bootstrap/19364 * config.gcc (sparc-*-elf*): Remove sol2.h, sparc/sol2.h and sparc/elf.h, add sparc/sp-elf.h. (sparc-*-rtems*): Likewise. (sparclite-*-elf*): Remove sol2.h, sparc/sol2.h, sparc/elf.h and tm-dwarf2.h, add sparc/sp-elf.h. (sparc86x-*-elf): Likewise. (sparc64-*-elf*): Remove sol2.h, sparc/sol2.h and tm-dwarf2.h. * config/sparc/liteelf.h (TARGET_SUB_OS_CPP_BUILTINS): Rename into TARGET_OS_CPP_BUILTINS. * config/sparc/sp86x-elf (TARGET_SUB_OS_CPP_BUILTINS): Likewise. * config/sparc/rtemself.h (TARGET_SUB_OS_CPP_BUILTINS): Likewise. Undefine it. * config/sparc/openbsd64.h (NO_IMPLICIT_EXTERN_C): Undefine. * config/sparc/sp64-elf.h (NO_IMPLICIT_EXTERN_C): New macro. (SWITCH_TAKES_ARG): Likewise. (LOCAL_LABEL_PREFIX): Likewise. (ASM_GENERATE_INTERNAL_LABEL): Likewise. (TARGET_N_FORMAT_TYPES): Delete. (TARGET_FORMAT_TYPES): Likewise. (ASM_DECLARE_FUNCTION_SIZE): Likewise. * config/sparc/elf.h: Delete. * config/sparc/sp-elf.h: New file. 2005-01-24 Kazu Hirata * tree-flow-inline.h (phi_arg_from_edge): Remove. * tree-flow.h: Remove the corresponding prototype. * tree-ssa-operands.h, tree-ssa-threadupdate.c, tree-ssa.c, tree-vectorizer.c: Use dest_idx instead of phi_arg_from_edge. 2005-01-24 Jakub Jelinek PR target/17751 * config/rs6000/rs6000.c (rs6000_file_start): Create toc section for AIX ABI or ELF -fPIC. (rs6000_emit_load_toc_table): Don't create toc_section here. (rs6000_xcoff_file_start): Nor here. 2005-01-24 J"orn Rennecke * sh.c (ra.h): Don't #include. (hard_regs_intersect_p): New function, resurrected from ra.c. * sh.c: Fix 1996 Copyright. 2005-01-24 Richard Henderson Aldy Hernandez * regrename.c (note_sets): Handle subregs. 2005-01-24 Joseph S. Myers PR bootstrap/18058 * genconditions.c (write_header, write_conditions): Elide file if not GCC >= 3.0.1. 2005-01-24 Kazu Hirata * c-opts.c, expmed.c, gengtype.c, tree-complex.c, config/arm/iwmmxt.md, config/avr/avr.c, config/s390/s390.h: Update copyright. 2005-01-24 Jakub Jelinek * builtins.c (get_pointer_alignment, gimplify_va_arg_expr, expand_builtin_printf, expand_builtin_fprintf, expand_builtin_sprintf): Use POINTER_TYPE_P instead TREE_CODE checking against POINTER_TYPE. (validate_arglist): Handle POINTER_TYPE code by checking POINTER_TYPE_P. 2005-01-24 Paolo Bonzini * rtlanal.c (non_rtx_starting_operands, for_each_rtx_1, init_rtlanal): New. (for_each_rtx): Call for_each_rtx_1. * rtl.h (init_rtlanal): Declare. * toplev.c (backend_init): Call init_rtlanal. 2005-01-24 Jakub Jelinek * flow.c (propagate_one_insn): Formatting. PR middle-end/19551 * flow.c (libcall_dead_p): Be more conservative if unsure. If there are any instructions between insn and call, see if they are all dead before saying the libcall is dead. 2005-01-24 Uros Bizjak * config/i386/i386.md (*extendsfdf2_sse): Use "nonimmediate_operand" operand constraint for operand 0. 2005-01-23 Richard Henderson PR 19486 * tree-complex.c (expand_complex_div_wide): Set EDGE_FALLTHRU on edges leading to join block. 2005-01-23 Roger Sayle * expmed.c (expand_mult_highpart): Make static. Change type of constant multiplier argument from unsigned HOST_WIDE_INT to rtx. (expand_divmod): Updates calls to expand_mult_highpart by using gen_int_mode to pass a CONST_INT rtx. * rtl.h (expand_mult_highpart): Remove prototype. 2005-01-23 Kazu Hirata * flow.c (regset_bytes, regset_size): Remove. * cfganal.c: Fix a reference to Harvey's paper. 2005-01-23 Steven Bosscher PR rtl-optimization/19464 * tree-optimize.c (init_tree_optimization_passes): Add one more copyrename pass just before out-of-ssa. 2005-01-23 Joseph S. Myers PR bootstrap/18058 * recog.c (recog_memoized): Don't define if GENERATOR_FILE. * ggc-none.c (ggc_free): Define. 2005-01-23 Kazu Hirata * cse.c (max_reg, max_insn_uid): Remove. (cse_main): Don't access max_reg or max_insn_uid. * c-common.c (explicit_flag_signed_bitfields, lang_statement_code_p, lang_expand_function_end): Remove. * c-common.h: Remove the corresponding declarations. * c-opts.c (c_common_handle_option): Remove all write access to explicit_flag_signed_bitfields. * cgraph.c (cgraph_varpool_n_nodes): Remove. (cgraph_varpool_node): Don't access cgraph_varpool_n_nodes. * cgraph.h: Remove the corresponding declaration. * gcse.c (null_pointer_info): Remove. 2005-01-23 Roger Sayle Eric Botcazou * combine.c (simplify_logical): Only simplify logical expressions of the form ior(and(x,y),z) by the inverse distributive law if the result is cheaper than the original. 2005-01-23 Kazu Hirata * alias.c, c-common.h, c-incpath.c, c-incpath.h, expr.c, fold-const.c, gimplify.c, params.h, tree-data-ref.c, tree-if-conv.c, tree-nested.c, tree-outof-ssa.c, tree-ssa-dom.c, tree-vectorizer.c, tree.def, config/darwin.c, config/freebsd-spec.h, config/arm/arm.h, config/h8300/h8300.md, config/i386/i386.md, config/i386/predicates.md, config/i386/sse.md, config/ia64/ia64.c, config/ip2k/ip2k.c, config/s390/s390.c, config/vax/vax.md: Fix comment typos. Follow spelling conventions. 2005-01-23 Steven Bosscher * gengtype.c (walk_type): Produce `not equal to' compares for loop tests, instead of `less than'. 2005-01-23 Richard Sandiford * function.c (assign_parm_setup_block): When creating a new stack slot for a parameter, get its alignment from the parameter's DECL_ALIGN rather than the type's TYPE_ALIGN. Make sure that the parameter is at least word aligned. 2005-01-22 Roger Sayle PR middle-end/19378 * config/avr/avr.c (avr_hard_regno_mode_ok): Rewrite. 2005-01-22 Richard Henderson PR target/19506 * config/i386/i386.md (movsfcc_1_sse_max): Use nonimmediate_operand in both compare operands. (movdfcc_1_sse_max): Likewise. (movsfcc_1_sse): Likewise. Add earlyclobber for scratch. (movdfcc_1_sse): Likewise. * config/i386/i386.c (ix86_split_sse_movcc): Emit copies into the scratch register as needed. 2005-01-22 Richard Henderson * config/i386/i386.md (smaxsf3): Fix mnemonic typo. * config/i386/i386.c (ix86_prepare_fp_compare_args): Fix is_sse test. 2005-01-22 Richard Henderson * genopinit.c (optabs): Use smin/smax for floating point too. * doc/md.texi: Update to match. Clarify that floating point results are undefined for +0/-0 and NaN. * doc/rtl.texi: Likewise. * rtl.def (SMIN, SMAX): Likewise * tree.def (MIN_EXPR, MAX_EXPR): Likewise. * config/alpha/alpha.md (smaxdf3, smindf3, smaxsf3, sminsf3): Add leading 's' to the name. * config/ia64/ia64.md (smaxsf3, sminsf3, smaxdf3, smindf3, smaxxf3, sminxf3): Likewise. * config/rs6000/rs6000.md (smaxdf3, smindf3, smaxsf3, sminsf3): Likewise. 2005-01-22 Paul Brook * config/arm/arm.md: Use "Uy" constraint for wcgr load/stores. 2005-01-21 Mark Dettinger * config/s390/s390.c (struct processor_costs): New fields dlgr, dlr, dr, dsgfr, dsgr. (z900_cost, z990_cost): Values for new fields. (s390_rtx_costs): New cases MEM und COMPARE in switch statement. Modified handling of SIGN_EXTEND, ZERO_EXTEND, DIV, MOD, UDIV, UMOD. 2005-01-21 Ulrich Weigand * config/s390/s390.md ("doloop_si64"): Reload input value directly into the register being decremented. ("doloop_si31", "doloop_di"): Likewise. ("*doloop_si_long"): Adapt pattern. 2005-01-21 Ulrich Weigand * config/s390/s390.h (HARD_REGNO_NREGS): Fix computation for access registers. (CLASS_MAX_NREGS): Likewise. 2005-01-21 Daniel Berlin * doc/tree-ssa.texi (Statement Operands): Add example for new must-def macro. Note deprecation of old operands interface. 2005-01-22 Richard Sandiford PR tree-optimization/19484 * tree-cfg.c (remove_fallthru_edge): New function. (cleanup_control_flow): Remove fallthru edges from calls that are now known not to return. 2005-01-20 Daniel Berlin Fix PR tree-optimization/19038 * tree-ssa-dom.c (cprop_operand): Don't replace loop invaeriant copies with loop variant ones. 2005-01-22 Kazu Hirata * cfganal.c, real.h, reorg.c, timevar.def, tree-ssa-ccp.c, config/alpha/alpha-protos.h, config/alpha/alpha.h, config/alpha/alpha.md, config/alpha/predicates.md, config/sparc/freebsd.h, config/sparc/netbsd-elf.h, config/sparc/sol2.h: Update copyright. * tree-cfg.c (remove_forwarder_block_with_phi): Look at the first label to see if it is a nonlocal label. 2005-01-22 David Edelsohn Andrew Pinski PR target/19491 * config/rs6000/rs6000.c (rs6000_va_start): Saturate n_gpr at maximum number of GPRs. Saturate n_fpr at maximum number of FPRs. 2005-01-22 Ralf Corsepius * config/rs6000/rtems.h: Update copyright. 2005-01-22 Ralf Corsepius PR target/19548 * config/rs6000/rtems.h: Resurrect cpp_os_rtems_spec from gcc < 3.4. (CPP_OS_RTEMS_SPEC): New (From gcc-3.3's config/rs6000/sys4.h). (SUBSUBTARGET_EXTRA_SPECS): Use CPP_OS_RTEMS_SPEC. 2005-01-22 Volker Reichelt PR c/18809 * c-typeck.c (convert_arguments): Check for error_mark_node. 2005-01-21 Ian Lance Taylor PR tree-optimization/13000 * tree-inline.c: Include "tree-flow.h". (expand_call_inline): If warn_return_type, warn if non-void inline function falls through. * tree-cfg.c (execute_warn_function_return): Don't warn about control reaching end if TREE_NO_WARNING is set. Set TREE_NO_WARNING. * gimple-low.c (block_may_fallthru): Don't assume that SWITCH_EXPR has been lowered. * gimplify.c (shortcut_cond_expr): Don't emit a jump over the else branch if we don't need one. * c-typeck.c: Include "tree-flow.h" (c_finish_bc_stmt): Don't add a goto if the current statement list doesn't fall through to the current point. 2005-01-21 Roger Sayle PR rtl-optimization/576 * real.c (real_arithmetic): Change return type from void to bool to return an indication that the result may be inexact. * real.h (real_arithmeric): Update prototype. * fold-const.c (const_binop): Don't constant fold floating point expressions when the user specifies -frounding-math and the result may depend upon the run-time rounding mode. (fold_convert_const_real_from_real): Clean-up. (fold_initializer): Ignore flag_rounding_math for initializers. * simplify-rtx.c (simplify_binary_operation): Likewise, don't constant fold FP operations with flag_rounding_math if the result may depend upon the run-time rounding mode. 2005-01-21 Tom Tromey * c-cppbuiltin.c (define__GNUC__): Correct assertion. 2005-01-21 Kazu Hirata * tree-cfg.c: Fix comment typos. 2005-01-21 J"orn Rennecke * passes.c (rest_of_handle_flow2): Close / open the flow2 dump file around the call to rest_of_handle_branch_target_load_optimize. 2005-01-21 Eric Botcazou * config.gcc (sparc-*-netbsdelf*): Include dbxelf.h (sparc64-*-openbsd*): Likewise. (sparclite-*-elf*): Include tm-dwarf2.h. (sparc86x-*-elf*): Likewise. (sparc64-*-elf*): Likewise. * config/sparc/linux64.h (DWARF2_DEBUGGING_INFO): Delete. (DBX_DEBUGGING_INFO): Likewise. * config/sparc/liteelf.h (DWARF2_DEBUGGING_INFO): Likewise. (PREFERRED_DEBUGGING_TYPE): Likewise. * config/sparc/netbsd-elf.h (PREFERRED_DEBUGGING_TYPE): Likewise. * config/sparc/sp64-elf.h (DBX_DEBUGGING_INFO): Likewise. (PREFERRED_DEBUGGING_TYPE): Likewise. * config/sparc/sp86x-elf.h (DWARF2_DEBUGGING_INFO): Likewise. (PREFERRED_DEBUGGING_TYPE): Likewise. * config/sparc/sparc.h (DBX_DEBUGGING_INFO): Likewise. 2005-01-21 Hans-Peter Nilsson PR target/18701 * combine.c (combine_simplify_rtx): Revert change of 2004-12-31. 2005-01-20 Paul Brook * doc/rtl.texi: Document value extension requirements for CONST_INT. 2005-01-20 Kazu Hirata * tree-cfg.c (tree_verify_flow_info): Check that a nonlocal label is first in a sequence of labels. * tree-cfg.c (tree_verify_flow_info): Fix a typo. 2005-01-20 Janis Johnson Giovanni Bajo * doc/sourcebuild.texi (Test Directives): New. 2005-01-20 Roger Sayle * real.c (real_floor): Don't leave the result uninitialized when mode is VOIDMode, but return the unrounded intermediate value. (real_ceil): Likewise. 2005-01-20 Paul Brook * config/arm/arm.md (insv): Use gen_int_mode. 2005-01-20 Eric Botcazou * config/sparc/freebsd.h (ASM_OUTPUT_INTERNAL_LABELREF): Delete. * config/sparc/linux.h (ASM_OUTPUT_INTERNAL_LABELREF): Likewise. * config/sparc/linux64.h (ASM_OUTPUT_INTERNAL_LABELREF): Likewise. * config/sparc/netbsd-elf.h (ASM_OUTPUT_INTERNAL_LABELREF): Likewise. * config/sparc/sol2.h (ASM_OUTPUT_INTERNAL_LABELREF): Likewise. 2005-01-20 Daniel Berlin Fix PR debug/19124 * dwarf2out.c (concat_loc_descriptor): We don't know we can use fbreg, so we have to assume we can't. (loc_descriptor_from_tree_1): Ditto. (containing_function_has_frame_base): New function. (add_location_or_const_value_attribute): Use it. Also try to generate a frame_base from a single element location list. 2005-01-20 Kazu Hirata PR tree-optimization/15349 * timevar.def (TV_TREE_MERGE_PHI): New. * tree-cfg.c (tree_forwarder_block_p): Add a new argument PHI_WANTED. (remove_forwarder_block, cleanup_forwarder_blocks): Adjust the calls to tree_forwarder_block_p. (remove_forwarder_block_with_phi, merge_phi_nodes, gate_merge_phi, pass_merge_phi): New. * tree-optimize.c (init_tree_optimization_passes): Add pass_merge_phi. * tree-pass.h: Add an extern for pass_merge_phi; 2005-01-20 Richard Henderson PR target/19418 * config/i386/emmintrin.h (_mm_castpd_ps, _mm_castpd_si128): New. (_mm_castps_pd, _mm_castps_si128): New. (_mm_castsi128_ps, _mm_castsi128_pd): New. 2005-01-20 Richard Henderson PR target/19530 * config/i386/mmintrin.h (_mm_cvtsi32_si64): Use __builtin_ia32_vec_init_v2si. (_mm_cvtsi64_si32): Use __builtin_ia32_vec_ext_v2si. * config/i386/i386.c (IX86_BUILTIN_VEC_EXT_V2SI): New. (ix86_init_mmx_sse_builtins): Create it. (ix86_expand_builtin): Expand it. (ix86_expand_vector_set): Handle V2SFmode and V2SImode. * config/i386/mmx.md (vec_extractv2sf_0, vec_extractv2sf_1): New. (vec_extractv2si_0, vec_extractv2si_1): New. 2005-01-20 Richard Henderson PR target/16533 * config/i386/i386.c (ix86_expand_push): New. * config/i386/mmx.md (push1): New. * config/i386/sse.md (push1): New. * config/i386/i386-protos.h: Update. 2005-01-20 Kazu Hirata * params.def, params.h, predict.c, tree-ssa-loop-im.c: Update copyright. 2005-01-20 Richard Henderson * rtl.def (CONST_VECTOR): Use RTX_CONST_OBJ. * rtl.h (CONSTANT_P): Don't special case CONST_VECTOR. 2005-01-19 Richard Henderson PR target/19350 * config/i386/i386.c (ix86_expand_vector_move_misalign): Convert to V4SFmode in SSE1 fallback load path. 2005-01-19 Richard Henderson * config/i386/i386.c (ix86_expand_vector_init_one_var): Fix typo in QImode expansion to ix86_expand_vector_set. (ix86_expand_vector_init_general): Fix typo in V8HImode recursive call. 2005-01-19 Richard Henderson PR target/19511 * config/i386/i386.c (ix86_preferred_reload_class): Return a proper subclass of the input class. (ix86_secondary_memory_needed): Always true for cross-MMX classes. Always true for cross-SSE1 classes. Rationalize conditionals. * config/i386/i386.h (SSE_CLASS_P, MMX_CLASS_P): Use straight equality. * config/i386/i386.md (movsi_1): Add MMX/SSE zeros. Fix alternatives for SSE1. Don't check TARGET_INTER_UNIT_MOVES. (movdi_2): Add MMX/SSE zeros. (movdi_1_rex64): Likewise. Don't check TARGET_INTER_UNIT_MOVES. (movsf_1): Don't check TARGET_INTER_UNIT_MOVES. (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise. (movsi_1_nointernunit, movdi_1_rex64_nointerunit): Remove. (movsf_1_nointerunit, zero_extendsidi2_32_1): Remove. (zero_extendsidi2_rex64_1): Remove. (MOV0 peephole): Check GENERAL_REG_P. 2005-01-19 Richard Henderson PR target/19427 * config/i386/i386.c (ix86_expand_vector_set): Fix third and fourth shufps elements. (ix86_expand_vector_extract): Likewise. 2005-01-19 Richard Henderson PR middle-end/19304 * expr.c (emit_move_change_mode): New argument force; use simplify_gen_subreg if true. (emit_move_via_alt_mode): Merge into ... (emit_move_via_integer): ... here. (emit_move_ccmode): Use emit_move_change_mode directly. 2005-01-19 Richard Henderson PR target/19518 * config/alpha/alpha.c (alpha_rtx_costs): Handle HIGH. (alpha_preferred_reload_class): Handle CONST_VECTOR. (alpha_emit_set_const_1): Add no_output parameter; don't emit rtl if true. (alpha_emit_set_const): Likewise. Make static. (alpha_emit_set_long_const): Make static. (alpha_extract_integer): Split out from alpha_expand_mov. (alpha_split_const_mov): Likewise. (alpha_expand_mov): Use them. Handle CONST_VECTOR. (alpha_legitimate_constant_p): New. * config/alpha/alpha-protos.h: Update. * config/alpha/alpha.h (REGISTER_MOVE_COST): Correct fp<->gp cost. (LEGITIMATE_CONSTANT_P): Re-implement with a function. * config/alpha/alpha.md (movsi): Add n alternative. (movsi_nt_vms, movdi_er_nofix, movdi_er_fix, movdi_fix): Likewise. (mov_fix, mov_nofix): Add i alternative. (splitters for all of the above): Use alpha_split_const_mov. * config/alpha/predicates.md (non_add_const_operand): New. (non_zero_const_operand): New. (input_operand): Use alpha_legitimate_constant_p after reload. 2005-01-19 Zdenek Dvorak PR tree-optimization/19038 * tree-ssa-loop-ivopts.c (allow_ip_end_pos_p): New function. (add_candidate): Add ivs with increment in latch only if allow_ip_end_pos_p is true. (determine_iv_cost): Use empty_block_p. 2005-01-19 Daniel Berlin * cfganal.c (compute_dominance_frontiers_1): Replace with new algorithm (compute_dominance_frontiers): Ditto. 2005-01-19 Ralf Corsepius PR target/19529 * config/sh/t-rtems: New. * config.gcc (sh-*-rtems*): Reflect having added config/sh/t-rtems. 2005-01-19 Zdenek Dvorak * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Always subtract the offset of the selected field. 2005-01-19 Kazu Hirata * tree-cfg.c (remove_forwarder_block): Fix the check to prevent a nonlocal label from appearing in the middle of a basic block. 2005-01-19 Hans-Peter Nilsson PR rtl-optimization/19462 * reorg.c (find_end_label): Create return insn only if current_function_epilogue_delay_list is empty. 2005-01-19 Paolo Bonzini * doc/passes.texi: Remove paragraph mentioning new-ra. 2005-01-19 Jakub Jelinek PR rtl-optimization/15139 * combine.c: Include params.h. (count_rtxs): New function. (record_value_for_reg): If replace_rtx would replace at least 2 occurrences of REG in VALUE and TEM is really large, replace REG with (clobber (const_int 0)) instead of TEM. * params.def (PARAM_MAX_LAST_VALUE_RTL): New. * params.h (MAX_LAST_VALUE_RTL): New. * Makefile.in (combine.o): Depend on $(PARAMS_H). * doc/invoke.texi (--param max-last-value-rtl=N): Document. PR c/17297 * c-typeck.c (digest_init): Only call build_vector if all constructor elements are *_CST nodes. * gimplify.c (gimplify_init_constructor): Likewise. PR middle-end/19164 * c-typeck.c (digest_init): Only call build_vector if inside_init is a CONSTRUCTOR. 2005-01-18 Tobias Schl"uter * toplev.c (init_asm_output): Remove dead #ifdef. 2005-01-18 Kaz Kojima * config/sh/linux.h (TARGET_C99_FUNCTIONS): Define. 2005-01-18 Eric Botcazou * calls.c (expand_call): Check DECL_BUILT_IN_CLASS before accessing DECL_FUNCTION_CODE. * dojump.c (do_jump): Likewise. * gimplify.c (gimplify_call_expr): Likewise. * predict.c (expr_expected_value): Likewise. (strip_builtin_expect): Likewise. * tree-inline.c (estimate_num_insns_1): Likewise. * tree-ssa-loop-im.c (stmt_cost): Likewise * fold-const.c (fold): Test for BUILT_IN_NORMAL. (tree_expr_nonnegative_p): Likewise. 2005-01-18 Eric Botcazou * config/sparc/sparc.c (load_pic_register): Emit the appropriate variant of the load_pcrel_sym pattern. * config/sparc/sparc.md (P macro): Move to the top. (load_pcrel_sym): Macroize using P. (save_register_window): Likewise. 2005-01-18 Aldy Hernandez * config/rs6000/rs6000.md ("sunordered"): Disable for e500. ("sordered"): Same. 2005-01-18 Andrew Pinski PR C/19472 * c-typeck.c (build_asm_expr): Strip nops off input memory operands. 2005-01-18 David Edelsohn * config/rs6000/aix43.h (CPLUSPLUS_CPP_SPEC): Delete _XOPEN_SOURCE, _XOPEN_SOURCE_EXTENDED, _LARGE_FILE_API. * config/rs6000/aix51.h (CPLUSPLUS_CPP_SPEC): Same. * config/rs6000/aix52.h (CPLUSPLUS_CPP_SPEC): Same. 2005-01-18 Joel Sherrill PR target/19379 * config/i386/i386.c (override_options): If the 80387 is disabled, then do not return FP values using FP registers. 2005-01-18 Kazu Hirata * basic-block.h, c-common.c, c-cppbuiltin.c, c-lang.c, c-tree.h, cfgbuild.c, cgraph.c, cgraph.h, collect2.c, combine.c, config.gcc, coverage.h, cse.c, cselib.c, defaults.h, df.c, dwarf2asm.c, dwarf2out.c, explow.c, expr.c, flow.c, fold-const.c, gcse.c, ggc-page.c, gimple-low.c, gimplify.c, ifcvt.c, langhooks-def.h, lcm.c, optabs.h, output.h, postreload-gcse.c, postreload.c, recog.c, resource.c, rtl.def, rtlanal.c, sched-deps.c, sched-rgn.c, targhooks.h, toplev.c, tree-data-ref.c, tree-eh.c, tree-flow.h, tree-loop-linear.c, tree-mudflap.h, tree-nrv.c, tree-optimize.c, tree-outof-ssa.c, tree-pass.h, tree-scalar-evolution.c, tree-ssa-copy.c, tree-ssa-dce.c, tree-ssa-dse.c, tree-ssa-loop-ivopts.c, tree-ssa-operands.c, tree-ssa-pre.c, tree-ssa.c, tree-vectorizer.c, tree.def, unwind-dw2-fde-darwin.c, var-tracking.c: Update copyright. * config/darwin.c, config/darwin.h, config/freebsd-spec.h, config/alpha/alpha.c, config/arm/vfp.md, config/i386/emmintrin.h, config/i386/i386-modes.def, config/i386/i386-protos.h, config/i386/i386.h, config/i386/pmmintrin.h, config/i386/ppro.md, config/i386/predicates.md, config/i386/xmmintrin.h, config/i860/i860.c, config/ia64/ia64-modes.def, config/ia64/ia64-protos.h, config/ia64/ia64.h, config/ia64/ia64.md, config/ia64/itanium1.md, config/ia64/itanium2.md, config/ia64/predicates.md, config/iq2000/iq2000.h, config/mips/linux64.h, config/rs6000/aix41.h, config/rs6000/aix43.h, config/rs6000/aix52.h, config/rs6000/darwin-fallback.c, config/rs6000/rs6000.c, config/rs6000/rs6000.h, config/rs6000/spe.md, config/sh/sh.md, config/sparc/linux.h, config/sparc/linux64.h, config/sparc/litecoff.h, config/sparc/sp64-elf.h, config/sparc/sparc.c, config/sparc/sparc.h, config/sparc/sparc.md, config/sparc/sysv4-only.h: Update copyright. 2005-01-18 Richard Henderson PR target/19496 * config/i386/i386.c (ix86_expand_fp_movcc): Fail for LTGT and UNEQ. 2005-01-18 Marc Espie * config/i386/openbsdelf.h: Typo. 2005-01-18 Richard Henderson * config/i386/i386.c (ix86_expand_fp_movcc): Remove TARGET_IEEE_FP special case for sse. * config/i386/predicates.md (sse_comparison_operator): Likewise. 2005-01-18 Dorit Naishlos * tree-inline.c (estimate_num_insns_1): Added cases for ALIGN_INDIRECT_REF, MISALIGNED_INDIRECT_REF, and REALIGN_LOAD_EXPR. 2005-01-18 Eric Botcazou PR rtl-optimization/19296 * combine.c (simplify_comparison): Rewrite the condition under which a non-paradoxical SUBREG of a PLUS can be lifted when compared against a constant. 2005-01-18 Andi Kleen * c-typeck.c: (convert_for_assignment): Check warn_pointer_sign. * c.opt (-Wpointer-sign): Add. * doc/invoke.texi: (-Wpointer-sign): Add. 2005-01-18 Uros Bizjak * config/i386/i386.c (override_options): Revert 2004-11-24 change. * config/i386/i386.md (fmodsf3, dremsf3, *sinsf2, *cossf2, sincossf3, *tansf3_1, tansf2, atan2sf3_1, atan2sf3, atansf2, asinsf2, acossf2, logsf2, log10sf2, log2sf2, log1psf2, logbsf2, ilogbsf2, expsf2, exp10sf2, exp2sf2, expm1sf2, rintsf2, floorsf2, ceilsf2, btruncsf2, nearbyintsf2): Disable for TARGET_SSE_MATH. Leave patterns enabled for TARGET_MIX_SSE_I387. (fmoddf3, dremdf3, *sindf2, *sinextendsfdf2, *cosdf2, *cosextendsfdf2, sincosdf3, *sincosextendsfdf3, *tandf3_1, tandf2, atan2df3_1, atan2df3, atandf2, asindf2, acosdf2, logdf2, log10df2, log2df2, log1pdf2, logbdf2, expdf2, exp10df2, exp2df2, expm1df2, rintdf2, floordf2, ceildf2, btruncdf2, nearbyintdf2): Disable for (TARGET_SSE2 && TARGET_SSE_MATH). Leave patterns enabled for TARGET_MIX_SSE_I387. (atan2sf3, atan2df3, atan2xf3): Remove register constraints from expander. 2005-01-18 Uros Bizjak PR target/19424 * config/i386/mmx.md (*movv2sf_internal_rex64, *movv2sf_internal): Add movaps alternative for xmm reg->reg move. 2005-01-17 Jeff Law * tree-ssa-dom.c (tree_ssa_dominator_optimize): Clear SSA_NAME_VALUE at the end of the main DOM loop rather than just before DOM exits. 2005-01-17 Diego Novillo PR tree-optimization/19121 * tree-ssa-alias.c (compute_flow_sensitive_aliasing): When adding aliases to a name tag, also add them to the pointer's type tag. * tree-ssa-copy.c (merge_alias_info): Do not merge flow sensitive alias info at all. Only check that the two pointers have compatible pointed-to sets. * tree-ssa.c (verify_name_tags): Verify that the alias set of a pointer's type tag is a superset of the alias set of the pointer's name tag. 2005-01-17 James E Wilson PR target/19357 * config/ia64/ia64.md (movxf): Handle general register source. Adjust comment to document why. 2005-01-17 Richard Henderson * config/i386/sse.md (smaxv4sf3_finite, sse_vmsmaxv4sf3_finite, sminv4sf3_finite, sse_vmsminv4sf3_finite, smaxv2df3_finite, sse2_vmsmaxv2df3_finite, sminv2df3_finite, sse2_vmsminv2df3_finite): New. (smaxv4sf3, sse_vmsmaxv4sf3, sminv4sf3, sse_vmsminv4sf3, smaxv2df3, sse2_vmsmaxv2df3, sminv2df3, sse2_vmsminv2df3): Remove commutative. Force op1 into register. 2005-01-17 Kelley Cook * Makefile.in (STAGEMOVESTUFF): Stage all the stamp files to prevent bubblestrap from always rebuilding build directory. 2005-01-17 Ulrich Weigand * config/s390/s390.md ("*clc"): Remove incorrect '='. ("*cmpmem_short"): Likewise. 2005-01-17 Steven Bosscher * basic-block.h: Document BB_* flags. * regrename.c (copyprop_hardreg_forward): Don't use BB_VISITED, use an sbitmap instead. * sched-rgn.c (compute_trg_info): Likewise. 2005-01-17 Richard Sandiford * config.gcc (mips64*-*-linux*): Set the default abi to n32. Remove redundant target_cpu_default and extra_parts lines. Use the default "from-abi" ISA. * config/mips/linux64.h (DRIVER_DEFAULT_ABI_SELF_SPEC): Delete. (SUBTARGET_EXTRA_SPECS): Delete. (DRIVER_SELF_SPECS): Remove architecture lines. Set the ABI directly. (SUBTARGET_ASM_SPEC): Remove -mabi=n32 and -mabi=64 mappings. * config/mips/t-linux64 (MULTILIB_DIRNAMES): Use "32" for -mabi=32 and "n32" for -mabi=n32. 2005-01-17 Ian Lance Taylor PR c/5675 * c-typeck.c (build_c_cast): Revert patch of 2003-02-16: don't fold constant variables into initial values. 2005-01-17 Kazu Hirata * tree-cfg.c (tree_can_merge_blocks_p): Reorder two checks. * tree-cfg.c (tree_forwarder_block_p): Speed up by walking through the statements backward. 2005-01-17 Ian Lance Taylor PR middle-end/13127: * tree-inline.c (expand_call_inline): Set TREE_NO_WARNING on a variable set to the return value of the inlined function. 2005-01-17 Mark Dettinger * rtlanal.c (rtx_cost): Assign cost of 0 to a SUBREG when modes are tieable. 2005-01-17 Ranjit Mathew * gthr-posix.h (__gthread_active_p): Use pthread_cancel instead of pthread_create to find out if threads are enabled. * gthr-posix95.h (__gthread_active_p): Likewise. 2005-01-17 Paolo Bonzini * common.opt (-fnew-ra): Remove. * ra*.*: Remove. * toplev.h (flag_new_regalloc): Remove. * Makefile.in (ra*.*): Don't mention. * passes.c (rest_of_handle_new_regalloc): Remove. (rest_of_handle_combine, rest_of_compilation): Always consider flag_new_regalloc as false. * doc/invoke.texi: Don't document -fnew-ra. 2005-01-17 Paolo Bonzini * bb-reorder.c (fix_edges_for_rarely_executed_code): Remove last parameter to reg_scan. * loop.c (loop_optimize): Likewise. * passes.c (rest_of_handle_tracer, rest_of_handle_if_conversion, rest_of_handle_web, rest_of_handle_cfg, rest_of_handle_jump_bypass, rest_of_handle_life, rest_of_handle_cse, rest_of_handle_cse2, rest_of_handle_gcse, rest_of_handle_loop_optimize, rest_of_handle_loop2, rest_of_handle_jump2): Likewise. * regclass.c (reg_scan): Likewise, for the declaration. * rtl.h (reg_scan): Likewise, for the prototype. 2005-01-17 Kazu Hirata * tree-ssa-dom.c (tree_ssa_dominator_optimize): Don't call mark_dfs_back_edges. 2005-01-16 Daniel Berlin * tree-ssa-pre.c (add_to_sets): s1 may be NULL. (compute_avail): Uses don't go in tmp_gen. 2005-01-16 Steven Bosscher * ggc-page.c (ggc_alloc_stat): Use __builtin_ctzl instead of a loop to look for a free slot in a page entry. 2005-01-16 John David Anglin PR target/16304 * defaults.h (TARGET_DEFERRED_OUTPUT_DEFS): Provide default. * toplev.c (compile_file): Call process_pending_assemble_output_defs just before targetm.asm_out.file_end. * tree.h (process_pending_assemble_output_defs): Declare. * varasm.c (assemble_output_def, process_pending_assemble_output_defs): New functions. (assemble_alias): Defer generation of assembly code for defines when TARGET_DEFERRED_OUTPUT_DEFS is true. * config/rs6000/aix41.h (TARGET_DEFERRED_OUTPUT_DEFS): Define. * config/rs6000/aix43.h (TARGET_DEFERRED_OUTPUT_DEFS): Define. * doc/tm.texi (TARGET_DEFERRED_OUTPUT_DEFS): document. 2005-01-15 John David Anglin PR target/19336 * pa.c (pa_scalar_mode_supported_p): New function. (TARGET_SCALAR_MODE_SUPPORTED_P): Define. * pa.h (MIN_UNITS_PER_WORD): Add comment. * pa-protos.h (prefetch_operand): Delete. (prefetch_cc_operand, prefetch_nocc_operand): New declations. * pa.c (prefetch_operand): Delete. (prefetch_cc_operand, prefetch_nocc_operand): New functions. * pa.h (EXTRA_CONSTRAINT): Add `W' constraint. (PREDICATE_CODES): Delete prefetch_operand. Add prefetch_cc_operand and prefetch_nocc_operand. * pa.md (prefetch): Rework to avoid reload problems handling short displacements when a cache control completer needs to be provided. (prefetch_32, prefetch_64): Delete. (prefetch_cc, prefetch_nocc): New patterns. 2005-01-15 David Edelsohn * config/rs6000/aix52.h (CPLUSPLUS_CPP_SPEC): Revert previous change. 2005-01-15 John David Anglin PR ada/19388 * pa.c (pa_asm_output_aligned_common): Warn if specified alignment exceeds maximum alignment for global common data. * pa64-hpux.h (MAX_OFILE_ALIGNMENT): Define to 32768. * som.h (MAX_OFILE_ALIGNMENT): Likewise. 2004-01-15 Roger Sayle * tree-ssa-dom.c (extract_range_from_cond): Correct condition. 2004-01-15 Roger Sayle * harg-reg-set.h (reg_class_names): Prototype global array. * regclass.c (reg_class_names): Declare here and initialize to REG_CLASS_NAMES. (dump_regclass): Remove local declaration of reg_class_names. (regclass): Likewise. * cfg.c (dump_flow_info): Likewise. * ra-debug.c (reg_class_names): Likewise. * regrename.c (reg_class_names): Likewise. * reload.c (reg_class_names): Likewise. * reload1.c (spill_failure): Likewise. * config/m68hc11/m68hc11.c (reg_class_names): Likewise. 2005-01-15 Ulrich Weigand * config/s390/s390.md ("reload_outti"): Remove predicate for output operand. Abort if operand is not a MEM. ("reload_outdi", "reload_outdf"): Likewise. 2005-01-15 Marc Espie * config.gcc (*-*-openbsd*): Set HAS_LIBC_R for OpenBSD <= 3.2. (i[34567]86-*-openbsd*): Switch to ELF for OpenBSD >= 3.4. * config/openbsd.h: Fix C++ includes for native configurations. Add proper OS_CPP_BUILTINS. Fix libspec for recent OpenBSD. Add trampoline support. * config/i386/openbsdelf.h: New. 2005-01-15 Marc Espie * collect2.c (main): Explicitly parse -dynamic-linker option. 2005-01-15 Jakub Jelinek PR tree-optimization/19060 * tree-ssa-dom.c (extract_range_from_cond) : Return 0 if op1 <= TYPE_MIN_VALUE () resp. op1 >= TYPE_MAX_VALUE (). (simplify_cond_and_lookup_avail_expr): Add assert for dummy == 0 and handle extract_range_from_cond returning false. * fold-const.c (fold): Optimize comparisons with min/max even for width > HOST_BITS_PER_WIDE_INT. 2005-01-15 Ralf Corsepius * config/mips/rtems.h (MIPS_DEFAULT_GVALUE): Set to 0. * config/mips/t-rtems (MULTILIBS_DIRNAMES,MULTILIB_OPTIONS): Remove little endian multilib variants. Add mips32 multilib variant. 2005-01-15 Kazu Hirata * explow.c (copy_all_reg, stabilize): Remove. * expr.h: Remove the corresponding prototypes. * rtlanal.c (regs_set_between_p): Remove. * rtl.h: Remove the corresponding prototype. 2005-01-14 David Edelsohn * config/rs6000/rs6000.c (rs6k_nonimmediate_operand): Rename to rs6000_nonimmediate_operand. * config/rs6000/rs6000.h (PREDICATE_CODES): Rename rs6k_nonimmediate_operand to rs6000_nonimmediate_operand. * config/rs6000/rs6000.md (movsi_internal1): Rename predicate to rs6000_nonimmediate_operand. * config/rs6000/spe.md (movdf_e500_double): Rename predicate to rs6000_nonimmediate_operand. 2005-01-14 Andrew Pinski * tree-ssa-alias.c (pass_may_alias): Add TODO_verify_stmts. 2005-01-14 Aldy Hernandez * config/rs6000/rs6000.h (CLASS_MAX_NREGS): DF goes in 1 register on e500v2. (CANNOT_CHANGE_MODE_CLASS): Restrict DI mode changes on e500v2. (PREDICATE_CODES): Add rs6k_nonimmediate_operand. * config/rs6000/rs6000.c (invalid_e500_subreg): New. (rs6k_nonimmediate_operand): New. (rs6000_legitimate_offset_address_p): Handle DI modes on e500v2 correctly. (legitimate_lo_sum_address_p): Same. (rs6000_legitimize_address): Same. (rs6000_legitimize_reload_address): Same. (rs6000_legitimate_address): Same. (spe_build_register_parallel): Pass DF and DC modes in a DI register. * config/rs6000/rs6000.md ("*movsi_internal1"): Change predicate to rs6k_nonimmediate_operand. * config/rs6000/spe.md ("*frob_df_di"): New. ("*frob_di_df"): New. ("*frob_di_df_2"): New. ("*mov_sidf_e500_subreg0"): New. ("*mov_sidf_e500_subreg4"): New. ("*movdf_e500_double"): Change predicate to rs6k_nonimmediate_operand. 2005-01-14 Aldy Hernandez * postreload.c (move2add_note_store): Only call trunc_int_for_mode on scalar integers. 2005-01-14 Steven Bosscher * tree-ssa-dce.c (visited_control_parents): New sbitmap to replace BB_VISITED uses. (find_obviously_necessary_stmts): Don't clear BB_VISITED. (propagate_necessity): Check the bitmap instead of BB_VISITED. (tree_dce_done): Free visited_control_parents. (perform_tree_ssa_dce): Allocate and clear it. * tree-ssa-pre.c (compute_antic_aux): Make non-recursive. (compute_antic): Iterate from here using a DFS. Use an sbitmap instead of BB_VISITED. 2005-01-14 Kazu Hirata * c-tree.h, coverage.h, langhooks-def.h, optabs.h, output.h, rtl.h, targhooks.h, tree-flow.h, tree-mudflap.h, tree.h: Remove unused prototypes. 2005-01-14 Aldy Hernandez * config/rs6000/rs6000.c (rs6000_stack_info): Fix caching of SPE 64-bit register usage. (spe_func_has_64bit_regs_p): Add FIXME note. 2005-01-14 Aldy Hernandez * config/rs6000/rs6000.c (rs6000_generate_compare): Replace flag_finite_math_only with flag_unsafe_math_optimizations. 2005-01-14 J. D. Johnston * config/s390/tpf-unwind.h (s390_fallback_frame_state): Correct end-of-stack check. (__tpf_eh_return): Copy TPF private stack area from the module boundary stack frame. Add check for when module addresses are equal, but no stub address is found. 2005-01-14 Richard Earnshaw PR target/7525 * arm.h (struct machine_function): Add call_via field. (thumb_call_via_label): Declare. * arm.c (thumb_call_via_label): New variable. (thumb_call_reg_needed): New variable. (arm_output_function_epilogue): For Thumb code, output any per-function call-indirect trampolines. (thumb_call_via_reg): New function. (arm_file_end): New function. (TARGET_ASM_FILE_END): Call arm_file_end. (aof_file_end): Likewise. * arm-protos.h (thumb_call_via_reg): Declare. * arm.md (call_reg_thumb, call_value_reg_thumb): Call thumb_call_via_reg in normal case. 2005-01-14 Jakub Jelinek PR middle-end/19084 PR rtl-optimization/19348 * recog.c (peephole2_optimize): Do global life update if some peephole decides it doesn't need at least one of its inputs and that change influences liveness at the start of the basic block. * basic-block.h (EXECUTE_IF_AND_COMPL_IN_REG_SET): Needs 2 REGSET arguments instead of 1. 2005-01-14 Eric Botcazou PR middle-end/18820 * varasm.c (initializer_constant_valid_p) : Return zero for nested functions needing a static chain or functions with a non-constant address. 2005-01-13 Roger Sayle * simplify-rtx.c (simplify_binary_operation) : Optimize (and (sign_extend X) C) into (zero_extend (and X C)). 2005-01-13 David O'Brien * config/freebsd-spec.h: Make KSE pthread lib logic the default. 2005-01-13 Richard Henderson PR target/19009 PR target/19250 PR target/19252 * config/i386/i386.md (cmpdf, cmpsf, bunordered, bordered, buneq, bunge, bungt, bunle, bunlt, bltgt): Enable for TARGET_SSE_MATH, not just TARGET_SSE. (cmpfp_i_387): Rename from cmpfp_i. Move after sse patterns. (cmpfp_i_mixed): Rename from cmpfp_i_sse; use for TARGET_MIX_SSE_I387. (cmpfp_i_sse): Rename from cmpfp_i_sse_only; use for TARGET_SSE_MATH. (cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387): Similarly. (fp_jcc_1_mixed, fp_jcc_1_sse, fp_jcc_1_387): Similarly. (fp_jcc_2_mixed, fp_jcc_2_sse, fp_jcc_2_387): Similarly. (fp_jcc_3_387, fp_jcc_4_387, fp_jcc_5_387, fp_jcc_6_387, fp_jcc_7_387, fp_jcc_8_387): Rename from fp_jcc_N. (movdicc_c_rex64): Rename with '*'. (movsfcc, movdfcc): Add checks for 387 and sse math to condition. (movsfcc_1_sse_min, movsfcc_1_sse_max, movsfcc_1_sse): New. (movsfcc_1_387): Rename from movsfcc_1. (movdfcc_1_sse_min, movdfcc_1_sse_max, movdfcc_1_sse): New. (movdfcc_1, movdfcc_1_rex64): Add check for 387. (sminsf3, smaxsf3, smindf3, smaxdf3): New. (minsf3, minsf, minsf_nonieee, minsf_sse, mindf3, mindf, mindf_nonieee, mindf_sse, maxsf3, maxsf, maxsf_nonieee, maxsf_sse, maxdf3, maxdf, maxdf_nonieee, maxdf_sse, sse_movsfcc, sse_movsfcc_eq, sse_movdfcc, sse_movdfcc_eq, sse_movsfcc_const0_1, sse_movsfcc_const0_2, sse_movsfcc_const0_3, sse_movsfcc_const0_4, sse_movdfcc_const0_1, sse_movdfcc_const0_2, sse_movdfcc_const0_3, sse_movdfcc_const0_4): Remove. * config/i386/i386.c (ix86_expand_fp_movcc): For TARGET_SSE_MATH, recognize min/max early. Update for changed sse cmove patterns. (ix86_split_sse_movcc): New. * config/i386/i386-protos.h: Update. 2005-01-13 Steven Bosscher * tree-ssa-dse.c (fix_phi_uses): Use SSA operand iterators. (fix_stmt_v_may_defs): Likewise. 2005-01-13 Richard Henderson * config/i386/i386.c (ix86_expand_fp_absneg_operator): Use elt_mode for converting the mask. 2005-01-13 David Edelsohn * config/rs6000/aix52.h (CPLUSPLUS_CPP_SPEC): Change _XOPEN_SOURCE definition to 600. 2005-01-13 Richard Henderson * config/i386/i386.c (IX86_BUILTIN_MOVQ, IX86_BUILTIN_LOADD, IX86_BUILTIN_STORED, IX86_BUILTIN_MOVQ2DQ, IX86_BUILTIN_MOVDQ2Q): Remove. (IX86_BUILTIN_VEC_EXT_V4SI): New. (ix86_init_mmx_sse_builtins, ix86_expand_builtin): Update to match. (ix86_expand_vector_extract): For V4S[FI], extract element 0 after shuffling. * config/i386/sse.md (sse_concatv2sf): Accept zero operand 2. (sse2_pextrw): Fix immediate constraint. (sse2_loadq, sse2_loadq_rex64): Remove. * config/i386/emmintrin.h (_mm_cvtsi128_si32, _mm_cvtsi128_si64x): Use __builtin_ia32_vec_ext_. (_mm_cvtsi32_si128, _mm_cvtsi64x_si128): Use _mm_set_epi. 2005-01-13 Aldy Hernandez * function.c (assign_parm_setup_block): Look inside original entry_parm when inspecting PARALLEL. 2005-01-13 Ralf Corsepius Joel Sherrill PR target/19399 * gthr-rtems.h (__gthread_recursive_mutex_t): New type. (__GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION): Define to rtems_gxx_recursive_mutex_init. (__gthread_recursive_mutex_lock): New function. (__gthread_recursive_mutex_trylock): Likewise. (__gthread_recursive_mutex_unlock): Likewise. 2005-01-13 Ralf Corsepius * config/i386/t-rtems-i386: Multilib on -mtune instead of -mcpu. 2005-01-13 Jan Beulich * config/ia64/ia64.md (ashlti3, ashlti3_internal): New. (ashrti3_internal): Indicate output is early clobber. Generate result into output rather than first input. Use move for low word of output if shift count is exactly 64. (lshrti3_internal): Likewise. 2005-01-13 Hans-Peter Nilsson PR target/18329 PR target/18330 * reload1.c (delete_output_reload): Don't delete an output reload if the pseudo lives longer than a single basic block. Adjust and improve wording of comment. 2005-01-12 Andrew Pinski PR target/19334 * config/darwin.c (machopic_select_section): Use TYPE_SIZE_UNIT instead of TYPE_SIZE where we mean the number of bytes. 2005-01-12 Aldy Hernandez * function.c (assign_parm_setup_block): Relax condition on multi-register optimization. 2005-01-12 Nick Clifton * config/sh/sh.md (udivsi3_sh2a, divsi3_sh2a): Give these patterns an "in_delay_slot" attribute of "no" to prevent them being used in delay slots. This is forbidden because they might generate exceptions. 2005-01-12 Alan Modra PR target/19389 * config/rs6000/rs6000.md (movtf_internal): Replace r->o and m->r with r->Y and Y->r. 2005-01-12 Nick Clifton * config/iq2000/iq2000.h (ASM_SPEC): Undefine (to stop -Qy being passed on to GAS) but do not define, as GAS no longer supports or needs the -m2000 option. 2005-01-11 Roger Sayle * builtins.c (fold_builtin_fabs): Convert argument to the appropriate type as args of unprototyped builtins aren't automatically promoted. (fold_builtin_abs): Likewise. 2005-01-11 Kaveh R. Ghazi * Makefile.in: Set a `build-warn' variable. 2005-01-11 Zdenek Dvorak PR tree-optimization/17949 * tree-ssa-loop-ivopts.c (may_be_unaligned_p): New function. (find_interesting_uses_address): Use it. 2005-01-11 Aldy Hernandez * regrename.c (kill_value): Handle subreg's that won't simplify. 2005-01-11 Richard Henderson PR target/13366 * config/i386/i386.h (enum ix86_builtins): Move ... * config/i386/i386.c: ... here. (IX86_BUILTIN_MOVDDUP, IX86_BUILTIN_MMX_ZERO, IX86_BUILTIN_PEXTRW, IX86_BUILTIN_PINSRW, IX86_BUILTIN_LOADAPS, IX86_BUILTIN_LOADSS, IX86_BUILTIN_STORESS, IX86_BUILTIN_SSE_ZERO, IX86_BUILTIN_PEXTRW128, IX86_BUILTIN_PINSRW128, IX86_BUILTIN_LOADAPD, IX86_BUILTIN_LOADSD, IX86_BUILTIN_STOREAPD, IX86_BUILTIN_STORESD, IX86_BUILTIN_STOREHPD, IX86_BUILTIN_STORELPD, IX86_BUILTIN_SETPD1, IX86_BUILTIN_SETPD, IX86_BUILTIN_CLRPD, IX86_BUILTIN_LOADPD1, IX86_BUILTIN_LOADRPD, IX86_BUILTIN_STOREPD1, IX86_BUILTIN_STORERPD, IX86_BUILTIN_LOADDQA, IX86_BUILTIN_STOREDQA, IX86_BUILTIN_CLRTI, IX86_BUILTIN_LOADDDUP): Remove. (IX86_BUILTIN_VEC_INIT_V2SI, IX86_BUILTIN_VEC_INIT_V4HI, IX86_BUILTIN_VEC_INIT_V8QI, IX86_BUILTIN_VEC_EXT_V2DF, IX86_BUILTIN_VEC_EXT_V2DI, IX86_BUILTIN_VEC_EXT_V4SF, IX86_BUILTIN_VEC_EXT_V8HI, IX86_BUILTIN_VEC_EXT_V4HI, IX86_BUILTIN_VEC_SET_V8HI, IX86_BUILTIN_VEC_SET_V4HI): New. (ix86_init_builtins): Make static. (ix86_init_mmx_sse_builtins): Update for changed builtins. (ix86_expand_binop_builtin): Only use ix86_fixup_binary_operands if all the modes match. Otherwise, fake it. (get_element_number, ix86_expand_vec_init_builtin, ix86_expand_vec_ext_builtin, ix86_expand_vec_set_builtin): New. (ix86_expand_builtin): Make static. Update for changed builtins. (ix86_expand_vector_move_misalign): Use sse2_loadlpd with zero operand instead of sse2_loadsd. Cast sse1 fallback to V4SFmode. (ix86_expand_vector_init_duplicate): New. (ix86_expand_vector_init_low_nonzero): New. (ix86_expand_vector_init_one_var, ix86_expand_vector_init_general): Split out from ix86_expand_vector_init; handle integer modes. (ix86_expand_vector_init): Use them. (ix86_expand_vector_set, ix86_expand_vector_extract): New. * config/i386/i386-protos.h: Update. * config/i386/predicates.md (reg_or_0_operand): New. * config/i386/mmx.md (mov_internal): Add 'r' variants. (movv2sf_internal): Likewise. And a splitter to match them all. (vec_dupv2sf, mmx_concatv2sf, vec_setv2sf, vec_extractv2sf, vec_initv2sf, vec_dupv4hi, vec_dupv2si, mmx_concatv2si, vec_setv2si, vec_extractv2si, vec_initv2si, vec_setv4hi, vec_extractv4hi, vec_initv4hi, vec_setv8qi, vec_extractv8qi, vec_initv8qi): New. (mmx_pinsrw): Fix operand ordering. * config/i386/sse.md (movv4sf splitter): Use direct pattern, rather than sse_loadss expander. (movv2df splitter): Similarly. (sse_loadss, sse_loadlss): Remove. (vec_dupv4sf, sse_concatv2sf, sse_concatv4sf, vec_extractv4sf_0): New. (vec_setv4sf, vec_setv2df): Use ix86_expand_vector_set. (vec_extractv4sf, vec_extractv2df): Use ix86_expand_vector_extract. (sse3_movddup): Rename with '*'. (sse3_movddup splitter): Use gen_rtx_REG instead of gen_lowpart. (sse2_loadsd): Remove. (vec_dupv2df_sse3): Rename from sse3_loadddup. (vec_dupv2df, vec_concatv2df_sse3, vec_concatv2df): New. (sse2_pinsrw): Fix argument ordering. (sse2_loadld, sse2_loadq): Add sse1 alternatives. (sse2_stored): Remove 'r' destination. (vec_dupv4si, vec_dupv2di, sse2_concatv2si, sse1_concatv2si, vec_concatv4si_1, vec_concatv2di, vec_setv2di, vec_extractv2di, vec_initv2di, vec_setv4si, vec_extractv4si, vec_initv4si, vec_setv8hi, vec_extractv8hi, vec_initv8hi, vec_setv16qi, vec_extractv16qi, vec_initv16qi): New. * config/i386/emmintrin.h (__m128i, __m128d): Use typedef, not define. (_mm_set_sd, _mm_set1_pd, _mm_setzero_pd, _mm_set_epi64x, _mm_set_epi32, _mm_set_epi16, _mm_set_epi8, _mm_setzero_si128): Use constructor form. (_mm_load_pd, _mm_store_pd): Use plain dereference. (_mm_load_si128, _mm_store_si128): Likewise. (_mm_load1_pd): Use _mm_set1_pd. (_mm_load_sd): Use _mm_set_sd. (_mm_store_sd, _mm_storeh_pd): Use __builtin_ia32_vec_ext_v2df. (_mm_store1_pd, _mm_storer_pd): Use _mm_store_pd. (_mm_set_epi64): Use _mm_set_epi64x. (_mm_set1_epi64x, _mm_set1_epi64, _mm_set1_epi32, _mm_set_epi16, _mm_set1_epi8, _mm_setr_epi64, _mm_setr_epi32, _mm_setr_epi16, _mm_setr_epi8): Use _mm_set_foo form. (_mm_loadl_epi64, _mm_movpi64_epi64, _mm_move_epi64): Use _mm_set_epi64. (_mm_storel_epi64, _mm_movepi64_pi64): Use __builtin_ia32_vec_ext_v2di. (_mm_extract_epi16): Use __builtin_ia32_vec_ext_v8hi. (_mm_insert_epi16): Use __builtin_ia32_vec_set_v8hi. * config/i386/mmintrin.h (_mm_setzero_si64): Use plain cast. (_mm_set_pi32): Use __builtin_ia32_vec_init_v2si. (_mm_set_pi16): Use __builtin_ia32_vec_init_v4hi. (_mm_set_pi8): Use __builtin_ia32_vec_init_v8qi. (_mm_set1_pi16, _mm_set1_pi8): Use _mm_set_piN variant. * config/i386/pmmintrin.h (_mm_loaddup_pd): Use _mm_load1_pd. (_mm_movedup_pd): Use _mm_shuffle_pd. * config/i386/xmmintrin.h (_mm_setzero_ps, _mm_set_ss, _mm_set1_ps, _mm_set_ps, _mm_setr_ps): Use constructor form. (_mm_cvtpi16_ps, _mm_cvtpu16_ps, _mm_cvtpi8_ps, _mm_cvtpu8_ps, _mm_cvtps_pi8, _mm_cvtpi32x2_ps): Avoid __builtin_ia32_mmx_zero; Use _mm_setzero_ps. (_mm_load_ss, _mm_load1_ps): Use _mm_set* form. (_mm_load_ps, _mm_loadr_ps): Use raw dereference. (_mm_store_ss): Use __builtin_ia32_vec_ext_v4sf. (_mm_store_ps): Use raw dereference. (_mm_store1_ps): Use _mm_storeu_ps. (_mm_storer_ps): Use _mm_store_ps. (_mm_extract_pi16): Use __builtin_ia32_vec_ext_v4hi. (_mm_insert_pi16): Use __builtin_ia32_vec_set_v4hi. 2005-01-11 Stan Shebs * config/rs6000/rs6000.c (machopic_output_stub): Issue ldu instead of lwzu if 64-bit -mdynamic-no-pic. 2005-01-11 Andrew Pinski PR target/18761 * config/rs6000/rs6000.c (rs6000_special_round_type_align): Skip all DECLs except for FIELD_DECLs. 2005-01-11 Andreas Krebbel * config/s390/s390.c (override_options): Return error if -mbackchain, -mpacked-stack and -mhard-float are used together. (s390_va_start): Remove the backchain && packed-stack special case. (s390_gimplify_va_arg): Likewise. * doc/invoke.texi: Remove the ABI incompatibility note. 2005-01-11 Andreas Krebbel * config/s390/s390.c (struct s390_frame_layout): Remove save_backchain_p. (s390_frame_info, s390_emit_prologue): Replace occurrences of save_backchain_p with TARGET_BACKCHAIN. 2005-01-11 Alan Modra PR target/18916 * builtins.c (std_gimplify_va_arg_expr): Adjust alignment of *ap. * expr.h (struct locate_and_pad_arg_data): Add "boundary". * function.c (locate_and_pad_parm): Set new field. (assign_parm_find_stack_rtl): Use it instead of FUNCTION_ARG_BOUNDARY. Tweak where_pad test to include "none". Always set mem align for stack_parm. (assign_parm_adjust_stack_rtl): Discard stack_parm if alignment not sufficient for type. (assign_parm_setup_block): If stack_parm is zero on entry, always make a new stack local. Block move old stack parm if necessary to new aligned stack local. (assign_parm_setup_stack): Use a block move to handle potentially misaligned entry_parm. (assign_parms_unsplit_complex): Specify required alignment when creating stack local. * calls.c (compute_argument_addresses): Override alignment of stack arg calculated from its type with the alignment given by FUNCTION_ARG_BOUNDARY. (store_one_arg): Likewise. 2005-01-11 Jan Beulich * config/ia64/ia64.md (zero_extendsidi2): Replace zxt4 by addp4. Change respective itanium_class attribute to ialu. (shladdp4_internal): New. * config/ia64/predicates.md (shladd_log2_operand): New. 2005-01-11 Richard Henderson * expr.c (store_constructor): Use rtvec_alloc instead of alloca+gen_rtvec_v, and an incorrect number passed to alloca. 2005-01-11 Kazu Hirata * config/alpha/alpha.c, config/i386/mmx.md: Fix comment typos. 2005-01-11 Alan Modra * varasm.c (default_section_type_flags_1): Don't set SECTION_SMALL. * config/ia64/ia64.c (TARGET_SECTION_TYPE_FLAGS): Define. (TARGET_RWRELOC): Define. (ia64_rwreloc_section_type_flags): Delete. (ia64_section_type_flags): New function. * config/ia64/hpux.h (TARGET_SECTION_TYPE_FLAGS): Don't define. (TARGET_RWRELOC): Define. 2005-01-10 David Mosberger PR target/18987 * config/ia64/ia64.c (process_set): For alloc insn, only call process_epilogue is !frame_pointer_needed. 2005-01-10 Roger Sayle PR c++/19355 * c-common.c (c_common_truthvalue_conversion): TRUTH_NOT_EXPR is a unary operator and can't be treated as a binary/comparison operator. 2005-01-10 Richard Henderson * config/i386/i386.c (ix86_function_value): Use type_natural_mode. (ix86_return_in_memory): Likewise. (function_arg_advance): Likewise. Mirror structure in function_arg for choosing register to advance. 2005-01-10 Kazu Hirata * tree-vectorizer.c, tree.def: Fix comment typos. 2005-01-10 Mark Dettinger * config/s390/s390.c (struct processor_costs): 4 new fields: ddbr, ddr, debr, der. (s390_rtx_costs): More precise handling of divide instructions. 2005-01-10 David Edelsohn * config/rs6000/t-aix43 (BOOT_LDFLAGS): Define. 2005-01-10 Jan Beulich * config/ia64/ia64.c (ia64_in_small_data_p): Also handle the section names resulting from -ffunction-sections/-fdata-sections and linkonce ones. * varasm.c (default_section_type_flags_1): Also set SECTION_SMALL based on the section name. Rearrange the section name comparison logic slightly so that each section name is compared against at most once. 2005-01-10 Ben Elliston * doc/invoke.texi (Code Gen Options): Add PowerPC to the list of targets for which -fPIC reduces limitations on the GOT size. 2005-01-09 Falk Hueffner * fold-const.c (fold): Also handle EXACT_DIV_EXPR when folding X/C1 cmpop C2. 2005-01-09 David Edelsohn PR target/18720 * collect2.c (main): Set aixrtl_flag for -brtl option. (resolve_lib_name): Search for .so file extension before .a if aixrtl_flag set. 2005-01-09 Dorit Naishlos * tree-vectorizer.c (vect_enhance_data_refs_alignment): Add dump prints. (vect_analyze_data_refs_alignment): Add dump prints. 2005-01-09 Ira Rosen * tree-vectorizer.c (vect_analyze_offset_expr): Use expr_invariant_in_loop_p. Initialize outputs first thing in the function. (vect_update_ivs_after_vectorizer): Call initial_condition_in_loop_num. (vect_is_simple_iv_evolution): Call initial_condition_in_loop_num. (vect_analyze_pointer_ref_access): Check that the initial condition of the access function is loop invariant. 2005-01-09 Richard Henderson * config/i386/i386.c (bdesc_2arg): Update names for mmx_ prefixes. (ix86_expand_builtin): Likewise. Frob MASKMOVQ wrt the input mem just like MASKMOVDQU. Return plain zero for MMX_ZERO. * config/i386/i386.md (MMXMODEI, mov, mov_internal_rex64, mov_internal, movv2sf, movv2sf_internal_rex64, movv2sf_internal, MMXMODE, movmisalign, mmx_pmovmskb, mmx_maskmovq, mmx_maskmovq_rex, sse_movntdi, addv8qi3, addv4hi3, addv2si3, mmx_adddi3, ssaddv8qi3, ssaddv4hi3, usaddv8qi3, usaddv4hi3, subv8qi3, subv4hi3, subv2si3, mmx_subdi3, sssubv8qi3, sssubv4hi3, ussubv8qi3, ussubv4hi3, mulv4hi3, smulv4hi3_highpart, umulv4hi3_highpart, mmx_pmaddwd, sse2_umulsidi3, mmx_iordi3, mmx_xordi3, mmx_anddi3, mmx_nanddi3, mmx_uavgv8qi3, mmx_uavgv4hi3, mmx_psadbw, mmx_pinsrw, mmx_pinsrw, mmx_pextrw, mmx_pshufw, eqv8qi3, eqv4hi3, eqv2si3, gtv8qi3, gtv4hi3, gtv2si3, umaxv8qi3, smaxv4hi3, uminv8qi3, sminv4hi3, ashrv4hi3, ashrv2si3, lshrv4hi3, lshrv2si3, mmx_lshrdi3, ashlv4hi3, ashlv2si3, mmx_ashldi3, mmx_packsswb, mmx_packssdw, mmx_packuswb, mmx_punpckhbw, mmx_punpckhwd, mmx_punpckhdq, mmx_punpcklbw, mmx_punpcklwd, mmx_punpckldq, emms, addv2sf3, subv2sf3, subrv2sf3, gtv2sf3, gev2sf3, eqv2sf3, pfmaxv2sf3, pfminv2sf3, mulv2sf3, femms, pf2id, pf2iw, pfacc, pfnacc, pfpnacc, pi2fw, floatv2si2, pfrcpv2sf2, pfrcpit1v2sf3, pfrcpit2v2sf3, pfrsqrtv2sf2, pfrsqit1v2sf3, pmulhrwv4hi3, pswapdv2si2, pswapdv2sf2): Move to mmx.md; rename as necessary with leading mmx_ prefix. (mmx_clrdi, pavgusb): Remove. (ldmxcsr, stmxcsr, sfence, sfence_insn): Move to sse.md; rename with leading sse_ prefix. * config/i386/sse.md: Receive them. * config/i386/mmx.md: New file. (MMXMODE12, MMXMODE24, mmxvecsize): New. (subrv2sf3): Turn into expander for normal subtraction. (mmx_addv2sf3, mmx_mulv2sf3, mmx_smaxv2sf3, mmx_sminv2sf3, mmx_eqv2sf3, mmx_mulv4hi3, mmx_smulv4hi3_highpart, mmx_umulv4hi3_highpart, mmx_pmaddwd, mmx_pmulhrwv4hi3, sse2_umulsidi3, mmx_umaxv8qi3, mmx_smaxv4hi3, mmx_uminv8qi3, mmx_sminv4hi3): Mark commutative; use ix86_binary_operator_ok. (mmx_add3, mmx_ssadd3, mmx_usadd3, mmx_sub3, mmx_sssub3, mmx_ussub3 mmx_ashr3, mmx_lshr3, mmx_ashl3 mmx_eq3, mmx_gt3, mmx_and3, mmx_nand3, mmx_ior3, mmx_xor3): Macroize from existing patterns; use ix86_binary_operator_ok. (mmx_packsswb, mmx_packssdw, mmx_packuswb): Add memory alternative. (mmx_punpckhbw, mmx_punpcklbw, mmx_punpckhwd, mmx_punpcklwd, mmx_punpckhdq, mmx_punpckhdq, mmx_punpckldq): Likewise. Model with vec_select+vec_concat. (mmx_pshufw, mmx_pshufw_1): Likewise. (mmx_uavgv8qi3): Merge pavgusb. Model correcty. (mmx_uavgv4hi3): Model correctly. * config/i386/mmintrin.h (_mm_and_si64, _mm_andnot_si64, _mm_or_si64, _mm_xor_si64): Remove casts. 2005-01-09 Zdenek Dvorak PR tree-optimization/19224 * tree-scalar-evolution.c (get_instantiated_value, set_instantiated_value): New functions. (instantiate_parameters_1): Cache the results. (instantiate_parameters, resolve_mixers): Initialize and free the cache. 2005-01-08 David Edelsohn * config/i386/i386.md (addhi_4): Correct reference in comment. (addqi_4): Same. 2005-01-08 Richard Henderson * config/i386/emmintrin.h (_mm_cvtsi128_si32): Move earlier. (_mm_cvtsi128_si64x): Likewise. (_mm_srl_epi64, _mm_srl_epi32, _mm_srl_epi16, _mm_sra_epi32, _mm_sra_epi16, _mm_sll_epi64, _mm_sll_epi32, _mm_sll_epi16): Use the _mm_{srl,sll}i_foo counterpart, and _mm_cvtsi128_si32. * config/i386/i386-modes.def: Add V16HI, V32QI, V4DF, V8SF. * config/i386/i386-protos.h: Update. * config/i386/i386.c (print_operand): Add 'H'. (ix86_fixup_binary_operands): Split out from ... (ix86_expand_binary_operator): ... here. (ix86_fixup_binary_operands_no_copy): New. (ix86_expand_fp_absneg_operator): Handle vector mode results. (bdesc_2arg): Update names for sse{,2,3}_ prefixes. (ix86_init_mmx_sse_builtins): Remove *maskncmp* special cases. (safe_vector_operand): Use CONST0_RTX. (ix86_expand_binop_builtin): Use ix86_fixup_binary_operands. (ix86_expand_builtin): Merge CODE_FOR_sse2_maskmovdqu_rex64 and CODE_FOR_sse2_maskmovdqu. Special case SSE version of MASKMOVDQU expansion. Update names for sse{,2,3}_ prefixes. Remove *maskncmp* special cases. * config/i386/i386.h (IX86_BUILTIN_CMPNGTSS): New. (IX86_BUILTIN_CMPNGESS): New. * config/i386/i386.md (UNSPEC_FIX_NOTRUNC): New. (attr type): Add sselog1. (attr unit, attr memory): Handle it. (movti, movti_internal, movti_rex64): Move near other integer moves. (movtf, movtf_internal): Move near other fp moves. (SSEMODE, SSEMODEI, vec_setv2df, vec_extractv2df, vec_initv2df, vec_setv4sf, vec_extractv4sf, vec_initv4sf, movv4sf, movv4sf_internal, movv2df, movv2df_internal, mov, mov_internal, movmisalign, sse_movups_1, sse_movmskps, sse_movntv4sf, sse_movhlps, sse_movlhps, sse_storehps, sse_loadhps, sse_storelps, sse_loadlps, sse_loadss, sse_loadss_1, sse_movss, sse_storess, sse_shufps, addv4sf3, vmaddv4sf3, subv4sf3, vmsubv4sf3, negv4sf2, mulv4sf3, vmmulv4sf3, divv4sf3, vmdivv4sf3, rcpv4sf2, vmrcpv4sf2, rsqrtv4sf2, vmrsqrtv4sf2, sqrtv4sf2, vmsqrtv4sf2, sse_andv4sf3, sse_nandv4sf3, sse_iorv4sf3, sse_xorv4sf3, sse2_andv2df3, sse2_nandv2df3, sse2_iorv2df3, sse2_xorv2df3, sse2_andv2di3, sse2_nandv2di3, sse2_iorv2di3, sse2_xorv2di3, maskcmpv4sf3, vmmaskcmpv4sf3, sse_comi, sse_ucomi, sse_unpckhps, sse_unpcklps, smaxv4sf3, vmsmaxv4sf3, sminv4sf3, vmsminv4sf3, cvtpi2ps, cvtps2pi, cvttps2pi, cvtsi2ss, cvtsi2ssq, cvtss2si, cvtss2siq, cvttss2si, cvttss2siq, addv2df3, vmaddv2df3, subv2df3, vmsubv2df3, mulv2df3, vmmulv2df3, divv2df3, vmdivv2df3, smaxv2df3, vmsmaxv2df3, sminv2df3, vmsminv2df3, sqrtv2df2, vmsqrtv2df2, maskcmpv2df3, vmmaskcmpv2df3, sse2_comi, sse2_ucomi, sse2_movmskpd, sse2_pmovmskb, sse2_maskmovdqu, sse2_maskmovdqu_rex64, sse2_movntv2df, sse2_movntv2di, sse2_movntsi, cvtdq2ps, cvtps2dq, cvttps2dq, cvtdq2pd, cvtpd2dq, cvttpd2dq, cvtpd2pi, cvttpd2pi, cvtpi2pd, cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq, cvtsi2sd, cvtsi2sdq, cvtsd2ss, cvtss2sd, cvtpd2ps, cvtps2pd, addv16qi3, addv8hi3, addv4si3, addv2di3, ssaddv16qi3, ssaddv8hi3, usaddv16qi3, usaddv8hi3, subv16qi3, subv8hi3, subv4si3, subv2di3, sssubv16qi3, sssubv8hi3, ussubv16qi3, ussubv8hi3, mulv8hi3, smulv8hi3_highpart, umulv8hi3_highpart, sse2_umulsidi3, sse2_umulv2siv2di3, sse2_pmaddwd, sse2_uavgv16qi3, sse2_uavgv8hi3, sse2_psadbw, sse2_pinsrw, sse2_pextrw, sse2_pshufd, sse2_pshuflw, sse2_pshufhw, eqv16qi3, eqv8hi3, eqv4si3, gtv16qi3, gtv8hi3, gtv4si3, umaxv16qi3, smaxv8hi3, uminv16qi3, sminv8hi3, ashrv8hi3, ashrv4si3, lshrv8hi3, lshrv4si3, lshrv2di3, ashlv8hi3, ashlv4si3, ashlv2di3, sse2_ashlti3, sse2_lshrti3, sse2_unpckhpd, sse2_unpcklpd, sse2_packsswb, sse2_packssdw, sse2_packuswb, sse2_punpckhbw, sse2_punpckhwd, sse2_punpckhdq, sse2_punpcklbw, sse2_punpcklwd, sse2_punpckldq, sse2_punpcklqdq, sse2_punpckhqdq, sse2_movupd, sse2_movdqu, sse2_movdq2q, sse2_movdq2q_rex64, sse2_movq2dq, sse2_movq2dq_rex64, sse2_loadd, sse2_stored, sse2_storehpd, sse2_loadhpd, sse2_storelpd, sse2_loadlpd, sse2_movsd, sse2_loadsd, sse2_loadsd_1, sse2_storesd, sse2_shufpd, sse2_clflush, sse2_mfence, mfence_insn, sse2_lfence, lfence_insn, mwait, monitor, addsubv4sf3, addsubv2df3, haddv4sf3, haddv2df3, hsubv4sf3, hsubv2df3, movshdup, movsldup, lddqu, loadddup, movddup): Move to sse.md. Any with non-optabs meanings renamed with an "sse{,2,3}_" prefix at the same time. (SSEPUSH, push): Remove. (MMXPUSH, push): Remove. (sse_movaps, sse_movaps_1, sse_movups): Remove. (sse2_movapd, sse2_movdqa, sse2_movq): Remove. (sse2_andti3, sse2_nandti3, sse2_iorti3, sse2_xorti3): Remove. (sse_clrv4sf, sse_clrv2df, sse2_clrti): Remove. (maskncmpv4sf3, vmmaskncmpv4sf3): Remove. (maskncmpv2df3, vmmaskncmpv2df3): Remove. (ashrv8hi3_ti, ashrv4si3_ti, lshrv8hi3_ti, lshrv4si3_ti): Remove. (lshrv2di3_ti, ashlv8hi3_ti, ashlv4si3_ti, ashlv2di3_ti): Remove. * config/i386/athlon.md (athlon_sselog_load): Handle sselog1. (athlon_sselog_load_k8, athlon_sselog, athlon_sselog_k8): Likewise. * config/i386/ppro.md (ppro_sse_div_V4SF_load): Fix memory attr. (ppro_sse_log_V4SF_load): Similarly. Handle sselog1. (ppro_sse_log_V4SF): Handle sselog1. * config/i386/predicates.md (const_0_to_1_operand): New. (const_0_to_255_mul_8_operand): New. (const_1_to_31_operand): Rename from const_int_1_31_operand. (const_2_to_3_operand, const_4_to_7_operand): New. * config/i386/sse.md: New file. (SSEMODE12, SSEMODE24, SSEMODE124, SSEMODE248, ssevecsize): New. (sse_movups): Rename from sse_movups_1. (sse_loadlss): Rename from sse_loadss_1. (andv4sf3, iorv4sf3, xorv4sf3, andv2df3): Remove the sse prefix from the name. (negv4sf2): Use ix86_expand_fp_absneg_operator. (absv4sf2, negv2df, absv2df): New. (addv4sf3): Add expander to call ix86_fixup_binary_operands_no_copy. (subv4sf3, mulv4sf3, divv4sf3, smaxv4sf3, sminv4sf3, andv4sf3, iorv4sf3, xorv4sf3, addv2df3, subv2df3, mulv2df3, divv2df3, smaxv2df3, sminv2df3, andv2df3, iorv2df3, xorv2df3, mulv8hi3, umaxv16qi3, smaxv8hi3, uminv16qi3, sminv8hi3): Likewise. (sse3_addsubv4sf3): Model correctly. sse3_haddv4sf3, sse3_hsubv4sf3, sse3_addsubv2df3, sse3_haddv2df3, sse3_hsubv2df3, sse2_ashlti3, sse2_lshrti3): Likewise. (sse_movhlps): Model with vec_select+vec_concat. (sse_movlhps, sse_unpckhps, sse_unpcklps, sse3_movshdup, sse3_movsldup, sse_shufps, sse_shufps_1, sse2_unpckhpd, sse3_movddup, sse2_unpcklpd, sse2_shufpd, sse2_shufpd_1, sse2_punpckhbw, sse2_punpcklbw, sse2_punpckhwd, sse2_punpcklwd, sse2_punpckhdq, sse2_punpckldq, sse2_punpckhqdq, sse2_punpcklqdq, sse2_pshufd, sse2_pshufd_1, sse2_pshuflw, sse2_pshuflw_1, sse2_pshufhw, sse2_pshufhw_1): Likewise. (neg2, one_cmpl2): New. (add3, sse2_ssadd3, sse2_usadd3, sub3, sse2_sssub3, sse2_ussub3, ashr3, lshr3, sse2_eq3, sse2_gt3, and3, sse_nand3, ior3, xor3): Macroize from existing patterns. (addv4sf3, sse_vmaddv4sf3, mulv4sf3, sse_vmmulv4sf3, smaxv4sf3, sse_vmsmaxv4sf3, sminv4sf3, sse_vmsminv4sf3, addv2df3, sse2_vmaddv2df3, mulv2df3, sse2_vmmulv2df3, smaxv2df3, sse2_vmsmaxv2df3, sminv2df3, sse2_vmsminv2df3, umaxv16qi3, smaxv8hi3, uminv16qi3 sminv8hi3): Mark commutative operands. Use ix86_binary_operator_ok. (sse_unpckhps, sse_unpcklps, sse2_packsswb, sse2_packssdw, sse2_packuswb, sse2_punpckhbw, sse2_punpcklbw, sse2_punpckhwd, sse2_punpcklwd, sse2_punpckhdq, sse2_punpckldq, sse2_punpckhqdq, sse2_punpcklqdq): Allow operand2 in memory. (sse_movhlps, sse_movlhps, sse2_unpckhpd, sse2_unpcklpd sse2_movsd): Add memory alternatives. (sse_storelps): Turn expander into an insn; split after reload. (sse_storess, sse2_loadhpd, sse2_loadlpd): Add non-xmm inputs. (sse2_storehpd, sse2_storelpd): Add non-xmm outputs. 2005-01-08 Eric Botcazou * configure.ac (DWARF-2 debug_line): Use objdump. * configure: Regenerate. 2005-01-08 Jeff Law Diego Novillo PR tree-optimization/18241 * tree-nrv.c (tree_nrv): Ignore volatile return values. * tree-ssa-dse.c (dse_optimize_stmt): Do not optimize statements with volatile operands. * tree-ssa-operands.c (add_stmt_operand): Do add volatile operands after marking a statement with has_volatile_ops. 2005-01-08 Roger Sayle * tree.c (int_fits_type_p): Always honor integer constant TYPE_MIN_VALUE and TYPE_MAX_VALUE if they exist. 2005-01-08 Roger Sayle * ifcvt.c (find_if_case_1): Reinstate 2005-01-04 change, now that the latent bug in rtl_delete_block has been resolved. 2005-01-08 Richard Sandiford * config/mips/t-iris6 (MULTILIB_DIRNAMES): Use -mabi argument values. (MULTILIB_OSDIRNAMES): Use the standard lib, lib32 and lib64. 2005-01-08 Richard Sandiford * config/mips/t-slibgcc-irix (SHLIB_LINK): Install a copy of the library as @multilib_dir@/$(SHLIB_SONAME). 2005-01-07 Eric Botcazou * configure.ac (HAVE_AS_OFFSETABLE_LO10): Fix typo. * configure: Regenerate. 2005-01-07 Jakub Jelinek * c-common.c (handle_mode_attribute): For ENUMERAL_TYPE, also copy TYPE_MODE. 2005-01-07 David Edelsohn PR target/13674 * config/rs6000/rs6000.c (rs6000_legitimize_reload_address): Convert non-word aligned offset address using ld/std into indirect address. 2005-01-07 Richard Henderson * config/i386/i386.md (sse_loadhps splitter): Fix operand number typo. 2005-01-07 Richard SAndiford * tree.h (IS_EXPR_CODE_CLASS): Use a straight-forward range check. 2005-01-07 Jakub Jelinek PR tree-optimization/19283 * fold-const.c (fold_widened_comparison): Return NULL if shorter_type is not shorter than the original type. PR rtl-optimization/19012 * config/i386/i386.md (addqi_1_slp): Set memory attribute. PR rtl-optimization/18861 * cfgbuild.c (BLOCK_USED_BY_TABLEJUMP): Define. (FULL_STATE): Define. (mark_tablejump_edge): New function. (purge_dead_tablejump_edges): New function. (find_bb_boundaries): Use it. PR tree-optimization/18828 * builtins.c (expand_builtin_next_arg): Remove argument and all the argument checking. (expand_builtin): Adjust caller. (expand_builtin_va_start): Likewise. Remove error for too many arguments. (fold_builtin_next_arg): Issue error for too many arguments. After checking arguments, replace them with magic arguments that prevent further checking of the args. 2005-01-06 John David Anglin * pa64-hpux.h (STARTFILE_SPEC): Fix typo in spec. 2005-01-06 Roger Sayle PR target/6077 * gcc.c (input_suffix_matches): Tweak the semantics of %{.s:...} and %{.S:...} (and their negative variants) to test whether the input file is assembler or pre-processed-assembler independent of the actual filename extension. 2005-01-06 Roger Sayle * simplify-rtx.c (simplify_subreg): Simplify truncations of shifts of sign or zero extended values. 2005-01-06 Geoffrey Keating * c-cppbuiltin.c (builtin_define_float_constants): Set __*_EPSILON__ for IBM long double format correctly. 2005-01-06 Daniel Berlin Fix PR tree-optimization/18792 * tree-data-ref.c (build_classic_dist_vector): Change first_loop to first_loop_depth, and use loop depth instead of loop number. (build_classic_dir_vector): Ditto. (compute_data_dependences_for_loop): Use depth, not loop number. * tree-loop-linear.c (try_interchange_loops): Use loop depth, not loop number. Pass in loops, instead of loop numbers. (gather_interchange_stats): Ditto. (linear_transform_loops): Ditto. 2005-01-06 Richard Sandiford PR rtl-opt/13299 * loop.c (get_monotonic_increment, biased_biv_fits_mode_p, biv_fits_mode_p, extension_within_bounds_p): New functions. (check_ext_dependent_givs): Use them. 2005-01-06 Roger Sayle * cfgrtl.c (rtl_delete_block): A basic block may be followed by more than one barrier, in which case we should delete them all. 2005-01-06 Tobias Schlueter * gcc.c (process_command): Change year in 'gcc --version' to 2005. 2005-01-05 Daniel Berlin Fix PR middle-end/19286 Fix PR debug/19267 * dwarf2out.c (gen_subprogram_die): If we've already tried to output this subprogram, simply ignore this attempt to do it again. (add_abstract_origin_attribute): Don't abort trying to add the abstract origin attribute if it's not possible. (gen_block_die): Don't ignore subblocks of "unused" blocks. (decls_for_scope): Ditto. * gimple-low.c (mark_blocks_with_used_subblocks): Remove. (mark_used_blocks): Don't call mark_blocks_with_used_subblocks. 2005-01-05 Richard Henderson PR target/11327 * config/i386/i386.c (BUILTIN_DESC_SWAP_OPERANDS): New. (bdesc_2arg): Use it. (ix86_expand_binop_builtin): Force operands into registers when optimizing. (ix86_expand_unop_builtin, ix86_expand_unop1_builtin, ix86_expand_sse_compare, ix86_expand_sse_comi, ix86_expand_builtin): Likewise. 2005-01-05 Richard Henderson * config/ia64/ia64.c (rtx_needs_barrier): Handle CONST_VECTOR and VEC_SELECT. * config/ia64/vect.md (mulv8qi3): Re-implement with mix_[rl]. (mulv4hi3): Set itanium_class mmmul. (fpack_sfxf, fpack_xfsf, fpack_xfxf): Remove. (fpack): Rename from fpack_sfsf. 2005-01-05 Richard Henderson PR rtl-opt/10692 * reload1.c (do_input_reload): Restrict the optimization deleteing a previous output reload to RELOAD_FOR_INPUT. 2005-01-05 Steven Bosscher * combine.c (expand_compound_operation) : Add comment that we fall through after case. (mark_used_regs_combine): Don't expect a SIGN_EXTRACT in a SET_DEST. (distribute_links): Likewise. * cse.c (cse_insn): Likewise. * cselib.c (cselib_invalidate_mem): Likewise. * df.c: Update comments at the top of the file. (read_modify_subreg_p): Update comments here too. (df_def_record_1): Don't expect a SIGN_EXTRACT in a SET_DEST. * flow.c (mark_set_1): Likewise. (mark_used_regs): Likewise. * gcse.c (mems_conflict_for_gcse_p): Likewise. (canon_list_insert): Likewise. (mark_set): Likewise. (try_replace_reg): Likewise. (store_killed_in_insn): Likewise. * loop.c (count_one_set): Likewise. (basic_induction_var): Likewise. * postreload-gcse.c (find_mem_conflicts): Likewise. * postreload.c (reload_combine_note_store): Likewise. (move2add_note_store): Likewise. * reload.c (find_equiv_reg): Likewise. (mark_referenced_resources): Likewise. * rtlanal.c (set_noop_p): Likewise. (note_stores): Likewise. (note_uses): Likewise. * sched-deps.c (sched_analyze_1): Likewise. * sched-rgn.c (check_live_1): Likewise. (update_live_1): Likewise. * config/i860/i860.c: Likewise. * rtl.dec (SIGN_EXTRACT): Document that this cannot appear as an lvalue. (ZERO_EXTRACT): Mention that this one can be an lvalue. * doc/rtl.texi: Update documentation for bit-fields and SET. 2005-01-05 Roger Sayle * ifcvt.c (find_if_case_1): Revert 2005-01-04 change. 2005-01-05 Jan Hubicka Richard Henderson PR target/18910 * config/i386/i386.c (ix86_expand_move): Handle tls symbols with an offset. 2005-01-05 Richard Henderson PR target/12902 * config/i386/i386.md (sse_movhps, sse_movlps): Remove. (sse_shufps): Change operand 3 to const_int_operand. (sse2_storelps): Fix typo in template. (sse_storehps, sse_loadhps, sse_storelps, sse_loadlps): New. * config/i386/i386.c (ix86_expand_vector_move_misalign): Use them. (ix86_expand_builtin): Likewise. 2005-01-05 Julian Brown * config/arm/arm.c (arm_return_in_memory): Treat complex types as aggregates for AAPCS ABIs. 2005-01-05 Stan Shebs * unwind-dw2-fde-darwin.c (examine_objects): Use 64-bit Mach-O getters if ppc64. * config/darwin.c (darwin_asm_output_dwarf_delta): Obey size argument. * config/darwin.h (ASM_PREFERRED_EH_DATA_FORMAT): Use signed four-byte field for global code case. (STARTFILE_SPEC): Avoid crt2.o for 64-bit compilation. 2005-01-05 Roger Sayle PR middle-end/19100 * c-common.c: Include real.h. (c_common_truthvalue_conversion): Avoid destructively modifying expr. Correctly handle TREE_CONSTANT_OVERFLOW for INTEGER_CST. Correctly handle TREE_CONSTANT_OVERFLOW and NaNs for REAL_CST. * Makefile.in (c-common.o): Update dependencies. 2005-01-05 Joseph S. Myers * c-parse.in (asm_string): Add trailing semicolon. 2005-01-05 Joseph S. Myers * c-parse.in (asm_string): New. Don't allow wide strings in 'asm'. (simple_asm_expr, asm_argument, asm_operand, asm_clobbers): Use asm_string instead of STRING. 2005-01-05 Joseph S. Myers * c-typeck.c (constructor_no_implicit): Remove. (set_designator, process_init_element): Don't check constructor_no_implicit. 2005-01-05 J"orn Rennecke Kaz Kojima PR target/16482 * lcm.c (create_pre_exit): New. (optimize_mode_switching): In MODE_ENTRY / MODE_EXIT case, set ENTRY_EXIT_EXTRA to 3. Use create_pre_exit. 2004-01-05 Richard Earnshaw * arm.h (TARGET_OPTIONS): Correctly record -mhard-float and -msoft-float in target_float_switch. * arm.c (arm_override_options): Fix processing of target_float_switch. 2004-01-05 Richard Earnshaw * arm/vfp.md (arm_movsi_vfp): Hide VFP register classes from register preferencing. 2004-01-05 Uros Bizjak * doc/invoke.texi (Intel 386 and AMD x86-64 Options): Replace i387 with 'i386 compiler' in -mfpmath=sse option. 2005-01-04 Roger Sayle * ifcvt.c (find_if_case_1): Avoid creating an empty forwarder block, if deleting the then-block allows the test-block to fallthru to the else-block. 2005-01-04 Andrew Pinski PR c/19152 * c-decl.c (diagnose_mismatched_decls): Accept "extern inline" declared after the full declaration if the are in two different TUs. 2005-01-04 Richard Henderson PR tree-opt/19158 * tree-sra.c (generate_one_element_init): Just call gimplify_and_add. (generate_element_init): Record the new referenced variables and mark them for renaming and split out to ... (generate_element_init_1): This. (scalarize_init): Don't call push_gimplify_context/ pop_gimplify_context. 2005-01-04 Geoffrey Keating * toplev.c (get_src_pwd): Handle failure of getpwd(). 2005-01-04 Roger Sayle * fold-const.c (fold_single_bit_test): Delete unreachable handling of TRUTH_NOT_EXPR. (fold): Don't call fold_single_bit_test with a TRUTH_NOT_EXPR, as all the cases handled by it are inverted by invert_truthvalue. 2005-01-04 Eric Botcazou * config/sparc/sparc.md (save_register_windowdi): Add missing mode. (save_register_windowsi): Likewise. 2005-01-04 Richard Henderson * tree-mudflap.c (mf_varname_tree): Fix thinko setting declname. 2005-01-04 Uros Bizjak PR middle-end/17767 * cse.c (fold_rtx) [RTX_COMPARE, RTX_COMM_COMPARE]: Don't attempt any simplifications of vector mode comparison operators. * simplify-rtx.c (simplify_relational_operation): Fix variable name. 2005-01-04 Paolo Bonzini Devang Patel PR tree-optimization/18308 * tree-if-conv.c (add_to_dst_predicate_list): Gimplify the operands before creating a new expression. * dojump.c (do_jump): Make drop_through_label available for all cases. Add expansion of COND_EXPR. 2005-01-04 Ira Rosen * tree-vectorizer.c (vect_analyze_offset_expr): Test for INTEGER_CST instead of TREE_CONSTANT. (vect_gen_niters_for_prolog_loop): Test for INTEGER_CST instead of TREE_CONSTANT. (vect_analyze_pointer_ref_access): Test for INTEGER_CST instead of TREE_CONSTANT. 2005-01-04 Eric Botcazou * tree-eh.c (replace_goto_queue): Return early if the queue is empty. 2005-01-04 Uros Bizjak PR target/19240 * config/i386/i386.md (*fop_df_1_i387): Disable for TARGET_SSE_MATH. (*fop_df_1_i387): Disable for (TARGET_SSE2 && TARGET_SSE_MATH). 2005-01-03 Richard Henderson * fold-const.c (force_fit_type): Cope with types larger than 2 HWI. (fold_convert_const_int_from_int, fold_convert_const_int_from_real, fold_convert_const_real_from_real): Split out from ... (fold_convert_const): ... here. 2005-01-03 Richard Henderson PR target/19235 * config/i386/i386.md (movdi_2): Separate SSE1 and SSE2 alternatives. (mov_internal): Likewise. (movdf_nointeger): Prefer Y while not preferring, but allowing, x. Add V2SF case; use it for SSE1; don't use TI. (movdf_integer): Likewise. (mov_internal, movti_internal): Force V4SF for SSE1. 2005-01-03 Ira Rosen * tree-vectorizer.c (vect_strip_conversions): New function. (vect_analyze_offset_expr): Call vect_strip_conversions. Add check for binary class. 2005-01-03 Daniel Berlin Fix PR debug/17924 Fix PR debug/19191 * dwarf2out.c (block_ultimate_origin): Follow decl origin if origin is a decl. * gimple-low.c (mark_blocks_with_used_vars): New function. (mark_blocks_with_used_subblocks): Ditto. (mark_used_blocks): Ditto. (pass_mark_used_blocks): New pass. * tree-inline.c: Include debug.h. (expand_call_inline): Call outlining_inline_function here. * tree-optimize.c (init_tree_optimization_passes): Add pass_mark_used_blocks. * tree-pass.h (pass_mark_used_blocks): New. * Makefile.in (tree-inline.o): Add debug.h dependency. 2005-01-03 Geoffrey Keating * config/darwin.c (darwin_handle_weak_import_attribute): Permit VAR_DECLs to have weak_import attribute. * config/rs6000/darwin-fallback.c: Use 'ucontext_t' rather than 'struct ucontext'. 2004-01-03 Steven Bosscher * passes.c (rest_of_compilation): Don't run regmove if only flag_expensive_optimizations, require flag_regmove instead. 2005-01-03 Eric Botcazou * config/sparc/litecoff.h (TARGET_OS_CPP_BUILTINS): Do not register "sparc". * config/sparc/sysv4-only.h (TARGET_OS_CPP_BUILTINS): Likewise. * config/sparc/rtemself.h (TARGET_SUB_OS_CPP_BUILTINS): Likewise. * config/sparc/sol2-64.h (TARGET_SUB_OS_CPP_BUILTINS): Delete. * config/sparc/sp64-elf.h (TARGET_SUB_OS_CPP_BUILTINS): Likewise. 2005-01-03 Richard Henderson * config/ia64/ia64.c (TARGET_VECTOR_MODE_SUPPORTED_P): New. (ia64_const_ok_for_letter_p): New. (ia64_const_double_ok_for_letter_p): New. (ia64_extra_constraint): New. (ia64_expand_vecint_compare): New. (ia64_expand_vcondu_v2si): New. (ia64_expand_vecint_cmov): New. (ia64_expand_vecint_minmax): New. (ia64_print_operand): Add 'v'. (ia64_preferred_reload_class): New. (ia64_vector_mode_supported_p): New. * config/ia64/ia64.h (UNITS_PER_SIMD_WORD): New. (PREFERRED_RELOAD_CLASS): Move to function. (CONST_OK_FOR_LETTER_P): Move to function. (CONST_DOUBLE_OK_FOR_LETTER_P): Move to function. (CONSTRAINT_OK_FOR_Q, CONSTRAINT_OK_FOR_R): Remove. (CONSTRAINT_OK_FOR_S, CONSTRAINT_OK_FOR_T): Remove. (EXTRA_CONSTRAINT): Move to function. * config/ia64/ia64.md: Include vect.md. (itanium_class): Add mmalua. (type): Handle it. * config/ia64/itanium1.md (1_mmalua): New. Add it to bypasses. (1b_mmalua): New. * config/ia64/itanium2.md (2_mmalua, 2b_mmalua): Similarly. * config/ia64/predicates.md (gr_reg_or_0_operand): Accept any CONST0_RTX. (const_int_2bit_operand): New. (fr_reg_or_0_operand): New. * config/ia64/ia64-modes.def: Add vector modes. * config/ia64/ia64-protos.h: Update. * config/ia64/vect.md: New file. 2005-01-03 Richard Henderson * simplify-rtx.c (simplify_binary_operation): Handle VEC_CONCAT. 2005-01-03 Uros Bizjak PR target/19236 * config/i386/i386.c (log1psf2): Change mode of operands[0,1] to SFmode. (log1pdf2): Change mode of operands[0,1] to DFmode. 2005-01-03 Eric Botcazou * config/sparc/sparc.h (SPARC_RELAXED_ORDERING): Define to false. * config/sparc/linux.h (SPARC_RELAXED_ORDERING): Define to true. * config/sparc/linux64.h (SPARC_RELAXED_ORDERING): Likewise. * config/sparc/sparc.c (TARGET_RELAXED_ORDERING): Define to SPARC_RELAXED_ORDERING. 2005-01-03 Richard Henderson Uros Bizjak PR target/14631 * config/i386/i386.c (ix86_expand_builtin): [IX86_BUILTIN_PINSRW, IX86_BUILTIN_PINSRW128]: Fix wrong selector range in error message. * config/i386/i386.md (mmx_pinsrw, sse2_pinsrw): Fix selector handling. (*mmx_pinsrw, *sse2_pinsrw): New patterns. * config/i386/i386/predicates.md (const_pow2_1_to_8_operand, const_pow2_1_to_128_operand): New predicates. 2005-01-02 Greg McGary * tree-mudflap.c (mf_varname_tree): decl_printable_name handles anonymous decls. (mf_xform_derefs_1) [RESULT_DECL, STRING_CST]: Handle as innermost object. [ptr_type]: Remove unused variable. Remember nearest addressable array-element or record-component when checking bitfield components. Tolerate empty BIND_EXPR. 2005-01-01 Richard Henderson * tree-vectorizer.c (vect_analyze_offset_expr): Strip conversions that don't narrow the value. Fail for other conversions. 2005-01-01 Richard Henderson PR c/19031 * c-decl.c (pop_file_scope): Call maybe_apply_pending_pragma_weaks. * c-lang.c (finish_file): Don't do it here. * objc/objc-act.c (objc_finish_file): Likewise. * cgraph.c (decl_assembler_name_equal): New. (cgraph_node_for_asm, cgraph_varpool_node_for_asm): New. (cgraph_varpool_node): Actually link up cgraph_varpool_nodes. * cgraph.h (struct cgraph_varpool_node): Add next. (cgraph_node_for_asm, cgraph_varpool_node_for_asm): Declare. * varasm.c (assemble_alias): Mark the target as needed. 2005-01-01 Andrew Pinski PR middle-end/19221 * function.c (get_arg_pointer_save_area): Use entry_of_function instead of get_insns. 2005-01-01 Roger Sayle Andrew Pinski James E. Wilson PR rtl-optimization/12092 * loop.c (emit_prefetch_instructions): Do nothing if PREFETCH_BLOCK is zero. 2005-01-01 Roger Sayle Olivier Hainque * tree.c (int_fits_type_p): A narrower type always fits in a wider one, except for negative values into unsigned types. 2005-01-01 Roger Sayle * tree.c (int_fits_type_p): Compare the result of force_fit_type with the original constant rather than require TREE_OVERFLOW. 2005-01-01 Steven Bosscher PR middle-end/17544 * c-decl.c (finish_function): If compiling C99, annotate the compiler generated return with the current file name and line 0. * tree-cfg.c (remove_useless_stmts_warn_notreached): Only warn if the source line is greater than 0. (remove_bb): Likewise. See ChangeLog.12 for earlier changes.