OSDN Git Service

PR rtl-optimization/31391
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
index 5baf6af..2e2f90c 100644 (file)
@@ -1,3 +1,355 @@
+2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
+
+       PR rtl-optimization/31391
+       * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
+       into a DELETED_LABEL note, and the label is in an empty basic
+       block, update BB_END as well as BB_HEAD.
+
+2007-04-01  Richard Henderson  <rth@redhat.com>
+
+       PR tree-optimization/31169
+       * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
+       to varying if the range is outside [0,  prec-1].
+
+2007-04-01  Richard Sandiford  <richard@codesourcery.com>
+
+       PR target/31388
+       * config/mips/mips.md (load_const_gp): New insn.
+       * config/mips/mips.c (mips_split_symbol): Avoid using or creating
+       the MIPS16 GP pseudo register if no_new_pseudos.
+       (mips16_gp_pseudo_reg): Use gen_load_const_gp.
+
+2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
+
+       PR target/31364
+       * config/rs6000/rs6000.md (call): Convert to LR hard reg for
+       secureplt.
+       (call_value): Likewise.
+
+2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
+            Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
+
+       PR 14737
+       * doc/invoke.texi: (optimization options): Reword description
+       of -ffast-math. Document its primary purpose.
+       
+2007-03-31  Richard Guenther  <rguenther@suse.de>
+
+       * omp-low.c (splay-tree.h): Include.
+       (lookup_decl): Replace splay-tree usage by pointer-map.
+       (maybe_lookup_decl): Likewise.
+       (new_omp_context): Likewise.
+       (delete_omp_context): Likewise.
+       * gimplify.c (splay-tree.h): Include.
+       * tree-inline.c (insert_decl_map): Replace splay-tree usage by
+       pointer-map.
+       (remap_ssa_name): Likewise.
+       (remap_decl): Likewise.
+       (remap_type_1): Likewise.
+       (remap_type): Likewise.
+       (copy_body_r): Likewise.
+       (expand_call_inline): Likewise.
+       (clone_body): Likewise.
+       (copy_tree_r): Likewise.
+       (remap_save_expr): Likewise.
+       (unsave_r): Likewise.
+       (unsave_expr_now): Likewise.
+       (tree_function_versioning): Likewise.
+       (build_duplicate_type): Likewise.
+       * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
+       (struct copy_body_data): Replace splay-tree by pointer-map.
+       * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
+       not $(SPLAY_TREE_H).
+       (gimplify.o): Depend on $(SPLAY_TREE_H).
+       (omp-low.p): Likewise.
+
+2007-03-31  Anatoly Sokolov <aesok@post.ru>
+
+       * config/avr/predicates.md (even_register_operand, 
+       odd_register_operand): New predicates.
+       * config/avr/avr.md (movw peephole2): New.
+       (movw_r peephole2): New.
+
+2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
+
+       * tree.h (get_signed_or_unsigned_type): New.
+       * fold-const.c (operand_equal_for_comparison_p): Use
+       get_signed_or_unsigned_type instead of
+       lang_hooks.types.signed_or_unsigned_type.
+       * expr.c (store_expr): Ditto.
+       * langhooks.c (get_signed_or_unsigned_type): New.
+       (lhd_signed_or_unsigned_type): New.
+       * langhooks.h (lhd_signed_or_unsigned_type): New.
+       * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
+
+2007-03-30  Richard Henderson  <rth@redhat.com>
+
+       * tree-ssa-loop-ivopts.c: Include target.h.
+       (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
+       (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
+       (force_expr_to_var_cost): Use produce_memory_decl_rtl.
+       * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
+
+2007-03-30  Richard Henderson  <rth@redhat.com>
+           Kai Tietz  <kai.tietz@onevision.com>
+
+       * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
+       default for 64-bit.
+       (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
+       (TARGET_64BIT_MS_ABI): New.
+       (DBX_REGISTER_NUMBER): Handle 64-bit.
+       (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
+       (LONG_TYPE_SIZE): Force to 32.
+       (REG_PARM_STACK_SPACE): New.
+       (OUTGOING_REG_PARM_STACK_SPACE): New.
+       (REGPARM_MAX, SSE_REGPARM_MAX): New.
+       (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
+       (STACK_BOUNDARY): Use 128 for 64-bit.
+       * config/i386/cygwin.asm: Use push/ret to preserve call stack.
+       Add 64-bit implementation.
+       * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
+       argument unused.
+       * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
+       (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
+       Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
+       for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
+       (ix86_handle_cconv_attribute): Don't warn when ignoring if
+       TARGET_64BIT_MS_ABI.
+       (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
+       (ix86_pass_by_reference): Likewise.
+       (ix86_function_value_regno_p): Likewise.
+       (ix86_build_builtin_va_list): Likewise.
+       (ix86_va_start, ix86_gimplify_va_arg): Likewise.
+       (function_arg_advance_ms_64): New.
+       (function_arg_advance): Call it.
+       (function_arg_ms_64): New.
+       (function_arg): Call it.
+       (function_value_ms_64): New.
+       (ix86_function_value_1): Call it.
+       (return_in_memory_ms_64): New.
+       (ix86_return_in_memory): Call it.
+       (setup_incoming_varargs_ms_64): New.
+       (ix86_setup_incoming_varargs): Call it.
+       (ix86_expand_prologue): Handle 64-bit stack probing.
+       (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
+       (output_pic_addr_const): Likewise.
+       (x86_this_parameter): Likewise.
+       (x86_output_mi_thunk): Likewise.
+       (x86_function_profiler): Likewise.
+       (TARGET_STRICT_ARGUMENT_NAMING): New.
+       * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
+       (TARGET_64BIT_MS_ABI): New.
+       (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
+       * config/i386/i386.md (allocate_stack_worker): Remove.
+       (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
+       describe the clobber of eax without a match_scratch.
+       (allocate_stack_worker_postreload): Remove.
+       (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
+       describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
+       (allocate_stack_worker_rex64_postreload): Remove.
+       (allocate_stack): Handle 64-bit.
+       * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
+       * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
+       (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
+       (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
+       (STANDARD_STARTFILE_PREFIX_1): Likewise.
+       * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
+       * config.build (x86_64-*-mingw*): New host.
+       * config.host (x86_64-*-mingw*): New host.
+       * config.gcc (x86_64-*-mingw*): New target.
+       * gthr-win32.h (__gthread_key_create): Mark dtor unused.
+
+2007-03-30  Richard Henderson  <rth@redhat.com>
+           Kai Tietz  <kai.tietz@onevision.com>
+
+       * c-pragma.c (struct def_pragma_macro_value): New.
+       (struct def_pragma_macro): New.
+       (pushed_macro_table): New.
+       (dpm_hash, dpm_eq): New.
+       (handle_pragma_push_macro, handle_pragma_pop_macro): New.
+       (init_pragma): Install them.
+       * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
+
+2007-03-30  Anatoly Sokolov <aesok@post.ru>
+
+       * config/avr/avr.c (avr_override_options): Clear 
+       'flag_delete_null_pointer_checks'.
+
+2007-03-30  Paolo Carlini  <pcarlini@suse.de>
+
+       PR c++/26099
+       * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
+       RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
+       RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
+       RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
+       RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
+       RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
+       RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
+       C++ extensions.
+       * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
+
+2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
+
+       * regmove.c: Move all of pass_stack_adjustments from here...
+       * combine-stack-adj.c: ...to this new file.
+       * Makefile.in: Add rules for combine-stack-adj.o.
+
+2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
+
+       PR tree-optimization/31383
+       * tree-data-ref.c (affine_function_equal_p): Do not require the vectors
+       to have the same length.
+
+2007-03-30  Jan Hubicka  <jh@suse.cz>
+
+       PR middle-end/PR30700
+       * dwarf2out.c (reference_to_unused): Ask cgraph for functions 
+       availablility; add more sanity checking; ask varpool only about
+       VAR_DECL.
+
+2007-03-29  Richard Henderson  <rth@redhat.com>
+
+       * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
+       to decide, but __SIZEOF_LONG_LONG__.
+
+2007-03-29  Richard Henderson  <rth@redhat.com>
+
+       * emutls.c (struct __emutls_array): New.
+       (emutls_destroy): Use it instead of casting element 0 from void*.
+       (__emutls_get_address): Likewise.
+
+2007-03-29  Richard Henderson  <rth@redhat.com>
+
+       * varasm.c (initializer_constant_valid_p): Don't deny
+       DECL_DLLIMPORT_P on functions.
+
+       * config/i386/cygming.h: Remove function declarations.
+       (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
+       (ASM_OUTPUT_LABELREF): Remove.
+       (COMMON_ASM_OP): Remove.
+       (ASM_OUTPUT_COMMON): Remove.
+       (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
+       (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
+       (ASM_DECLARE_FUNCTION_NAME): Likewise.
+       * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
+       Rename from TARGET_ENCODE_SECTION_INFO.
+       * config/i386/netware.h: Likewise.
+       * config/i386/i386-protos.h: Update.
+       * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
+       of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
+       (legitimate_constant_p): Reject dllimports.
+       (dllimport_map, get_dllimport_decl): New.
+       (legitimize_dllimport_symbol): New.
+       (legitimize_address, ix86_expand_move): Use it.
+       (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
+       * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
+       (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
+       (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
+       * config/i386/predicates.md (constant_call_address_operand): Only
+       accept symbols; reject dllimport_p symbols.
+       * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
+       i386_pe_maybe_record_exported_symbol.
+       * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
+       (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
+       (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
+       trust the setting of DECL_DLLIMPORT_P.
+       (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
+       (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
+       (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
+       tidy the argument scanning loop.
+       (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
+       SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
+       (i386_pe_strip_name_encoding): Remove.
+       (i386_pe_binds_local_p): New.
+       (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
+       (i386_pe_output_labelref): Remove.
+       (i386_pe_asm_output_aligned_decl_common): New.
+       (i386_pe_maybe_record_exported_symbol): Rename from
+       i386_pe_record_exported_symbol; check for dllexported symbols.
+
+2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
+
+       * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
+       add comment explaining why vsnprintf cannot be used.
+
+2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
+
+       PR tree-optimization/30666
+       * tree.c (build_complex_type): When creating type names for DWARF2
+       debug info, create TYPE_DECLs for TYPE_NAME instead of
+       IDENTIFIER_NODEs.
+       (build_common_tree_nodes_2): Use build_complex_type when building
+       predefined complex types, to preserve canonical types.
+
+2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
+
+       * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
+       (noce_get_alt_condition): Look at it to determine whether to
+       reverse the condition or not.
+       (noce_get_condition): Substitute the truth for lies.
+       (noce_find_if_block): Set the then_else_reversed field.
+
+2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
+
+       * config/fr30/fr30.md (movdi): Do not accept immediates as the
+       destination of this insn.
+       * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
+       than calling gen_rtx_SET directly.  Use r0 to hold the value of
+       'address + 4' rather than a stack based temporary which can be
+       mis-optimized away.
+       
+2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
+
+       * config/s390/s390.c (s390_secondary_input_reload_class,
+       s390_secondary_output_reload_class): Functions removed.
+       (s390_secondary_reload): New function.
+       (TARGET_SECONDARY_RELOAD): Target macro defined.
+       * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
+       SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
+       * config/s390/s390.md ("reload_outti", "reload_outdi",
+       "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
+       "reload_out<mode>"): Expanders removed.
+       ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
+       "reload<mode>_nonoffmem_out"): Expanders added.
+
+2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
+
+       * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair action if
+       SRC->DEST replacement failed anyway.
+
+2007-03-28  Mike Stump  <mrs@apple.com>
+
+       * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
+       * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
+       * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
+
+2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
+
+       * config.gcc: Accept barcelona as a variant of amdfam10.
+       * config/i386/i386.c (override_options): Likewise.
+       * doc/invoke.texi: Likewise.
+       
+2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
+       offsets for BIT_FIELD_REF and COMPONENT_REF.
+
+2007-03-28  Richard Guenther  <rguenther@suse.de>
+
+       * tree.c (is_global_var): Move ...
+       * tree-flow-inline.h (is_global_var): ... here.
+       * tree.h (is_global_var): Remove declaration.
+
+2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
+       option.
+       (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
+       * config/i386/i386.c (ix86_tune_features): Initialize new
+       tuning option.
+       * config/i386/predicates.md (promotable_binary_operator): Use
+       TARGET_TUNE_PROMOTE_HIMODE_IMUL.
+
 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
 
        PR target/31380
 
 2007-03-26  Richard Henderson  <rth@redhat.com>
 
-        PR target/31361
-        * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
-        IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
-        IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
-        IX86_BUILTIN_PSRLQ128): New.
-        (ix86_init_mmx_sse_builtins): Add them.
-        (ix86_expand_builtin): Expand them.
-        * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
-        operand 2 be TImode.
-        * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
-        _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
-        _mm_srli_epi64): Mark __B const.
-        (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
-        (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
-        _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use 
-        new two-vector shift builtins.
+       PR target/31361
+       * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
+       IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
+       IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
+       IX86_BUILTIN_PSRLQ128): New.
+       (ix86_init_mmx_sse_builtins): Add them.
+       (ix86_expand_builtin): Expand them.
+       * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
+       operand 2 be TImode.
+       * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
+       _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
+       _mm_srli_epi64): Mark __B const.
+       (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
+       (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
+       _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use 
+       new two-vector shift builtins.
 
 2007-03-26  Ian Lance Taylor  <iant@google.com>
 
        IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
        IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
        (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
-       v4si_ftype_v4si_v2di.   Remove __builtin_ia32_psllw128,
+       v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
        __builtin_ia32_pslld128, __builtin_ia32_psllq128,
        __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
        __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and