2011-12-06 Joel Sherrill <joel.sherrill@oarcorp.com>
* config/rs6000/rtems.h: Switch to using global_options_set
in SUBSUBTARGET_OVERRIDE_OPTIONS.
From-SVN: r182068
2011-12-06 Andrew Pinski <apinski@cavium.com>
* crtstuff.c (__do_global_dtors_aux_fini_array_entry): Align to the
size of func_ptr.
(__frame_dummy_init_array_entry): Likewise.
From-SVN: r182066
* gcc-interface/Makefile.in (LIBGNAT_TARGET_PAIRS [windows targets]):
Correctly detect cygwin, which no longer has the '32' suffix, and use
appropriate implementations of the sockets and memory packages.
* sysdep.c (WIN_SETMODE): New define to choose the correct spelling of
setmode/_setmode for MinGW and Cygwin, respectively.
(__gnat_set_binary_mode [windows targets]): Use the above, and enable
the windows version for Cygwin as well as MinGW.
(__gnat_set_text_mode [windows targets]): Likewise.
(__gnat_ttyname [windows targets]): Provide a Cygwin implementation
in addition to the MinGW version.
(__gnat_is_windows_xp): Make available to Cygwin as well as MinGW.
(__gnat_get_stack_bounds): Likewise.
From-SVN: r182065
* config/avr/avr-mcus.def (avr_mcu_types): ATtiny4313 and
AT86RF401 have a 16-bit SP (their manual is bogus).
Forward-port from gcc-4_6-branch r181936 2011-12-02.
From-SVN: r182053
libgcc/
Forward-port from gcc-4_6-branch r181936 2011-12-02.
PR target/51345
PR target/51002
* config/avr/lib1funcs.S (__prologue_saves__,
__epilogue_restores__, __divdi3_moddi3): Enclose parts using
__SP_H__ in !defined (__AVR_HAVE_8BIT_SP__). Add FIXME comments.
gcc/
Forward-port from gcc-4_6-branch r181936 2011-12-02.
PR target/51002
* config/avr/avr.md (movhi_sp_r): Set insn condition to
!AVR_HAVE_8BIT_SP.
* config/avr/avr.c (output_movhi): Use "clr%B0" instead of "in
%B0,__SP_H__" if AVR_HAVE_8BIT_SP.
(avr_file_start): Only print "__SP_H__ = 0x3e" if !AVR_HAVE_8BIT_SP.
From-SVN: r182052
2011-12-06 Richard Guenther <rguenther@suse.de>
PR middle-end/51436
* gimple-fold.c (gimplify_and_update_call_from_tree): Guard
vdef check for the fact we do not have virtual operands when
not optimizing.
* g++.dg/torture/pr51436.C: New testcase.
From-SVN: r182045
2011-12-06 Richard Guenther <rguenther@suse.de>
PR tree-optimization/51245
* tree-ssa-sccvn.c (vn_reference_lookup_or_insert_constant_for_pieces):
New function.
(vn_reference_lookup_3): Use it. Properly valueize all refs
we create.
* gcc.dg/torture/pr51245.c: New testcase.
From-SVN: r182044
PR target/50906
* config/rs6000/rs6000.c (rs6000_emit_prologue <TARGET_SPE_ABI>):
Do not mark r11 setup as frame-related. Pass correct offset to
rs6000_emit_savres_rtx. Correct out-of-line rs6000_frame_related
arguments. Correct sp_offset. Remove "offset" fudge from
in-line rs6000_frame_related call. Rename misleading variable.
Fix comments and whitespace. Tidy some expressions.
(rs6000_emit_epilogue <TARGET_SPE_ABI>): Always set frame_reg_rtx
to r11 in out-of-line case. Correct sp_offset. Pass correct
offset to rs6000_emit_savres_rtx. Rename misleading variable.
Fix comments and whitespace. Tidy some expressions.
(rs6000_emit_epilogue <non-TARGET_SPE_ABI>): Add sp_offset
adjustment when !saving_GPRs_inline. Correct register mode
used in address calcs.
(rs6000_emit_epilogue <non-TARGET_SPE_ABI>): Similarly when
!restoring_GPRs_inline.
From-SVN: r182039
2011-12-05 Paolo Carlini <paolo.carlini@oracle.com>
* libsupc++/initializer_list: Do not declare anything if
__GXX_EXPERIMENTAL_CXX0X__ is not defined.
From-SVN: r182031
PR tree-optimization/51396
* tree-ssa-math-opts.c (convert_mult_to_fma): Don't optimize
if MUL_RESULT has zero uses.
* g++.dg/opt/pr51396.C: New test.
From-SVN: r182028
PR debug/51410
* c-decl.c (pop_scope): Don't add DECL_EXTERNAL decls
for debug info if scope is file_scope.
* gcc.dg/debug/dwarf2/pr51410.c: New test.
From-SVN: r182027
2011-12-05 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/51338
* dependency.c (are_identical_variables): Handle case where
end fields of substring references are NULL.
2011-12-05 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/51338
* gfortran.dg/assumed_charlen_substring_1.f90: New test.
From-SVN: r182024
/cp
2011-12-05 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/51414
* semantics.c (finish_underlying_type): Use %qT, not %qE for the
error message.
/testsuite
2011-12-05 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/51414
* g++.dg/ext/underlying_type11.C: New.
From-SVN: r182017
2011-12-05 Vladimir Makarov <vmakarov@redhat.com>
PR other/50775
* ira-int.h (struct ira_object): Remove add_data.
(OBJECT_ADD_DATA): Remove.
* ira-build.c (ira_create_object): Remove OBJECT_ADD_DATA
initialization.
* ira-color.c (object_hard_regs_t, object_hard_regs): Rename to
allocno_hard_regs_t, allocno_hard_regs.
(object_hard_regs_node_t, object_hard_regs_node): Rename to
allocno_hard_regs_node_t and allocno_hard_regs_node.
(struct allocno_color_data): Add new member last_process. Move
profitable_hard_regs, hard_regs_node, and hard_regs_subnodes_start
from object_color_data.
(object_color_data_t, object_color_data, OBJECT_COLOR_DATA):
Remove.
(curr_allocno_process): New static variable.
(object_hard_regs_eq, object_hard_regs_htab): Rename to
allocno_hard_regs_eq and allocno_hard_regs_htab.
(init_object_hard_regs, finish_object_hard_regs): Rename to
init_allocno_hard_regs and finish_allocno_hard_regs.
(object_hard_regs_compare, object_hard_regs_node_t): Rename to
allocno_hard_regs_compare and allocno_hard_regs_node_t.
(create_new_object_hard_regs_node): Rename to
create_new_allocno_hard_regs_node.
(add_new_object_hard_regs_node_to_forest): Rename to
add_new_allocno_hard_regs_node_to_forest.
(add_object_hard_regs_to_forest, collect_object_hard_regs_cover):
Rename to add_allocno_hard_regs_to_forest and collect_allocno_hard_regs_cover.
(setup_object_hard_regs_nodes_parent): Rename to setup_allocno_hard_regs_nodes_parent.
(remove_unused_object_hard_regs_nodes): Rename to remove_unused_allocno_hard_regs_nodes.
(enumerate_object_hard_regs_nodes, object_hard_regs_nodes_num):
Rename to enumerate_allocno_hard_regs_nodes and allocno_hard_regs_nodes_num.
(object_hard_regs_nodes, object_hard_regs_subnode_t): Rename to
allocno_hard_regs_nodes and allocno_hard_regs_subnode_t.
(object_hard_regs_subnode, object_hard_regs_subnodes): Rename to
allocno_hard_regs_subnode and allocno_hard_regs_subnodes.
(object_hard_regs_subnode_index): Rename to allocno_hard_regs_subnode_index.
(setup_object_hard_regs_subnode_index): Rename to
setup_allocno_hard_regs_subnode_index.
(get_object_hard_regs_subnodes_num): Rename to get_allocno_hard_regs_subnodes_num.
(form_object_hard_regs_nodes_forest): Rename to form_allocno_hard_regs_nodes_forest.
(finish_object_hard_regs_nodes_tree): Rename to form_allocno_hard_regs_nodes_forest
(finish_object_hard_regs_nodes_forest): Rename to
finish_allocno_hard_regs_nodes_forest.
(setup_left_conflict_sizes_p): Use allocno data instead of object
ones. Process conflict allocnos once.
(update_left_conflict_sizes_p): Use allocno data instead of object
ones. Change prototype signature.
(empty_profitable_hard_regs): Use allocno data instead of object
ones.
(setup_profitable_hard_regs): Ditto.
(get_conflict_profitable_regs): Rename to
get_conflict_and_start_profitable_regs. Use allocno data for
profitable regs calculation.
(check_hard_reg_p): Change prototype signature. Check profitable
regs for allocno not the objects.
(assign_hard_reg): Process conflict allocnos only once for
updating conflict costs.
(setup_allocno_available_regs_num): Use allocno data instead of
object ones. Modify debug output.
(color_pass): Remove initialization and finalization of object
color data.
From-SVN: r182015
* cp-tree.h (enum cpp0x_warn_str): Add CPP0X_DELEGATING_CTORS.
* error.c (maybe_warn_cpp0x): Adjust.
* parser.c (cp_parser_mem_initializer_list): Use it. Diagnose
multiple initializers if a delegating initializer is present.
* call.c (build_special_member_call): Convert an assert into an if.
* init.c (perform_target_ctor): New.
(emit_mem_initializers): Use it.
(expand_member_init, expand_default_init): Adjust.
Co-Authored-By: Pedro Lamarão <pedro.lamarao@gmail.com>
From-SVN: r182012
/cp
2011-12-05 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/51404
* typeck2.c (build_functional_cast): Early return error_mark_node
for invalid uses of 'auto'.
* parser.c (cp_parser_direct_declarator): When
cp_parser_constant_expression returns error do not produce further
diagnostic for the bound.
/testsuite
2011-12-05 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/51404
* g++.dg/cpp0x/auto28.C: New.
From-SVN: r182011
2011-12-05 Richard Guenther <rguenther@suse.de>
PR tree-optimization/50904
* tree-ssa-loop-im.c (struct mem_ref): Remove vops member.
(MEM_ANALYZABLE): New.
(memory_references): Remove clobbered_vops and vop_ref_map
members, add all_refs_stored_in_loop member.
(memref_free): Adjust.
(mem_ref_alloc): Likewise.
(gather_mem_refs_stmt): Do not record clobbers, instead
record refs for unanalyzable stmts.
(gather_mem_refs_in_loops): Do not propagate clobbers.
(struct vop_to_refs_elt, vtoe_hash, vtoe_eq, vtoe_free,
record_vop_access, get_vop_accesses, get_vop_stores,
add_vop_ref_mapping): Remove.
(create_vop_ref_mapping_loop): Adjust to simply record all
stores.
(analyze_memory_references): Adjust.
(refs_independent_p): Check for not analyzable refs.
(can_sm_ref_p): Likewise.
(ref_indep_loop_p_1): Simplify.
(tree_ssa_lim_finalize): Adjust.
* tree-ssa-loop-im.c (stmt_cost): Simplify, use LIM_EXPENSIVE
rather than magic constants. Assign zero cost to PAREN_EXPR
and SSA_NAME copies. Assign cost proportional to the vector
size for vector constructors.
From-SVN: r182010