* 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
2011-12-05 Bob Duff <duff@adacore.com>
* sem_ch4.adb: Minor comment fix.
2011-12-05 Robert Dewar <dewar@adacore.com>
* gnat_ugn.texi: Add documentation for -gnatw.e.
2011-12-05 Bob Duff <duff@adacore.com>
* treepr.adb (pn): Print something useful for
Elmt_Ids. Add Write_Eol to 'when others' case, so the output
will be seen immediately in gdb.
2011-12-05 Ed Schonberg <schonberg@adacore.com>
* lib-writ.adb (Output_Main_Program_Line): A generic subprogram
is never a main program.
2011-12-05 Thomas Quinot <quinot@adacore.com>
* par_sco.adb: Various minor adjustments to dominance markers
generation.
2011-12-05 Ed Schonberg <schonberg@adacore.com>
* sem_ch6.adb (Analyze_Expression_Function): If the function is
a completion, generate a body reference for its defining entity,
before rewriting the node as a body.
* sem_util.adb (Defining_Entity): Add entry for expression
function.
From-SVN: r182006
2011-12-05 Bob Duff <duff@adacore.com>
* sem_ch3.adb (Derive_Progenitor_Subprograms): Add Ultimate_Alias
to the Comes_From_Source check, to deal properly with the case
of indirect inheritance of "=".
2011-12-05 Thomas Quinot <quinot@adacore.com>
PR ada/51307
* s-oscons-tmplt.c: On HP-UX, CLOCK_REALTIME is an enum literal,
not a macro.
2011-12-05 Thomas Quinot <quinot@adacore.com>
* par_sco.adb, scos.ads, put_scos.adb, get_scos.adb: Generate dominance
information in SCOs.
From-SVN: r182004
2011-12-05 Richard Guenther <rguenther@suse.de>
* cgraph.c (cgraph_create_edge_1): Initialize
call_stmt_cannot_inline_p from the stmt if possible.
(cgraph_make_edge_direct): Likewise.
* gimple-streamer-in.c (input_gimple_stmt): Do not
call gimple_call_set_cannot_inline.
* gimple.h (enum gf_mask): Remove GF_CALL_CANNOT_INLINE, shift
values.
(gimple_call_set_cannot_inline): Remove.
(gimple_call_cannot_inline_p): Likewise.
* ipa-inline-analysis.c (initialize_inline_failed): Look
at the edge call_stmt_cannot_inline_p flag.
* ipa-inline.c (can_inline_edge_p): Likewise.
(early_inliner): Only update the edge flag.
* ipa-prop.c (update_indirect_edges_after_inlining): Likewise.
(ipa_modify_call_arguments): Do not call gimple_call_set_cannot_inline.
* cgraphunit.c (assemble_thunk): Likewise.
* gimple-fold.c (gimple_fold_call): Likewise.
* tree.h (CALL_CANNOT_INLINE_P): Remove.
* tree-mudflap.c (mf_xform_statements): Do not modify alloca calls.
* builtins.c (expand_builtin_alloca): With -fmudflap do not expand
alloca calls inline.
* cfgexpand.c (expand_call_stmt): Do not set CALL_CANNOT_INLINE_P.
* gimple.c (gimple_build_call_from_tree): Do not read
CALL_CANNOT_INLINE_P.
* gimplify.c (gimplify_call_expr): Do not copy CALL_CANNOT_INLINE_P.
From-SVN: r182001
PR middle-end/51323
PR middle-end/50074
* calls.c (internal_arg_pointer_exp_state): New variable.
(internal_arg_pointer_based_exp_1,
internal_arg_pointer_exp_scan): New functions.
(internal_arg_pointer_based_exp): New function.
(mem_overlaps_already_clobbered_arg_p): Use it.
(expand_call): Free internal_arg_pointer_exp_state.cache vector
and clear internal_arg_pointer_exp_state.scan_start.
* gcc.c-torture/execute/pr51323.c: New test.
Co-Authored-By: Eric Botcazou <ebotcazou@adacore.com>
From-SVN: r182000
* gcov-io.h (struct gcov_info): Replace trailing array with
pointer to array.
* profile.c (branch_prob): Only call renamed
coverage_begin_function once.
* coverage.h (coverage_begin_output): Rename to ...
(coverage_begin_function): ... here.
* coverage.c (struct function_list): Rename to ...
(struct coverage_data): ... this. Update all uses.
(gcov_info_var, gcov_fn_info_type, gcov_fn_info_ptr_type): New
globals.
(bbg_file_opened, bbg_function_announced): Remove.
(get_coverage_counts): Adjust message.
(coverage_begin_ouput): Rename to ...
(coverage_begin_function): ... here. Move file opening to
coverage_init. Adjust for being called only once.
(coverage_end_function): Remove bbg file and inhibit further
output here on error.
(build_info_type): Adjust for change to pointer to array.
(build_info): Receive array of function pointers and adjust.
(create_coverage): Break into ...
(coverage_obj_init, coverage_obj_fn, coverage_obj_finish):
... these, and adjust.
(coverage_init): Open the notes file here. Tidy.
(coverage_finish): Call coverage_obj_init etc.
From-SVN: r181994