OSDN Git Service

* tree.c (type_hash_add): Fix whitespace.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
index 3cf9ec7..dc72887 100644 (file)
@@ -1,3 +1,336 @@
+2007-12-15  Alexandre Oliva  <aoliva@redhat.com>
+
+       * tree.c (type_hash_add): Fix whitespace.
+
+2007-12-15  Hans-Peter Nilsson  <hp@axis.com>
+
+       Add CRIS v32 support.  Fix -mcc-init.
+       * config.gcc: Make crisv32-* have cpu_type cris.  Handle
+       crisv32-*-elf and crisv32-*-none like cris-*-elf and cris-*-none
+       but without multilibs and with target_cpu_default=32.
+       (crisv32-*-linux*): Handle as cris-*-linux*.  Set
+       target_cpu_default to 32 and 10 accordingly.
+       * config/cris/cris.c (ASSERT_PLT_UNSPEC): Remove unused macro.
+       (cris_movem_load_rest_p, cris_store_multiple_op_p): Remove FIXME.
+       Change regno_dir and regno only if !TARGET_V32.
+       (cris_conditional_register_usage): If TARGET_V32, set
+       reg_alloc_order as per REG_ALLOC_ORDER_V32 and make
+       CRIS_ACR_REGNUM non-fixed.
+       (cris_print_base): Add gcc_assert for post_inc on CRIS_ACR_REGNUM.
+       (cris_print_operand) <case 'Z', case 'u'>: New cases.
+       <case REG of case 'H'>: Allow for CRIS_SRP_REGNUM.
+       (cris_reload_address_legitimized): Always return false for
+       TARGET_V32.
+       (cris_register_move_cost): New function, guts from
+       REGISTER_MOVE_COST adjusted for CRIS v32.
+       (cris_normal_notice_update_cc): New function split out from...
+       (cris_notice_update_cc): Set cc_status.flags CC_REVERSED for
+       TARGET_CCINIT.  Call cris_normal_notice_update_cc for CC_REV,
+       CC_NOOV32 and CC_NORMAL, but set cc_status.flags CC_NO_OVERFLOW
+       for CC_NOOV32 and TARGET_V32.
+       (cris_simple_epilogue): Always return false for TARGET_V32 if
+       cris_return_address_on_stack yields true.
+       (cris_cc0_user_requires_cmp): New function.
+       (cris_valid_pic_const): Add argument ANY_OPERAND.  All callers
+       changed.  Handle CRIS_UNSPEC_PLT_PCREL and CRIS_UNSPEC_PCREL.
+       (cris_asm_output_case_end): New function, guts from
+       ASM_OUTPUT_CASE_END adjusted for CRIS v32.
+       (cris_override_options): Adjust for CRIS v32.  Mask out
+       TARGET_SIDE_EFFECT_PREFIXES and TARGET_MUL_BUG if v32.
+       (cris_asm_output_mi_thunk, cris_expand_epilogue)
+       (cris_gen_movem_load, cris_emit_movem_store)
+       (cris_expand_pic_call_address, cris_asm_output_symbol_ref)
+       (cris_asm_output_label_ref, cris_output_addr_const_extra): Adjust
+       for CRIS v32.
+       (cris_split_movdx): Copy re-used MEM.
+       * config/cris/t-elfmulti: Add multilib v32 for -march=v32.
+       * config/cris/predicates.md
+       ("cris_general_operand_or_pic_source"): New predicate.
+       ("cris_general_operand_or_plt_symbol"): Replace by...
+       ("cris_nonmemory_operand_or_callable_symbol"): New predicate.
+       * config/cris/linux.h: Sanity-check TARGET_CPU_DEFAULT for
+       presence and contents.
+       (CRIS_SUBTARGET_DEFAULT_ARCH): New macro, MASK_AVOID_GOTPLT for
+       v32, 0 otherwise.
+       (CRIS_CPP_SUBTARGET_SPEC, CRIS_CC1_SUBTARGET_SPEC,
+       CRIS_ASM_SUBTARGET_SPEC): Adjust for different
+       TARGET_CPU_DEFAULT.
+       (CRIS_SUBTARGET_DEFAULT): Add CRIS_SUBTARGET_DEFAULT_ARCH.
+       * config/cris/cris.h: Sanity-check TARGET_CPU_DEFAULT for contents.
+       (CRIS_DEFAULT_TUNE, CRIS_ARCH_CPP_DEFAULT)
+       (CRIS_DEFAULT_ASM_ARCH_OPTION): New macros.
+       (CRIS_CC1_SUBTARGET_SPEC): Change default tuning to use
+       CRIS_DEFAULT_TUNE. 
+       (CRIS_CPP_SUBTARGET_SPEC): Ditto.  Add CRIS_ARCH_CPP_DEFAULT.
+       (ASM_SPEC): Add sanity-check erroring out when both -march= and
+       -mcpu= are specified.  Pass on either as --march=v32.
+       (CRIS_ASM_SUBTARGET_SPEC): When neither -march= or -mcpu= are
+       specified, pass on CRIS_DEFAULT_ASM_ARCH_OPTION.
+       (CRIS_CPU_V32): New macro.
+       [!TARGET_CPU_DEFAULT]: Default-define as CRIS_CPU_BASE.
+       [!TARGET_DEFAULT, TARGET_CPU_DEFAULT == 32]: Move default
+       TARGET_DEFAULT definition after new TARGET_CPU_DEFAULT definition.
+       Define v32-adjusted TARGET_DEFAULT.
+       (CRIS_DEFAULT_CPU_VERSION): Change to TARGET_CPU_DEFAULT from
+       CRIS_CPU_BASE.
+       (TARGET_V32): New macro.
+       (REG_ALLOC_ORDER_V32): New macro.
+       (HARD_REGNO_MODE_OK): Do not allow larger-than-register-size modes
+       into CRIS_ACR_REGNUM.
+       (enum reg_class): New classes ACR_REGS, SPEC_ACR_REGS,
+       GENNONACR_REGS and SPEC_GENNONACR_REGS.
+       (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Adjust for new classes.
+       (REGNO_REG_CLASS): Give ACR_REGS for CRIS_ACR_REGNUM.
+       (MODE_CODE_BASE_REG_CLASS): Define, give for OCODE POST_INC
+       GENNONACR_REGS, BASE_REG_CLASS otherwise.
+       (REG_CLASS_FROM_LETTER): 'a' is for ACR_REGS.
+       (REGNO_MODE_CODE_OK_FOR_BASE_P): Define, refusing OCODE POST_INC
+       for CRIS_ACR_REGNUM.
+       (PREFERRED_RELOAD_CLASS): Keep ACR_REGS as preferred.
+       (HARD_REGNO_RENAME_OK): Refuse CRIS_ACR_REGNUM as TO.
+       (EXTRA_CONSTRAINT): New constraint 'U'.
+       (TRAMPOLINE_TEMPLATE, TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE)
+       (ASM_OUTPUT_ADDR_DIFF_ELT): Adjust for CRIS v32.
+       (BASE_OR_AUTOINCR_P): Refuse POST_INC for CRIS_ACR_REGNUM.
+       (SIMPLE_ADDRESS_P): Remove.
+       (GO_IF_LEGITIMATE_ADDRESS): Use BASE_OR_AUTOINCR_P, not redundant
+       SIMPLE_ADDRESS_P.  Make one chained if-else, finishing as
+       non-match after BASE_OR_AUTOINCR_P for TARGET_V32.
+       (REGISTER_MOVE_COST): Just call the new function
+       cris_register_move_cost.
+       (enum cris_pic_symbol_type): Rename cris_gotrel_symbol to
+       cris_rel_symbol.  All users changed.
+       (REGISTER_NAMES): Replace "pc" with "acr".
+       (ADDITIONAL_REGISTER_NAMES): Add "pc" for 15.
+       (ASM_OUTPUT_REG_PUSH): Change to v32-compatible sequence.
+       (ASM_OUTPUT_REG_POP): Change to v32-compatible syntax.
+       (ASM_OUTPUT_CASE_END): Just call the new function
+       cris_asm_output_case_end.
+       * gcc/config/cris/cris.md: Group related constants together, with
+       comments local.
+       (CRIS_UNSPEC_PLT_GOTREL, CRIS_UNSPEC_PLT_PCREL, CRIS_UNSPEC_PCREL)
+       (CRIS_UNSPEC_CASESI): New constants.
+       (CRIS_UNSPEC_PLT): Remove constant.
+       (CRIS_ACR_REGNUM): New constant.
+       ("slottable"): New attr alternatives "has_return_slot" and
+       "has_call_slot".
+       ("cc"): New attr alternatives "noov32" and "rev".
+       ((eq_attr "slottable" "has_call_slot"))
+       ((eq_attr "slottable" "has_return_slot")): New define_delays.
+       ("movdi", "movsi"): Adjust operands for CRIS v32.
+       ("tstdi", "cmpdi", "adddi3", "subdi3", "uminsi3")
+       ("indirect_jump"): Ditto.  Make define_expand.
+       ("*tstdi_non_v32", "*tstdi_v32", "*tst<mode>_cmp")
+       ("*tst<mode>_non_cmp", "*cmpdi_non_v32", "*cmpdi_v32")
+       ("*movdi_v32", "*adddi3_non_v32", "*adddi3_v32")
+       ("*addsi3_non_v32", "*addsi3_v32", "*addhi3_non_v32")
+       ("*addhi3_v32", "*addqi3_non_v32", "*addqi3_v32")
+       ("*subdi3_non_v32", "*subdi3_v32", "*subsi3_non_v32")
+       ("*subsi3_v32", "*sub<mode>3_nonv32", "*sub<mode>3_v32")
+       ("*andqi3_non_v32", "*andqi3_v32", "*iorsi3_non_v32")
+       ("*iorsi3_v32", "*iorhi3_non_v32", "*iorhi3_v32")
+       ("*iorqi3_non_v32", "*iorqi3_v32", "*uminsi3_non_v32")
+       ("*uminsi3_v32", "*indirect_jump_non_v32", "*indirect_jump_v32")
+       ("*expanded_call_v32", "*expanded_call_value_v32"): New patterns,
+       for the corresponding standard name.
+       ("tst<mode>"): Limit to BW and make define_expand.
+       ("tstsi"): Make separate insn, adjusting for CRIS v32.
+       ("*cmp_swapext<mode>"): Adjust for v32.  Specify "rev" for attr "cc".
+       ("cmpsi", "cmp<mode>"): Remove special cases for zero.  Specify
+       attr "cc".
+       ("*btst"): Don't match for TARGET_CCINIT.  Replace test of
+       register with compatible "cmpq 0".  Specify attr "cc".
+       ("*movdi_insn_non_v32"): New pattern, replacing "*movdi_insn" and
+       define_split.
+       (define_split for DI move): Match CRIS v32 only.
+       ("*movsi_got_load", "*movsi_internal", "*addi"): Adjust for CRIS
+       v32.
+       ("load_multiple", "store_multiple", "*addsbw_v32", "*addubw_v32")
+       ("*adds<mode>_v32", "*addu<mode>_v32", "*bound<mode>_v32")
+       ("*casesi_jump_v32", "*expanded_andsi_v32", "*expanded_andhi_v32")
+       ("*extop<mode>si_v32", "*extopqihi_v32", "*andhi_lowpart_v32")
+       ("*andqi_lowpart_v32", "cris_casesi_v32"): New patterns. 
+       ("add<mode>3"): Make addsi3, addhi3 and addqi3 define_expand.
+       ("sub<mode>3"): Ditto subsi3, subhi3 and subqi3.
+       ("ior<mode>3"): Ditto iorsi3, iorhi3 and iorqi3.
+       ("*extopqihi_non_v32"): Replace "*extopqihi".
+       ("*extop<mode>si_non_v32"): Replace "*extop<mode>si".
+       ("*addxqihi_swap_non_v32"): Rename from "*extopqihi_swap", make
+       non-v32 only.
+       ("*extop<mode>si_swap_non_v32"): Ditto "*extop<mode>si_swap".
+       ("*expanded_andsi_non_v32"): Ditto "*expanded_andsi".
+       ("*expanded_andhi_non_v32"): Ditto "*expanded_andhi".
+       ("*andhi_lowpart_non_v32"): Ditto "*andhi_lowpart".
+       ("*andqi_lowpart_non_v32"): Ditto "*andqi_lowpart".
+       ("*expanded_call_non_v32"): Ditto "*expanded_call".  Change from
+       "cris_general_operand_or_plt_symbol" to "general_operand".
+       ("*expanded_call_value_non_v32") Ditto "*expanded_call_value".
+       ("*casesi_adds_w", "mstep_shift", "mstep_mul")
+       ("*expanded_call_side", "*expanded_call_value_side")
+       (op-extend-split, op-extend-split-rx=rz, op-extend-split-swapped)
+       (op-extend-split-swapped-rx=rz, op-extend, op-split-rx=rz)
+       (op-split-swapped, op-split-swapped-rx=rz): Make non-v32 only.
+       ("dstep_mul", "xorsi3", "one_cmplsi2", "<shlr>si3")
+       ("*expanded_<shlr><mode>", "*<shlr><mode>_lowpart", "ashl<mode>3")
+       ("*ashl<mode>_lowpart", "abssi2", "clzsi2", "bswapsi2", "cris_swap_bits"): Specify "noov32" for
+       attr "cc".
+       ("<su>mulsi3_highpart"): Ditto.  Correct operand 0 to
+       register_operand.
+       ("andqi3"): Make define_expand.
+       ("*return_expanded"): For attr "slottable", change from "has_slot"
+       to "has_return_slot".
+       ("cris_casesi_non_v32"): New pattern, old contents of "casesi".
+       ("casesi"): Divert into "cris_casesi_v32" and
+       "cris_casesi_non_v32".
+       (moversideqi, movemsideqi, mover2side): Require
+       TARGET_SIDE_EFFECT_PREFIXES.
+       (gotplt-to-plt, gotplt-to-plt-side): Change from CRIS_UNSPEC_PLT
+       to CRIS_UNSPEC_PLT_GOTREL.
+       * config/cris/cris-protos.h (cris_register_move_cost)
+       (cris_cc0_user_requires_cmp, cris_asm_output_case_end): Declare.
+
+2007-12-15  Alexandre Oliva  <aoliva@redhat.com>
+
+       PR debug/7081
+       * dwarf2out.c (dwarf_tag_name): Synchronize with dwarf2.h.
+       (is_type_die): Cover interface types.
+       (class_or_namespace_scope_p): Cover interface and class types.
+       (record_type_tag): New.
+       (gen_inlined_structure_type_die): Use it.
+       (gen_struct_or_union_type_die): Likewise.
+       (prune_unused_types_walk): Cover interface types.
+       * langhooks.h (classify_record): New enum.
+       (classify_record): New member in struct langhooks_for_types.
+       * langhooks-def.h (LANG_HOOKS_CLASSIFY_RECORD): New.
+       (LANGHOOKS_FOR_TYPES_INITIALIZER): Adjust.
+
+2007-12-15  Alexandre Oliva  <aoliva@redhat.com>
+
+       * dwarf2out.c (reference_to_unused): Don't emit strings in
+       initializers just because of debug information.
+       * tree.h (TREE_ASM_WRITTEN): Document use for STRING_CSTs.
+
+2007-12-15  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * tree-scalar-evolution.c (number_of_iterations_for_all_loops): Replace
+       print_loop_ir with print_loops.
+       * tree-flow.h (dot_cfg, debug_loops, debug_loop, debug_loop_num,
+       print_loops, print_loops_bb): Declare.
+       * tree-cfg.c (print_loops_bb): New.
+       (print_loop): Print header, latch, bounds, estimation of iterations.
+       (print_loop_and_siblings): New.
+       (print_loop_ir): Renamed print_loops.
+       (debug_loop_ir): Renamed debug_loops.
+       (debug_loop, debug_loop_num): New.
+
+2007-12-15  Bernhard Fischer  <aldot@gcc.gnu.org>
+
+       * tree-flow-inline.h.c (next_readonly_imm_use): Fix typo in comment.
+
+2007-12-15  Bernhard Fischer  <aldot@gcc.gnu.org>
+
+       * toplev.c (process_options): Fix typo in warning.
+
+2007-12-14  Jakub Jelinek  <jakub@redhat.com>
+
+       PR target/29978
+       * config/i386/i386.c (ix86_expand_branch): Optimize LE/LEU/GT/GTU
+       DImode comparisons against constant with all 1's in the lower word.
+
+2007-12-14  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/i386/sse.md (sse4_2_pcmpestr): Use reg_not_xmm0_operand
+       constraint for operand2.  Use nonimm_not_xmm0_operand constraint
+       for operand 4.  Update arguments in the call to
+       gen_sse4_2_pcmpestr_cconly.
+       (sse_4_2_pcmpestr_cconly): Renumber insn operands and update insn
+       template accordingly.
+       (sse4_2_pcmpistr): Use reg_not_xmm0_operand constraint for operand2.
+       Use nonimm_not_xmm0_operand constraint for operand 3.  Update
+       arguments in the call to gen_sse4_2_pcmpistr_cconly.
+       (sse_4_2_pcmpistr_cconly): Renumber insn operands and update insn
+
+2007-12-14  Richard Guenther  <rguenther@suse.de>
+
+       PR middle-end/34462
+       * tree-ssa-operands.h (create_ssa_artificial_load_stmt): Add
+       parameter to say whether to unlink immediate uses.
+       * tree-ssa-operands.c (create_ssa_artificial_load_stmt): Do not
+       mark the artificial stmt as modified.  Unlink immediate uses
+       only if requested.
+       * tree-ssa-dom.c (record_equivalences_from_stmt): Update caller.
+       * tree-ssa-pre.c (insert_fake_stores): Likewise.
+
+2007-12-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
+
+       PR middle-end/33088
+       * gimplify.c (gimplify_modify_expr_complex_part): Add note to comment.
+       * tree-complex.c (init_dont_simulate_again): Return true if there are
+       uninitialized loads generated by gimplify_modify_expr_complex_part.
+       * tree-gimple.c (is_gimple_reg_type): Return false for complex types
+       if not optimizing.
+       * tree-ssa.c (ssa_undefined_value_p): New predicate extracted from...
+       (warn_uninit): ...here.  Use ssa_undefined_value_p.
+       * tree-ssa-pre.c (is_undefined_value): Delete.
+       (phi_translate_1): Use ssa_undefined_value_p.
+       (add_to_exp_gen): Likewise.
+       (make_values_for_stmt): Likewise.
+       * tree-flow.h (ssa_undefined_value_p): Declare.
+
+2007-12-13  Andrew Pinski  <pinskia@gmail.com>
+           David Daney  <ddaney@avtrex.com>
+
+       PR bootstrap/34144
+       * system.h: Make -Wuninitialized non-fatal if ASSERT_CHECKING
+       is disabled.
+
+2007-12-13  Jakub Jelinek  <jakub@redhat.com>
+
+       PR rtl-optimization/32636
+       * df-scan.c (df_get_entry_block_def_set): Set struct_value_rtx
+       regno in entry_block_defs even if HAVE_prologue && epilogue_completed.
+
+2007-12-13  Uros Bizjak  <ubizjak@gmail.com>
+           Richard Guenther  <rguenther@suse.de>
+
+       PR target/34435
+       * config/i386/emmintrin.h (_mm_shuffle_pd, _mm_extract_epi16,
+       _mm_insert_epi16, _mm_shufflehi_epi16, _mm_shufflelo_epi16,
+       _mm_shuffle_epi32): Cast non-constant input values to either __m64,
+       __m128, __m128i or __m128d in a macro version of the intrinsic.
+       Cast constant input values to int.
+       * config/i386/ammintrin.h (_mm_extracti_si64, _mm_inserti_si64): Ditto.
+       * config/i386/bmmintrin.h (_mm_roti_epi8, _mm_roti_epi16,
+       _mm_roti_epi32, _mm_roti_epi64): Ditto.
+       * config/i386/smmintrin.h (_mm_blend_epi16, _mm_blend_ps, _mm_blend_pd,
+       _mm_dp_ps, _mm_dp_pd, _mm_insert_ps, _mm_extract_ps, _mm_insert_epi8,
+       _mm_insert_epi32, _mm_insert_epi64, _mm_extract_epi8, mm_extract_epi32,
+       _mm_extract_epi64, _mm_mpsadbw_epu8, _mm_cmpistrm, _mm_cmpistri,
+       _mm_cmpestrm, _mm_cmpestri, _mm_cmpistra, _mm_cmpistrc, _mm_cmpistro,
+       _mm_cmpistrs, _mm_cmpistrz, _mm_cmpestra, _mm_cmpestrc, _mm_cmpestro,
+       _mm_cmpestrs, _mm_cmpestrz): Ditto.
+       * config/i386/tmmintrin.h (_mm_alignr_epi8, _mm_alignr_pi8): Ditto.
+       * config/i386/xmmintrin.h (_mm_shuffle_ps, _mm_extract_pi16, _m_pextrw,
+       _mm_insert_pi16, _m_pinsrw, _mm_shuffle_pi16, _m_pshufw): Ditto.
+       * config/i386/mmintrin-common.h (_mm_round_pd, _mm_round_sd,
+       _mm_round_ps, _mm_round_ss): Ditto.
+
+2007-12-13  Richard Guenther  <rguenther@suse.de>
+
+       PR tree-optimization/34450
+       * params.def (PARAM_SCCVN_MAX_SCC_SIZE): New param.
+       * invoke.texi (sccvn-max-scc-size): Document.
+       * Makefile.in (tree-ssa-sccvn.o): Add $(PARAMS_H) dependency.
+       * tree-ssa-sccvn.h (run_scc_vn): Return true on success, false
+       on error.
+       * tree-ssa-sccvn.c (params.h): Include.
+       (DFS): Return true if all went well, return false as soon as
+       a SCC exceeds the size of PARAM_SCCVN_MAX_SCC_SIZE.
+       (run_scc_vn): Return true if all went well, return false if
+       we aborted during DFS.
+       * tree-ssa-pre.c (execute_pre): Check if SCCVN finished
+       successfully, otherwise bail out.
+
 2007-12-13  Olga Golovanevsky  <olga@il.ibm.com>
 
        * ipa-struct-reorg.c (is_candidate): Print information to dump 
        (dump_new_types): Print a number of new types to replace 
        an original structure type.
        
-2007-12-13  Golovanevsky Olga  <olga@il.ibm.com>
+2007-12-13  Olga Golovanevsky  <olga@il.ibm.com>
 
        * doc/invoke.texi (Optimiza Options): Document new -fipa-struct-reorg
        option and struct-reorg-cold-struct-ratio parameter.
        * stormy16/stormy16.h (EXPAND_BUILTIN_VA_START): Remove.
        * stormy16/stormy16-protos.h (xstormy16_expand_builtin_va_start):
        Remove prototype.
-       * stormy16/stormy16.c (xstormy16_expand_builtin_va_start): Made
-       static.
+       * stormy16/stormy16.c (xstormy16_expand_builtin_va_start): Made static.
        (TARGET_EXPAND_BUILTIN_VA_START): Define.
        * s390/s390-protos.h (s390_va_start): Remove prototype.
        * s390/s390.c (s390_va_start): Made static.