Joseph Myers [Tue, 3 May 2011 18:51:49 +0000 (19:51 +0100)]
mips-opts.h: New.
* config/mips/mips-opts.h: New.
* config/mips/mips.c (enum mips_r10k_cache_barrier_setting): Move
to mips-opts.h.
(mips_abi, mips_code_readable, mips_r10k_cache_barriee): Remove.
(mips_handle_option): Don't handle OPT_mabi_, OPT_mcode_readable_
or OPT_mr10k_cache_barrier_ here. Access mips_cache_flush_func
via opts pointer.
* config/mips/mips.h (enum mips_code_readable_setting): Move to
mips-opts.h.
(mips_abi, mips_code_readable): Don't declare.
* config/mips/mips.opt (config/mips/mips-opts.h): New
HeaderInclude.
(mabi=): Use Enum and Var.
(mips_abi): New Enum and EnumValue entries.
(mcode-readable=): Use Enum and Var.
(mips_code_readable_setting): New Enum and EnumValue entries.
(mr10k-cache-barrier=): Use Enum and Var.
(mips_r10k_cache_barrier_setting): New Enum and EnumValue entries.
2011-05-03 Stuart Henderson <shenders@gcc.gnu.org>
From Mike Frysinger
* gcc.target/bfin/mcpu-bf542.c: Check SILICON_REVISION is 0x0004.
* gcc.target/bfin/mcpu-bf544.c, gcc.target/bfin/mcpu-bf547.c,
gcc.target/bfin/mcpu-bf548.c, gcc.target/bfin/mcpu-bf549.c: Likewise.
2011-05-03 Stuart Henderson <shenders@gcc.gnu.org>
From Bernd Schmidt:
* config/bfin/bfin.md (MOVCC): New mode_macro.
(mov<mode>cc_insn1, mov<mode>cc_insn2, mov<mode>cc): Renamed from
movsicc_insn1, movsicc_insn2 and movsicc and macroized. Remove
comments from generated assembly.
Nathan Froyd [Tue, 3 May 2011 16:34:20 +0000 (16:34 +0000)]
trans.c (gigi): Call build_function_type_list instead of build_function_type.
* gcc-interface/trans.c (gigi): Call build_function_type_list instead
of build_function_type. Adjust calls to...
(build_raise_check): ...this. Do not take a void_tree parameter.
Call build_function_type_list instead of build_function_type.
Fix head comment and swap couple of conditional blocks.
Co-Authored-By: Eric Botcazou <ebotcazou@adacore.com>
From-SVN: r173325
Nathan Froyd [Tue, 3 May 2011 15:52:20 +0000 (15:52 +0000)]
stormy16 (xstormy16_init_builtins): Call build_function_type_list instead of build_function_type.
* config/stormy16/stormy16 (xstormy16_init_builtins): Call
build_function_type_list instead of build_function_type.
Rearrange initialization of `args' to do so.
re PR target/39768 (internal compiler error: RTL check: expected code 'const_int', have 'reg' in gen_rotlsi3, at config/bfin/bfin.md:1616)
2011-05-03 Stuart Henderson <shenders@gcc.gnu.org>
From Bernd Schmidt
* config/bfin/bfin.md (rotrsi, rotlsi): Don't take INTVAL of anything
that's not CONST_INT. Seemingly redundant check is due to PR39768.
2011-05-03 Stuart Henderson <shenders@gcc.gnu.org>
Originally from Bernd Schmidt
* config/bfin/uclinux.h (SUBTARGET_FDPIC_NOT_SUPPORTED): New macro.
* config/bfin/bfin.c (override_options): Test it and error if
TARGET_FDPIC.
Jeff Law [Tue, 3 May 2011 13:12:29 +0000 (07:12 -0600)]
tree-ssa-threadupdate.c (THREAD_TARGET): define.
* tree-ssa-threadupdate.c (THREAD_TARGET): define.
(remove_ctrl_stmt_and_useless_edges): Clear AUX field of outgoing edges.
(craete_edge_and_update_destination_phis): Use THREAD_TARGET rather
than accessing AUX field directly. Free the AUX field before clearing it.
(thread_block, thread_through_loop_header): Likewise.
(thread_single_edge, mark_threaded_blocks): Likewise.
(redirect_edges): Delay clearing the AUX field. Free the AUX field.
(register_jump_thread): Do not attempt to thread to a NULL edge.
* function.c (init_function_start): Call decide_function_section.
* varasm.c (decide_function_section): New function.
(assemble_start_function): When not using
flag_reorder_blocks_and_partition, don't compute in_cold_section_p
or first_function_block_is_cold.
* rtl.h (decide_function_section): Declare.
Steven G. Kargl [Tue, 3 May 2011 01:23:46 +0000 (01:23 +0000)]
re PR fortran/48720 (quad precision literals do not work)
2011-05-02 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/48720
* gfortran.texi: Document the 'Q' exponent-letter extension.
* invoke.texi: Document -Wreal-q-constant.
* lang.opt: Add -Wreal-q-constant option.
* gfortran.h: Add warn_real_q_constant to option struct.
* primary.c (match_real_constant): Use it. Accept 'Q' as
exponent-letter for REAL(16) real-literal-constant with a
fallback to REAL(10) or error if REAL(10) is not available.
* options.c (gfc_init_options, set_Wall) Set it.
(gfc_handle_option): Handle new option.
Jonathan Wakely [Tue, 3 May 2011 00:03:38 +0000 (00:03 +0000)]
functional (bind): Remove from overload set when first argument type might be a socket file descriptor.
2011-05-03 Jonathan Wakely <jwakely.gcc@gmail.com>
* include/std/functional (bind): Remove from overload set when first
argument type might be a socket file descriptor.
* testsuite/20_util/bind/socket.cc: New.
Lawrence Crowl [Mon, 2 May 2011 22:19:48 +0000 (22:19 +0000)]
Upgrade the utility of timevars.
Index: gcc/ChangeLog
2011-04-27 Lawrence Crowl <crowl@google.com>
* timevar.h (timevar_cond_start): Remove unused POP_TIMEVAR_AND_RETURN.
(timevar_cond_start): New for starting a timer only when it is not
already running.
(timevar_cond_stop): New for stopping a timer when it was not already
running.
* timevar.c (timevar_stop): Enable start/stop timers to start again.
(timevar_cond_start): New as above.
(timevar_cond_stop): New as above.
* timevar.def: Add start/stop timers for compiler phases,
TV_PHASE_SETUP, TV_PHASE_PARSING, TV_PHASE_DEFERRED, TV_PHASE_CGRAPH,
TV_PHASE_DBGINFO (C), TV_PHASE_CHECK_DBGINFO (C++), TV_PHASE_GENERATE,
and TV_PHASE_FINALIZE.
Change push/pop timer TV_PARSE to TV_PARSE_GLOBAL.
Add push/pop timers TV_PARSE_STRUCT, TV_PARSE_ENUM, TV_PARSE_FUNC,
TV_PARSE_INLINE, TV_PARSE_INMETH, TV_TEMPLATE_INST.
Change push/pop timer TV_NAME_LOOKUP into a start/stop timer.
Make unused TV_OVERLOAD into a start/stop timer.
Remove unused timers TV_OVERLOAD, TV_TEMPLATE_INSTANTIATION.
Mark the strings for TV_NAME_LOOKUP and TV_OVERLOAD with a "|"
to indicate that they are start/stop timers.
* toplev.c (compile_file): Change TV_PARSE to TV_PARSE_GLOBAL.
Add start/stop timers TV_PHASE_PARSING and TV_PHASE_GENERATE.
Move initialization to do_compile.
(do_compile): Add initialization from above.
Add start/stop timers TV_PHASE_SETUP and TV_PHASE_FINALIZE.
* c-decl.c (c_write_global_declarations): Add start/stop of
TV_PHASE_DEFERRED, TV_PHASE_CGRAPH, TV_PHASE_DBGINFO.
* c-parser.c (c_parser_declaration_or_fndef): Push/pop TV_PARSE_FUNC
or TV_PARSE_INLINE, as appropriate.
(c_parser_enum_specifier): Push/pop TV_PARSE_ENUM.
(c_parser_struct_or_union_specifier): Push/pop TV_PARSE_STRUCT.
Index: gcc/cp/ChangeLog
2011-04-27 Lawrence Crowl <crowl@google.com>
* decl.c: (push_local_name): Change TV_NAME_LOOKUP to start/stop.
(poplevel): Refactor POP_TIMEVAR_AND_RETURN to plain code.
Change TV_NAME_LOOKUP to start/stop.
(define_label): Refactor timevar calls out to a wrapper function.
Change TV_NAME_LOOKUP to start/stop.
(xref_tag): Likewise.
(lookup_label): Refactor timevar calls out to a wrapper function.
Change TV_NAME_LOOKUP to start_cond/stop_cond.
* pt.c: (instantiate_class_template): Add a wrapper to push/pop new
TV_TEMPLATE_INST.
(instantiate_template): Add a wrapper to push/pop new TV_TEMPLATE_INST.
(lookup_template_class): Refactor timevar calls out to a wrapper
function. Change use of TV_NAME_LOOKUP to TV_TEMPLATE_INST.
(instantiate_decl): Change TV_PARSE to TV_TEMPLATE_INST.
* name-lookup.c: (store_bindings): Change TV_NAME_LOOKUP to start/stop.
(poplevel_class): Change TV_NAME_LOOKUP to start_cond/stop_cond.
(push_namespace): Likewise.
(pop_nested_namespace): Likewise.
(pushdecl_namespace_level): Likewise.
(store_class_bindings): Likewise.
(push_to_top_level): Likewise.
(identifier_type_value): Refactor timevar calls out to a wrapper
function. Change TV_NAME_LOOKUP to start/stop.
(find_binding): Likewise.
(push_using_decl): Likewise.
(lookup_arg_dependent): Likewise.
(push_using_directive): Likewise.
(qualified_lookup_using_namespace): Refactor POP_TIMEVAR_AND_RETURN
to plain code. Change TV_NAME_LOOKUP to start/stop.
(lookup_type_current_level): Likewise. Refactor inner return to
break.
(pushdecl_class_level): Refactor POP_TIMEVAR_AND_RETURN to plain
code. Change TV_NAME_LOOKUP to start_cond/stop_cond.
(pushdecl_top_level_1): Likewise.
(lookup_using_namespace): Likewise.
(pushdecl_with_scope): Refactor timevar calls out to a wrapper
function. Change TV_NAME_LOOKUP to start_cond/stop_cond.
(push_overloaded_decl): Likewise.
(push_class_level_binding): Likewise.
(namespace_binding): Likewise.
(set_namespace_binding): Likewise.
(supplement_binding): Likewise.
(unqualified_namespace_lookup): Likewise.
(lookup_name_real): Likewise.
(lookup_type_scope): Likewise.
(namespace_ancestor): Likewise.
(lookup_name_innermost_nonclass_level): Likewise.
(pushtag): Likewise.
(pop_from_top_level): Likewise.
(pushdecl_maybe_friend): Refactor timevar calls out to a wrapper
function. Change TV_NAME_LOOKUP to start_cond/stop_cond. Wrap long
lines.
(add_using_namespace): Refactor timevar calls out to a wrapper
function. Change TV_NAME_LOOKUP to start_cond/stop_cond. Bypass
wrapper on call to self.
* decl2.c: (cp_write_global_declarations): Add start/stop of
new TV_PHASE_DEFERRED, TV_PHASE_CGRAPH, TV_PHASE_CHECK_DBGINFO.
Remove push/pop calls to TV_VARCONST.
* parser.c: Add include of "timevar.h".
(cp_parser_explicit_instantiation): Add push/pop calls to
TV_TEMPLATE_INST.
(cp_parser_enum_specifier): Add push/pop calls to new TV_PARSE_ENUM.
(cp_parser_class_specifier): Add wrapper to add push/pop calls to
TV_PARSE_STRUCT.
(cp_parser_function_definition_from_specifiers_and_declarator): Add
push/pop calls to new TV_PARSE_FUNC or TV_PARSE_INLINE.
(cp_parser_late_parsing_for_member): Add push/pop calls to
new TV_PARSE_INMETH.
* call.c: Add include of "timevar.h".
(convert_class_to_reference): Wrap and add push/pop calls to
TV_OVERLOAD.
(build_op_call): Likewise.
(build_conditional_expr): Likewise.
(build_new_op): Likewise.
(build_new_method_call): Likewise.
(build_user_type_conversion): Reorganize to single return and add
push/pop calls to TV_OVERLOAD.
(perform_overload_resolution): Likewise.
* Make-lang.in: Add dependence of call.o and parser.o on $(TIMEVAR_H).
Uros Bizjak [Mon, 2 May 2011 18:58:32 +0000 (20:58 +0200)]
mmx.md (*mov<mode>_internal_rex64): Use %vmovq for reg<->xmm moves.
* config/i386/mmx.md (*mov<mode>_internal_rex64): Use %vmovq for
reg<->xmm moves.
(*mov<mode>_internal): Merge with *mov<mode>_internal_avx.
(*movv2sf_internal_rex64): Use %vmovq for reg<->xmm moves. Merge
with *movv2sf_internal_rex64_avx.
(*movv2sf_internal): Merge with *movv2sf_internal_avx.
* config/i386/i386.md (*movdi_internal_rex64) <TYPE_SSEMOV>:
Use %v prefix in insn mnemonic to handle TARGET_AVX.
(*movdi_internal): Add "isa" attribute. Use "maybe_vex" instead of
"vex" in "prefix" attribute calculation.
(*movdf_internal): Output AVX mnemonics. Add "prefix" attribute.
Joseph Myers [Mon, 2 May 2011 15:42:39 +0000 (16:42 +0100)]
gcc_update (gcc/config/m68k/m68k-tables.opt): New dependencies.
contrib:
* gcc_update (gcc/config/m68k/m68k-tables.opt): New dependencies.
gcc:
* config/m68k/genopt.sh, config/m68k/m68k-isas.def,
config/m68k/m68k-microarchs.def, config/m68k/m68k-opts.h,
config/m68k/t-opts: New files.
* config/m68k/m68k-tables.opt: New file (generated).
* config.gcc (fido-*-*, m68k-*-*): Add m68k/m68k-tables.opt to
extra_options and m68k/t-opts to tmake_file.
* config/m68k/m68k.c (m68k_library_id_string): More to m68k.opt.
(all_isas): Initialize using m68k-isas.def.
(all_microarchs): Initialize using m68k-microarchs.def.
(m68k_find_selection): Remove.
(m68k_handle_option): Don't assert that global structures are in
use. Use error_at. Access variables via opts pointer. Don't
handle -march=, -mcpu= and -mtune= here. Set gcc_options fields
directly for -m68020-40 and -m68020-60.
(m68k_option_override): Set m68k_arch_entry, m68k_cpu_entry and
m68k_tune_entry here.
* config/m68k/m68k.h (enum uarch_type, enum target_device): Move
to m68k-opts.h.
(m68k_library_id_string): Remove declaration.
* config/m68k/m68k.opt (config/m68k/m68k-opts.h): New
HeaderInclude.
(m68k_library_id_string): New Variable.
(march=, mcpu=, mtune=): Use Enum and Var.
varasm.c (output_constructor_regular_field): Compute zero-based index with double-ints.
2011-05-02 Richard Guenther <rguenther@suse.de>
* varasm.c (output_constructor_regular_field): Compute zero-based
index with double-ints. Make sure to ICE instead of producing
wrong code.
* cgraph.c (cgraph_add_thunk): Do not create new tree nodes
in asserts. Properly use a signed type.
Uros Bizjak [Mon, 2 May 2011 14:10:05 +0000 (16:10 +0200)]
sse.md (V): New mode iterator.
* config/i386/sse.md (V): New mode iterator.
(V_128): Rename from SSEMODE. Make V2DF mode conditional on
TARGET_SSE2.
(V_256): Rename from AVX256MODE.
(VF): Make V4SF mode unconditional. Add TARGET_SSE instruction
condition to all users.
(VF1): Ditto.
(VF2): Make V2DF mode unconditional. Add TARGET_SSE2 instruction
condition to all users.
(VF_128): Make V4SF mode unconditional.
(VF_256): Rename from AVX256MODEF2P.
(VI4F_128): Rename from SSEMODE4S.
(VI8F_128): Rename from SSEMODE2D.
(VI4F_256): Rename from AVX256MODE8P.
(VI8F_256): Rename from AVX256MODE4P.
(avxsizesuffix): Add V16HI, V4DI, V8HI and V2DI modes.
(ssescalarmodesuffix): Remove SF and DF modes.
(SSEMODE124): Remove.
(SSEMODE1248): Ditto.
(SSEMODEF2P): Ditto.
(AVXMODEF2P): Ditto.
(AVXMODEFDP): Ditto.
(AVXMODEFSP): Ditto.
(VEC_EXTRACT_MODE): Make V16QI, V8HI, V4SI, V2DI, V4SF and V2DF modes
unconditional.
(VEC_EXTRACT_EVENODD_MODE): Rename from SSEMODE_EO. Make V4SF mode
unconditional.
(xop_pcmov_<mode><avxsizesuffix>): Merge from xop_pcmov_<mode> and
xop_pcmov_<mode>256. Use V mode iterator.
Adjust RTX patterns globally for renamed mode attributes.
Jonathan Wakely [Mon, 2 May 2011 10:39:15 +0000 (10:39 +0000)]
status_cxx200x.xml: Update to reflect current status and FDIS content.
2011-05-02 Jonathan Wakely <jwakely.gcc@gmail.com>
* doc/xml/manual/status_cxx200x.xml: Update to reflect current status
and FDIS content.
* doc/xml/manual/documentation_hacking.xml: Fix typo.
* doc/html/*: Regenerate.
Jan Hubicka [Sun, 1 May 2011 19:11:07 +0000 (21:11 +0200)]
ipa-inline.c (caller_growth_limits): Fix thinko when
* ipa-inline.c (caller_growth_limits): Fix thinko when
* ipa-inline.c (caller_growth_limits): Fix thinko when
looking for largest stack frame.
* ipa-inline.h (dump_inline_summary): Declare.
* ipa-inline-analysis.c (dump_inline_edge_summary): Dump info
on stack usage.
(dump_inline_summary): Export.
(debug_inline_summary): Declare as DEBUG_FUNCTION.
Anatoly Sokolov [Sun, 1 May 2011 12:33:13 +0000 (16:33 +0400)]
reginfo.c (memory_move_cost): Change rclass argument type form 'enum reg_class' to reg_class_t.
* reginfo.c (memory_move_cost): Change rclass argument type form
'enum reg_class' to reg_class_t.
* reload.h (memory_move_cost): Update prototype.
* postreload.c reload_cse_simplify_set): Change type dclass var to
reg_class_t.
* ira-int.h (ira_allocate_cost_vector, ira_free_cost_vector):
Update prototype.
(ira_allocate_and_set_costs): Change aclass argument type form
'enum reg_class' to reg_class_t.
* ira-build.c (ira_allocate_cost_vector, ira_free_cost_vector):
Change aclass argument type to reg_class_t.
(update_conflict_hard_reg_costs): Change type aclass and pref vars
to reg_class_t.
* gcc/ira.c (setup_class_subset_and_memory_move_costs): Adjust
memory_move_cost call.
* config/ia64/ia64.c (ia64_register_move_cost): Remove 'from' and
'to' local var. Rename from_i and to_i arguments to 'from' and 'to'.
Change type tmp var to reg_class_t.
Jerry DeLisle [Sun, 1 May 2011 12:32:18 +0000 (12:32 +0000)]
re PR libfortran/48787 (Invalid UP/DOWN rounding with F editing)
2011-05-01 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/48787
* io/write_float.def (output_float): Gather up integer declarations and
add new 'p' for scale factor. Use 'p' in place of the 'dtp' reference
everywhere. For ROUND_UP scan the digit string and only perform
rounding if something other than '0' is found.
* cp-tree.h (LOOKUP_EXPLICIT_TMPL_ARGS): Define.
* call.c (build_new_function_call): Set it for TEMPLATE_ID_EXPRs.
(build_over_call): Use it to determine whether to emit a NULL
warning for template function instantiations.
(build_new_method_call): Set LOOKUP_EXPLICIT_TMPL_ARGS if
EXPLICIT_TARGS is set.
2011-04-29 Diego Novillo <dnovillo@google.com>
Le-Chun Wu <lcwu@google.com>
* call.c (conversion_null_warnings): Also handle assignments
when warning about NULL conversions.
Jan Hubicka [Sat, 30 Apr 2011 14:08:03 +0000 (16:08 +0200)]
ipa-inline.c (can_inline_edge_p): Disregard limits when inlining into function with flatten attribute.
* ipa-inline.c (can_inline_edge_p): Disregard limits when
inlining into function with flatten attribute.
(want_inline_small_function_p): Be more realistic about inlining
cold calls where callee size grows.
Paul Thomas [Sat, 30 Apr 2011 11:46:31 +0000 (11:46 +0000)]
re PR fortran/48746 (Matmul with allocate on assignment)
2011-04-30 Paul Thomas <pault@gcc.gnu.org>
PR fortran/48746
* trans-expr.c (fcncall_realloc_result): Set the bounds and the
offset so that the lbounds are one.
(gfc_trans_arrayfunc_assign): Add rank to arguments of above.
2011-04-30 Paul Thomas <pault@gcc.gnu.org>
PR fortran/48746
* gfortran.dg/realloc_on_assign_7.f03: Test bounds.
* dwarf2out.c (get_address_mode): New inline.
(mem_loc_descriptor): Add MEM_MODE parameter, adjust recursive calls,
if not dwarf_strict emit
DW_OP_GNU_{{const,regval,deref}_type,convert,reinterpret} when
desirable. Handle FLOAT_EXTEND, FLOAT_TRUNCATE, FLOAT,
UNSIGNED_FLOAT, FIX and UNSIGNED_FIX. Just return NULL for
FMA, STRICT_LOW_PART, CONST_VECTOR and CONST_FIXED.
(dwarf2out_frame_debug_cfa_expression, reg_loc_descriptor,
dw_loc_list_1, cst_pool_loc_descr, loc_list_from_tree): Adjust
mem_loc_descriptor callers.
(dwarf_stack_op_name, size_of_loc_descr, output_loc_operands,
output_loc_operands_raw, hash_loc_operands, compare_loc_operands):
Handle DW_OP_GNU_const_type, DW_OP_GNU_regval_type,
DW_OP_GNU_deref_type, DW_OP_GNU_convert and DW_OP_GNU_reinterpret.
(base_types): New variable.
(get_base_type_offset, calc_base_type_die_sizes,
base_type_for_mode, mark_base_types, base_type_cmp,
move_marked_base_types): New functions.
(calc_die_sizes): Assert that die_offset is 0 or equal to
next_die_offset.
(loc_descriptor): Only handle here lowpart SUBREGs of REG, for
others defer to mem_loc_descriptor. Adjust mem_loc_descriptor
callers. If not dwarf_strict, call mem_loc_descriptor even for
non-MODE_INT modes or MODE_INT modes larger than DWARF2_ADDR_SIZE.
(gen_subprogram_die): Don't give up on call site parameters
with non-integral or large integral modes. Adjust
mem_loc_descriptor callers.
(prune_unused_types): Call prune_unused_types_mark on base_types
vector entries.
(resolve_addr): Call mark_base_types.
(dwarf2out_finish): Call move_marked_base_types.