OSDN Git Service

* config/i386/i386.md (*float<SSEMODEI24:mode><X87MODEF:mode>2_1):
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
index abed43e..984ff05 100644 (file)
@@ -1,3 +1,349 @@
+2008-04-02  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/i386/i386.md (*float<SSEMODEI24:mode><X87MODEF:mode>2_1):
+       Emit gen_floatdi<X87MODEF:mode>2_i387_with_xmm for DImode values
+       in 32bit mode when XMM registers are available to avoid store
+       forwarding stalls.
+       (floatdi<X87MODEF:mode>2_i387_with_xmm): New insn pattern and
+       corresponding post-reload splitters.
+
+2008-04-02  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * config/i386/i386.c (bdesc_sse_3arg): Add __builtin_ia32_shufps
+       and __builtin_ia32_shufpd.  Provide __builtin_ia32_roundsd and
+       __builtin_ia32_roundss.
+       (ix86_init_mmx_sse_builtins): Remove __builtin_ia32_shufps,
+       __builtin_ia32_shufpd, __builtin_ia32_roundsd and
+       __builtin_ia32_roundss.
+       (ix86_expand_builtin): Don't handle IX86_BUILTIN_SHUFPS and
+       IX86_BUILTIN_SHUFPD here.
+
+2008-04-02  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * config/i386/i386.md (plogic): New.
+       (plogicprefix): Likewise.
+
+       * config/i386/mmx.md (mmx_<code><mode>3): New.
+       (mmx_and<mode>3): Removed.
+       (mmx_ior<mode>3): Likewise.
+       (mmx_xor<mode>3): Likewise.
+
+       * config/i386/sse.md (<code><mode>3): New.
+       (*<code><mode>3): Likewise.
+       (*<code><mode>3): Likewise.
+       (<code><mode>3): Likewise.
+       (*sse_<code><mode>3): Likewise.
+       (*sse2_<code><mode>3): Likewise.
+       (<code>tf3): Likewise.
+       (*<code>tf3): Likewise.
+       (and<mode>3): Likewise.
+       (*and<mode>3): Likewise.
+       (ior<mode>3): Removed.
+       (*ior<mode>3): Likewise.
+       (xor<mode>3): Likewise.
+       (*xor<mode>3): Likewise.
+       (*and<mode>3): Likewise.
+       (*ior<mode>3): Likewise.
+       (*xor<mode>3): Likewise.
+       (and<mode>3): Likewise.
+       (*sse_and<mode>3): Likewise.
+       (*sse2_and<mode>3): Likewise.
+       (andtf3): Likewise.
+       (*andtf3): Likewise.
+       (ior<mode>3): Likewise.
+       (*sse_ior<mode>3): Likewise.
+       (*sse2_ior<mode>3): Likewise.
+       (iortf3): Likewise.
+       (*iortf3): Likewise.
+       (xor<mode>3): Likewise.
+       (*sse_xor<mode>3): Likewise.
+       (*sse2_xor<mode>3): Likewise.
+       (xortf3): Likewise.
+       (*xortf3): Likewise.
+
+2008-04-02  Richard Guenther  <rguenther@suse.de>
+
+       PR tree-optimization/14495
+       PR tree-optimization/34793
+       * tree-vrp.c (struct switch_update): New structure.
+       (to_remove_edges, to_update_switch_stmts): New VECs.
+       (simplify_switch_using_ranges): New function.  Remove not taken
+       case labels and edges.
+       (simplify_stmt_using_ranges): Call it.
+       (identify_jump_threads): Mark edges we have queued for removal
+       so we don't thread them.
+       (execute_vrp): Remove edges queued for removal, update SWITCH_STMT
+       case label vector.
+       * tree-cfg.c (group_case_labels): Deal with missing default label.
+       (tree_verify_flow_info): Allow missing default label.
+       * stmt.c (emit_case_bit_tests): Deal with NULL default_label.
+       (emit_case_nodes): Likewise.
+       (expand_case): Do not rely on the default label to be present.
+       * expr.c (try_casesi): Deal with NULL default_label.
+       (do_tablejump): Likewise.
+
+2008-04-02  Richard Guenther  <rguenther@suse.de>
+
+       PR tree-optimization/14495
+       * tree-vrp.c (vrp_visit_cond_stmt): Do not handle
+       SWITCH_EXPR here ...
+       (vrp_visit_switch_stmt): ... but here (new function).
+       (find_case_label_index): New helper function.
+       (vrp_visit_stmt): Dispatch to vrp_visit_switch_stmt.
+
+2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
+
+       * fwprop.c: Fix ISO-C99ism.
+
+2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
+
+       PR bootstrap/35752
+       * Makefile.in (objdir): Set it here.
+       * configure.ac: Not here.  Find dynamic linker characteristics.
+       * exec-tool.in: Use them.
+       * aclocal.m4: Regenerate.
+       * configure: Regenerate.
+
+2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
+
+       * expr.c (expand_var): Delete it.
+       * expr.h (expand_var): Delete prototype.
+       * function.c (expand_function_start): Use expand_decl instead.
+       * cfgexpand.c (expand_one_static_var, expand_one_var): Don't call
+       langhook.
+
+2008-04-02  Andy Hutchinson <hutchinsonamdy@aim.com>
+
+       PR rtl-optimization/35542
+       * fwprop.c (forward_propagate_and_simplify): Replace
+       loc_reg_mentioned_in_p with reg_mentioned_p.
+
+2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
+
+       PR rtl-optimization/35281
+       * fwprop.c (PR_CAN_APPEAR, PR_HANDLE_MEM): New.
+       (propagate_rtx_1): Handle PR_HANDLE_MEM.
+       (propagate_rtx): Pass PR_HANDLE_MEM if appropriate.
+       (varying_mem_p): Move above propagate_rtx.
+       (all_uses_available_at): Do not check MEMs.
+
+2008-04-02  Rafael Espindola  <espindola@google.com>
+
+       * tree-vrp.c (extract_code_and_val_from_cond): Remove.
+       (register_edge_assert_for_2): Split the cond argument.
+       (register_edge_assert_for_1): Adjust for the change in
+       register_edge_assert_for_2.
+       (register_edge_assert_for): Split the cond argument.
+       (find_switch_asserts): Adjust for the change in
+       register_edge_assert_for.
+
+2008-04-02  Kai Tietz  <kai.tietz@onevision.com>
+
+       * config.gcc: Add for x86_64-*-mingw* the t-crtfm to tbuild.
+       * gcc/config/i386/cygming.h (ASM_OUTPUT_DWARF_OFFSET): Add 8 byte
+       offsets for 64-bit mingw.
+       * gcc/config/i386/i386.c (ix86_pass_by_reference): Correct calling
+       abi for x86_64-pc-mingw.
+
+2008-04-02  Richard Guenther  <rguenther@suse.de>
+
+       * tree-vrp.c (extract_range_from_assert): Make sure to not
+       produce range min/max with TREE_OVERFOW set.
+       If merging a anti-range and a range keep the anti-range if
+       the range covers all values of the type.
+       (register_edge_assert_for_2): Only allow sign-changing
+       conversions in detecting canonical range checks.  Also
+       register an assert for the unsigned name if useful.
+
+       PR tree-optimization/35787
+       * tree-vrp.c (vrp_val_max): New function.
+       (vrp_val_min): Likewise.
+       (vrp_val_is_max): Move earlier, use vrp_val_{min,max}.
+       (vrp_val_is_min): Likewise.
+       (supports_overflow_infinity): Use vrp_val_{min,max}.
+       (negative_overflow_infinity): Likewise.
+       (positive_overflow_infinity): Likewise.
+       (is_negative_overflow_infinity): Use vrp_val_is_{min,max}.
+       (is_positive_overflow_infinity): Likewise.
+       (is_overflow_infinity): Likewise.
+       (avoid_overflow_infinity): Use vrp_val_{min,max} and
+       vrp_val_is_{min,max}.
+       (set_and_canonicalize_value_range): Canonicalize anti-ranges
+       to ranges if possible.  Avoid empty ranges.
+
+2008-04-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
+
+       PR middle-end/35705
+       * fold-const.c (get_pointer_modulus_and_residue): Return modulus 1 if
+       the expression is a function address.
+
+2008-04-01  George Helffrich  <george@gcc.gnu.org>
+
+       PR fortran/PR35154, fortran/PR23057
+       * fortran/trans-common.c (create_common):  Add decl to function
+       chain to preserve identifier scope in debug output.
+
+       * dbxout.c: Emit .stabs debug info for Fortran COMMON block
+       variables as base symbol name + offset using N_BCOMM/N_ECOMM.
+       (is_fortran, dbxout_common_name, dbxout_common_check): New functions.
+       (dbxout_symbol_location): Transform N_LCSYM to N_GSYM for storage
+       in common.
+       (dbxout_syms): Check for COMMON-based symbol and wrap in
+       N_BCOMM/N_ECOMM stab bracket, including as many symbols as possible
+       in bracket for efficiency.
+
+       * dwarf2out.c: Emit DWARF debug info for Fortran COMMON block
+       using DW_TAG_common_block + member offset.
+       (add_pubname_string): New function.
+       (dw_expand_expr): New function to find block name and offset for
+       COMMON var.
+       (common_check): New function to check whether symbol in Fortran COMMON.
+       (gen_variable_die): If COMMON, use DW_TAG_common_block.
+
+       * testsuite/gcc.dg/debug/pr35154.c:  New test to check that non-Fortran
+       use of common is unchanged.
+
+       * testsuite/lib/gfortran-dg.exp:  New harness to compile Fortran progs
+       with all combinations of debug options available on target.
+       * testsuite/gfortran.dg/debug/debug.exp:  Ditto.
+       * testsuite/gfortran.dg/debug/trivial.f:  Ditto.
+       * testsuite/gfortran.dg/debug/pr35154-stabs.f:  New test case for
+       .stabs functionality.
+       * testsuite/gfortran.dg/debug/pr35154-dwarf2.f:  New test case for
+       DWARF functionality.
+
+2008-04-01  Volker Reichelt  <v.reichelt@netcologne.de>
+
+       PR c/35436
+       * c-format.c (init_dynamic_gfc_info): Ignore invalid locus type.
+
+2008-04-02  Ben Elliston  <bje@au.ibm.com>
+
+       * config/v850/v850.md (casesi): Remove if (0) code.
+       * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
+       * config/alpha/alpha.c (alpha_initialize_trampoline): Likewise.
+
+2008-04-01  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/i386/i386.md (rex64suffix): New mode attribute.
+       (floathi<mode>2): Disable expander for SSE math.
+       (*floathi<mode>2_1): New insn insn_and_split pattern.
+       (*floathi<mode>2_i387_with_temp): New macroized instruction pattern and
+       corresponding post-reload splitters.
+       (*floathi<mode>2_i387): New macroized insn pattern.
+       (float<SSEMODEI24:mode><X87MODEF:mode>2): New macroized expander.
+       (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): New macroized
+       insn_and_split pattern.
+       (*floatsi<mode>2_vector_mixed_with_temp, *floatsi<mode>2_vector_mixed):
+       New macroized instruction patterns and corresponding post-reload
+       splitters.
+       (*floatsi<mode>2_mixed_with_temp): New macroized instruction pattern
+       and corresponding post-reload splitters.
+       (*floatsi<mode>2_mixed_interunit, *floatsi<mode>2_mixed_nointerunit):
+       New macroized instruction patterns.
+       (*floatsi<mode>2_vector_sse_with_temp, *floatsi<mode>2_vector_sse): New
+       macroized instruction patterns and corresponding post-reload splitters.
+       (*floatsi<mode>2_sse_with_temp): New macroized instruction pattern and
+       corresponding post-reload splitters.
+       (*floatsi<mode>2_sse_interunit, *floatsi<mode>2_mixed_nointerunit):
+       New macroized instruction patterns.
+       (*floatsi<mode>2_i387_with_temp): New macroized instruction pattern and
+       corresponding post-reload splitters.
+       (*floatsi<mode>2_i387): New macroized instruction patterns.
+
+2008-04-01  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * config/i386/i386.md (smaxmin): New.
+       (umaxmin): Likewise.
+       (maxminiprefix): Likewise.
+       (maxminfprefix): Likewise.
+       (<code><mode>3): Likewise.
+       (smin<mode>3): Removed.
+       (smax<mode>3): Likewise.
+
+       * config/i386/mmx.md (mmx_<code>v2sf3): New.
+       (mmx_<code>v4hi3): Likewise.
+       (mmx_<code>v8qi3): Likewise.
+       (mmx_smaxv2sf3): Removed.
+       (mmx_sminv2sf3): Likewise.
+       (mmx_umaxv8qi3): Likewise.
+       (mmx_smaxv4hi3): Likewise.
+       (mmx_uminv8qi3): Likewise.
+       (mmx_sminv4hi3): Likewise.
+
+       * config/i386/sse.md (<addsub><mode>3): New.
+       (*<addsub><mode>3): Likewise.
+       (<sse>_vm<addsub><mode>3): Likewise.
+       (<maxmin><mode>3): Likewise.
+       (*<maxmin><mode>3_finite): Likewise.
+       (*<maxmin><mode>3): Likewise.
+       (<sse>_vm<maxmin><mode>3): Likewise.
+       (sse3_h<addsub>v4sf3): Likewise.
+       (sse3_h<addsub>v2df3): Likewise.
+       (<maxmin>v16qi3): Likewise.
+       (*<maxmin>v16qi3): Likewise.
+       (<maxmin>v8hi3): Likewise.
+       (*<maxmin>v8hi3): Likewise.
+       (*sse4_1_<maxmin><mode>3): Likewise.
+       (*sse4_1_<maxmin><mode>3): Likewise.
+       (add<mode>3): Removed.
+       (*add<mode>3): Likewise.
+       (<sse>_vmadd<mode>3): Likewise.
+       (sub<mode>3): Likewise.
+       (*sub<mode>3): Likewise.
+       (<sse>_vmsub<mode>3): Likewise.
+       (smin<mode>3): Likewise.
+       (*smin<mode>3_finite): Likewise.
+       (*smin<mode>3): Likewise.
+       (<sse>_vmsmin<mode>3): Likewise.
+       (smax<mode>3): Likewise.
+       (*smax<mode>3_finite): Likewise.
+       (*smax<mode>3): Likewise.
+       (<sse>_vmsmax<mode>3): Likewise.
+       (sse3_haddv4sf3): Likewise.
+       (sse3_haddv2df3): Likewise.
+       (sse3_hsubv4sf3): Likewise.
+       (sse3_hsubv2df3): Likewise.
+       (umaxv16qi3): Likewise.
+       (*umaxv16qi3): Likewise.
+       (smaxv8hi3): Likewise.
+       (*smaxv8hi3): Likewise.
+       (*sse4_1_smax<mode>3): Likewise.
+       (*sse4_1_umax<mode>3): Likewise.
+       (uminv16qi3): Likewise.
+       (*uminv16qi3): Likewise.
+       (sminv8hi3): Likewise.
+       (*sminv8hi3): Likewise.
+       (*sse4_1_smin<mode>3): Likewise.
+       (*sse4_1_umin<mode>3): Likewise.
+
+2008-04-01  Rafael Espindola  <espindola@google.com>
+
+       * tree-cfg.c (verify_expr): remove in_phi.
+       (verify_stmt): Don't call walk_tree with verify_expr. Use
+       is_gimple_min_invariant instead of is_gimple_val.
+
+2008-04-01  Joseph Myers  <joseph@codesourcery.com>
+
+       * doc/include/gpl_v3.texi: Update for manpage generation.
+       * doc/gcc.texi, doc/gccint.texi: Include gpl_v3.texi instead of
+       gpl.texi.
+       * doc/sourcebuild.texi: Document gpl_v3.texi as well as gpl.texi.
+       * Makefile.in (TEXI_GCC_FILES, TEXI_GCCINT_FILES): Include
+       gpl_v3.texi instead of gpl.texi.
+       (gpl.pod): New.
+
+2008-04-01  Jakub Jelinek  <jakub@redhat.com>
+
+       PR pch/13675
+       * c-pch.c (c_common_read_pch): On error close (fd) resp. fclose (f).
+
+2008-04-01  Rafael Espindola  <espindola@google.com>
+
+       * tree-vrp.c (extract_code_and_val_from_cond_with_ops): New.
+       (extract_code_and_val_from_cond): Use
+       extract_code_and_val_from_cond_with_ops.
+
 2008-04-01  Jan Hubicka  <jh@suse.cz>
 
        * function.c (free_after_compilation): Free epilogue_delay_list.
        * common.opt (fprofile-dir=, fprofile-use=, fprofile-generate=):
        New options
        (fprofile-use): Add var flag_profile_use
-       * coverage.c (coverage_begin_output): Do not open a gcno file for output
-       only if -ftest-coverage is set.
+       * coverage.c (coverage_begin_output): Do not open a gcno file for
+       output only if -ftest-coverage is set.
        Do not add getpwd() to gcda file path.
-       (build_gcov_info): Check the new flag 
+       (build_gcov_info): Check the new flag
        flag_profile_datafile_relative_path.
        (coverage_init): Use profile_data_prefix.
        Read profile counter only if flag_profile_use is set.
 
 2008-03-31  James E. Wilson  <wilson@tuliptree.org>
 
-       * varasm.c (output_constant_pool_1): In LABEL_REF check, use tmp
-       consistently.
+       * varasm.c (output_constant_pool_1): In LABEL_REF check,
+       use tmp consistently.
 
        PR target/35695
        * config/ia64/div.md (recip_approx_rf): Use UNSPEC not DIV.
 
 2008-03-31  Ian Lance Taylor  <iant@google.com>
 
-       * tlink.c (scan_linker_output): Look for symbol name in single
-       quotes.
+       * tlink.c (scan_linker_output): Look for symbol name in single quotes.
 
 2008-03-31  Jan Hubicka  <jh@suse.cz>
 
        (regno_reg_rtx): ... new global array.
        (reg_rtx_no, seq_stack, REGNO_POINTER_ALIGN): Update accestors.
        (pending_stack_adjust, inhibit_defer_pop, saveregs_value,
-       apply_args_value, forced_labels, stack_pointer_delta): Update accestors.
+       apply_args_value, forced_labels, stack_pointer_delta):
+       Update accestors.
        (struct varasm_status): Move here from varasm.c
        (struct rtl_data): New. Move here some fields from struct function.
        (return_label, naked_return_label, stack_slot_list, parm_birth_insn,
        (get_arg_pointer_save_area): Update prototype.
        * emit-rtl.c (rtl): Declare.
        (regno_reg_rtx): Declare.
-       (first_insn, last_insn, cur_insn_uid, last_location, first_label_num): Update.
+       (first_insn, last_insn, cur_insn_uid, last_location, first_label_num):
+       Update.
        (gen_reg_rtx): Update.
        (init_virtual_regs): Do not tate emit_status argument.
        (init_emit): Do not allocate emit.