diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7a3bf29e4cd..6d67af1831f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2008-10-27 Vladimir Makarov + + PR middle-end/37884 + * ira-build.c (copy_live_ranges_to_removed_store_destinations): + Rename to copy_info_to_removed_store_destinations. Propagate + conflict hard regs and register stack attribute. + 2008-10-26 John David Anglin PR middle-end/37316 @@ -47,7 +54,7 @@ * tree-ssa-loop-ivopts.c (add_old_iv_candidates): For pointer bases add sizetype IV with initial value zero instead of pointer type. -2008-10-24 Manuel López-Ibáñez +2008-10-24 Manuel López-Ibáñez PR c/7543 * value-prof.c (gimple_stringop_fixed_value): Use parentheses @@ -140,7 +147,7 @@ * tree-ssa-structalias.c (could_have_pointers): Complex types cannot have pointers. -2008-10-22 Manuel López-Ibáñez +2008-10-22 Manuel López-Ibáñez PR c/30949 * c-typeck.c (convert_for_assignment): Do not give declaration's @@ -228,11 +235,11 @@ * tree-ssa-pre.c (insert_into_preds_of_block): Don't rewrite constant part of expression. -2008-10-20 Tobias Schlüter +2008-10-20 Tobias Schlüter * doc/install.texi: Fix typos in previous patch. -2008-10-19 Tobias Schlüter +2008-10-19 Tobias Schlüter * doc/install.texi: Document in-tree building of gcc and mpfr. @@ -240,7 +247,7 @@ * tree-ssa-alias.c (may_alias_p): Remove bogus shortcut. -2008-10-19 Manuel López-Ibáñez +2008-10-19 Manuel López-Ibáñez PR c/30260 * c-decl.c (finish_enum): Convert non-integer enumerators to enum @@ -7216,7 +7223,7 @@ * passes.c (init_optimization_passes): Exchange store-ccp with a ccp pass. -2008-08-19 Rafael Espíndola +2008-08-19 Rafael Espíndola * varasm.c (weak_decls): Move earlier in the file. (assemble_external): Add weak decls to the weak_decls list. @@ -9015,7 +9022,7 @@ PR ada/36554 * dwarf2out.c (is_subrange_type): Deal with BOOLEAN_TYPE. -2008-07-30 Rafael Ávila de Espíndola +2008-07-30 Rafael Ávila de Espíndola PR 36974 * final.c (call_from_call_insn): Handle COND_EXEC. @@ -9227,7 +9234,7 @@ * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Add clause for vector modes. -2008-07-30 Rafael Ávila de Espíndola +2008-07-30 Rafael Ávila de Espíndola * final.c (call_from_call_insn): New. (final_scan_insn): Call assemble_external on FUNCTION_DECLs. @@ -10345,7 +10352,7 @@ (TARGET_OPTION_PRINT): Ditto. (TARGET_CAN_INLINE_P): Ditto. -2008-07-22 Rafael Ávila de Espíndola +2008-07-22 Rafael Ávila de Espíndola * c-typeck.c (build_external_ref): Don't call assemble_external. * final.c (output_operand): Call assemble_external. @@ -10366,7 +10373,7 @@ highest magnitude if this is still less or equal to the true quotient in magnitude. -2008-07-21 Rafael Ávila de Espíndola +2008-07-21 Rafael Ávila de Espíndola * Makefile.in: Replace toplev.h with TOPLEV_H. * c-decl.c (merge_decls): Don't set DECL_IN_SYSTEM_HEADER. @@ -10669,7 +10676,7 @@ (m32c_legitimate_address_p): Handle "++rii" addresses created by m32c_legitimize_reload_address. -2007-07-16 Rafael Ávila de Espíndola +2007-07-16 Rafael Ávila de Espíndola * c-decl.c (merge_decls): Keep DECL_SOURCE_LOCATION and DECL_IN_SYSTEM_HEADER in sync. @@ -10759,7 +10766,7 @@ * emit-rtl.c (set_mem_attributes_minus_bitpos): Improve comment. -2007-07-14 Rafael Ávila de Espíndola +2007-07-14 Rafael Ávila de Espíndola * c-decl.c (diagnose_mismatched_decls): Don't warn if TREE_NO_WARNING is set. @@ -15051,7 +15058,7 @@ Clear __gcov_indreict_call_callee variable to avoid misattribution of the profile. -2008-05-28 Rafael Espíndola +2008-05-28 Rafael Espíndola * see.c (see_def_extension_not_merged): Use copy_rtx_if_shared to avoid invalid sharing. @@ -15469,7 +15476,7 @@ for A24 to PSImode. (m32c_address_cost): Detail costs for indirect offsets. -2008-05-23 Rafael Espíndola +2008-05-23 Rafael Espíndola * see.c (see_get_extension_data): Don't use SUBREG_REG to test if a node is a SUBREG. @@ -15570,7 +15577,7 @@ * config/avr/avr.c (get_sequence_length): Add new function. (expand_prologue, expand_epilogue): Remove duplicate code. -2008-05-22 Rafael Espíndola +2008-05-22 Rafael Espíndola * see.c (see_pre_insert_extensions): Use copy_rtx to avoid invalid rtx sharing. @@ -16862,7 +16869,7 @@ to one line. * doc/invoke.texi (Wframe-larger-than=): Add more description. -2008-05-08 Rafael Espíndola +2008-05-08 Rafael Espíndola * tree-complex.c (expand_complex_div_wide): Don't create CONDs that trap. @@ -17889,7 +17896,7 @@ (evaluate_stmt): Print the likely value. (ccp_visit_stmt): Avoid excessive vertical spacing. -2008-04-30 Rafael Espíndola +2008-04-30 Rafael Espíndola * builtins.c (fold_call_expr): Return realret. * tree-ssa-threadedge.c @@ -18672,7 +18679,7 @@ * tree-vect-analyze.c (vect_analyze_group_access): SLP is incapable of dealing with loads with gaps. -2008-04-24 Rafael Espíndola +2008-04-24 Rafael Espíndola * tree-flow.h (vrp_evaluate_conditional): Change signature. * tree-ssa-propagate.c (fold_predicate_in): Update call to @@ -18996,7 +19003,7 @@ * Makefile.in (s-gtyp-input): Remove tmp-gi.list before writing it. -2008-04-18 Rafael Espíndola +2008-04-18 Rafael Espíndola * tree-vrp.c (find_case_label_index): Fix the binary search. (find_case_label_range): New. @@ -19302,7 +19309,7 @@ * c-decl.c (finish_decl): If extern or static var has variable size, set TREE_TYPE (decl) to error_mark_node. -2008-04-15 Rafael Espíndola +2008-04-15 Rafael Espíndola * fold-const.c (tree_call_nonnegative_warnv_p): Remove local variable arg1. @@ -19442,7 +19449,7 @@ * config/spu/spu.c (spu_init_builtins): Mark builtins as nothrow. -2008-04-10 Rafael Espíndola +2008-04-10 Rafael Espíndola * tree-vrp.c (extract_range_from_binary_expr): Don't handle TRUTH_ANDIF_EXPR or TRUTH_ORIF_EXPR. @@ -19537,7 +19544,7 @@ * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update GNU Fortran language string. -2008-04-08 Rafael Espíndola +2008-04-08 Rafael Espíndola * fold-canst.c (tree_call_nonnegative_warnv_p): New. (tree_invalid_nonnegative_warnv_p): Use tree_call_nonnegative_warnv_p. @@ -20185,7 +20192,7 @@ make sure to fill gaps with a fallback label if default_label is not present. -2008-04-03 Dominique d'Humières +2008-04-03 Dominique d'Humières PR target/35801 * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Free cfun. @@ -20348,7 +20355,7 @@ (varying_mem_p): Move above propagate_rtx. (all_uses_available_at): Do not check MEMs. -2008-04-02 Rafael Espíndola +2008-04-02 Rafael Espíndola * tree-vrp.c (extract_code_and_val_from_cond): Remove. (register_edge_assert_for_2): Split the cond argument. @@ -20523,7 +20530,7 @@ (*sse4_1_smin3): Likewise. (*sse4_1_umin3): Likewise. -2008-04-01 Rafael Espíndola +2008-04-01 Rafael Espíndola * tree-cfg.c (verify_expr): remove in_phi. (verify_stmt): Don't call walk_tree with verify_expr. Use @@ -20544,7 +20551,7 @@ PR pch/13675 * c-pch.c (c_common_read_pch): On error close (fd) resp. fclose (f). -2008-04-01 Rafael Espíndola +2008-04-01 Rafael Espíndola * tree-vrp.c (extract_code_and_val_from_cond_with_ops): New. (extract_code_and_val_from_cond): Use @@ -20735,7 +20742,7 @@ vectorization support. * doc/invoke.texi (-mveclibabi) [svml]: Document new target option. -2008-03-28 Rafael Espíndola +2008-03-28 Rafael Espíndola * fold-const.c (tree_unary_nonnegative_warnv_p): Make it public. (tree_binary_nonnegative_warnv_p): Make it public. @@ -22528,7 +22535,7 @@ on hpux10. * configure: Rebuilt. -2008-03-04 Rafael Espíndola +2008-03-04 Rafael Espíndola * fold-const.c (tree_simple_nonnegative_warnv_p): New. (tree_unary_nonnegative_warnv_p): New. @@ -22549,7 +22556,7 @@ * config/i386/smmintrin.h (SIDD_XXX): Renamed to ... (_SIDD_XXX): This. -2008-03-04 Rafael Espíndola +2008-03-04 Rafael Espíndola * fold-const.c (tree_unary_nonzero_warnv_p): New. (tree_binary_nonzero_warnv_p): New. diff --git a/gcc/ira-build.c b/gcc/ira-build.c index 3d58e5521ad..68b54dfad25 100644 --- a/gcc/ira-build.c +++ b/gcc/ira-build.c @@ -2042,11 +2042,12 @@ create_caps (void) static ira_allocno_t *regno_top_level_allocno_map; /* Process all allocnos originated from pseudo REGNO and copy live - ranges from low level allocnos to final allocnos which are - destinations of removed stores at a loop exit. Return true if we - copied live ranges. */ + ranges, hard reg conflicts, and allocno stack reg attributes from + low level allocnos to final allocnos which are destinations of + removed stores at a loop exit. Return true if we copied live + ranges. */ static bool -copy_live_ranges_to_removed_store_destinations (int regno) +copy_info_to_removed_store_destinations (int regno) { ira_allocno_t a, parent_a; ira_loop_tree_node_t parent; @@ -2087,6 +2088,12 @@ copy_live_ranges_to_removed_store_destinations (int regno) change_allocno_in_range_list (r, parent_a); ALLOCNO_LIVE_RANGES (parent_a) = merge_ranges (r, ALLOCNO_LIVE_RANGES (parent_a)); + IOR_HARD_REG_SET (ALLOCNO_TOTAL_CONFLICT_HARD_REGS (parent_a), + ALLOCNO_TOTAL_CONFLICT_HARD_REGS (a)); +#ifdef STACK_REGS + if (ALLOCNO_TOTAL_NO_STACK_REG_P (a)) + ALLOCNO_TOTAL_NO_STACK_REG_P (parent_a) = true; +#endif merged_p = true; } return merged_p; @@ -2235,7 +2242,7 @@ ira_flattening (int max_regno_before_emit, int ira_max_point_before_emit) ALLOCNO_COPIES (a) = NULL; regno_top_level_allocno_map[REGNO (ALLOCNO_REG (a))] = a; } - if (mem_dest_p && copy_live_ranges_to_removed_store_destinations (i)) + if (mem_dest_p && copy_info_to_removed_store_destinations (i)) merged_p = true; } ira_assert (new_pseudos_p || ira_max_point_before_emit == ira_max_point);