Jakub Jelinek [Thu, 8 Nov 2012 20:20:10 +0000 (21:20 +0100)]
re PR debug/53145 (gcc.dg/pch/save-temps-1.c)
PR debug/53145
* dwarf2out.c (gen_compile_unit_die): Don't call gen_producer_string
here, instead add "" if producer_string is NULL.
(dwarf2out_finish): Call gen_producer_string here, unconditionally
decrease refcount of the old indirect string and set val_str to
find_AT_string result.
Jan Hubicka [Thu, 8 Nov 2012 16:46:18 +0000 (17:46 +0100)]
re PR fortran/48636 (Enable more inlining with -O2 and higher)
PR middle-end/48636
* ipa-inline.c (big_speedup_p): New function.
(want_inline_small_function_p): Use it.
(edge_badness): Dump it.
* params.def (inline-min-speedup): New parameter.
* doc/invoke.texi (inline-min-speedup): Document.
David Edelsohn [Wed, 7 Nov 2012 21:03:08 +0000 (21:03 +0000)]
pr46728-[1234578].c: Tighten regex to ignore word powerpc.
* gcc.target/powerpc/pr46728-[1234578].c: Tighten regex to ignore
word powerpc.
* gcc.target/powerpc/vsx-mass-1.c: Escape [ and ] in regex.
* gcc.target/powerpc/loop_align.c: Skip on AIX.
* gcc.target/powerpc/ppc-pow.c: Allow dot symbols in branch.
* gcc.target/powerpc/tfmode_off.c: Skip on AIX.
Uros Bizjak [Wed, 7 Nov 2012 19:35:25 +0000 (20:35 +0100)]
re PR target/55224 (FAIL: gcc.target/i386/tailcall-1.c scan-assembler jmp)
PR target/55224
* config/i386/i386.c (ix86_function_ok_for_sibcall): Put back exception
to make a sibcall if one of the functions has void return type.
Uros Bizjak [Wed, 7 Nov 2012 19:30:48 +0000 (20:30 +0100)]
re PR target/55224 (FAIL: gcc.target/i386/tailcall-1.c scan-assembler jmp)
PR target/55224
* config/i386/i386.c (ix86_function_ok_for_sibcall): Put back exception
to make a sibcall if one of the functions has void return type.
re PR c/53063 (encode group options in the .opt files)
c-family/
2012-11-07 Manuel López-Ibáñez <manu@gcc.gnu.org>
PR c/53063
* c.opt(Warray-bounds,Wdelete-non-virtual-dtor,Wenum-compare,
Wmain,Woverlength-strings, Wunknown-pragmas,Wunused-macros):
Use LangEnabledBy.
(Wswitch,Wswitch-default,Wswitch-enum): Likewise. Move here from
common.opt.
(Wvariadic-macros): Init(1).
* c-opts.c (c_common_handle_option): Do not handle them
explicitly.
(c_common_post_options): Likewise.
(sanitize_cpp_opts): warn_unused_macros is now
cpp_warn_unused_macros.
(push_command_line_include): Likewise.
* c-common.c (warn_unknown_pragmas): Do not define.
* c-common.h (warn_unknown_pragmas): Do not declare.
gcc/
2012-11-07 Manuel López-Ibáñez <manu@gcc.gnu.org>
PR c/53063
* common.opt (Wswitch,Wswitch-default,Wswitch-enum): Move to c.opt.
fortran/
2012-11-07 Manuel López-Ibáñez <manu@gcc.gnu.org>
PR c/53063
* options.c (set_Wall): Do not set warn_switch here.
Martin Jambor [Wed, 7 Nov 2012 15:55:54 +0000 (16:55 +0100)]
re PR tree-optimization/53787 (Possible IPA-SRA / IPA-CP improvement)
2012-11-07 Martin Jambor <mjambor@suse.cz>
PR tree-optimization/53787
* ipa-cp.c (ipcp_value_source): New field offset.
(ipcp_agg_lattice): New type.
(ipcp_param_lattices): Likewise, move virt_call from ipcp_lattice here.
(ipcp_agg_lattice_pool): New variable.
(ipa_get_parm_lattices): New function.
(ipa_get_lattice): Turned into ipa_get_scalar_lat, use the above.
Adjusted all callers.
(print_lattice): New function.
(print_all_lattices): Use the above, also print aggregate lattices.
(set_agg_lats_to_bottom): New function.
(set_agg_lats_contain_variable): Likewise.
(set_all_contains_variable): Likewise.
(initialize_node_lattices): Also handle aggregate lattices, set
virt_call in ipcp_param_lattices.
(add_value_source): Handle offsets.
(add_value_to_lattice): Likewise.
(add_scalar_value_to_lattice): New function.
(propagate_vals_accross_pass_through): Use add_scalar_value_to_lattice.
(propagate_vals_accross_ancestor): Likewise.
(propagate_accross_jump_function): Renamed to
propagate_scalar_accross_jump_function, use
add_scalar_value_to_lattice.
(set_check_aggs_by_ref): New function.
(merge_agg_lats_step): Likewise.
(set_chain_of_aglats_contains_variable): Likewise.
(merge_aggregate_lattices): Likewise.
(propagate_constants_accross_call): Also handle aggregate lattices.
(hint_time_bonus): New function.
(context_independent_aggregate_values): Likewise.
(gather_context_independent_values): Also handle agggregate values.
(agg_jmp_p_vec_for_t_vec): New function.
(estimate_local_effects): Also handle agggregate values.
(add_all_node_vals_to_toposort): Likewise.
(ipcp_propagate_stage): Use struct ipcp_param_lattices.
(get_clone_agg_value): New function.
(cgraph_edge_brings_value_p): Also handle agggregate values.
(create_specialized_node): Likewise.
(find_more_values_for_callers_subset): Rename to
find_more_scalar_values_for_callers_subset. Modify dump.
(copy_plats_to_inter): New function.
(intersect_with_plats): Likewise.
(agg_replacements_to_vector): Likewise.
(intersect_with_agg_replacements): Likewise.
(find_aggregate_values_for_callers_subset): Likewise.
(known_aggs_to_agg_replacement_list): Likewise.
(cgraph_edge_brings_all_scalars_for_node): Likewise.
(cgraph_edge_brings_all_agg_vals_for_node): Likewise.
(perhaps_add_new_callers): Old functionality moved to
cgraph_edge_brings_all_scalars_for_node, call it and
cgraph_edge_brings_all_agg_vals_for_node.
(ipcp_val_in_agg_replacements_p): New function.
(decide_about_value): New function.
(decide_whether_version_node): A lot of functionality moved to
decide_about_value. Also handle agggregate values.
(ipcp_driver): Also allocate ipcp_agg_lattice_pool.
(pass_ipa_cp): Fill in new entries.
* ipa-prop.c (ipa_node_agg_replacements): New variable.
(free_parms_ainfo): New function.
(ipa_analyze_node): Use free_parms_ainfo to free stuff.
(ipa_find_agg_cst_for_param): Do not rely on offset ordering.
(ipa_set_node_agg_value_chain): New function.
(ipa_node_removal_hook): Also handle ipa_node_agg_replacements.
(ipa_node_duplication_hook): Likewise.
(ipa_free_all_structures_after_ipa_cp): Also free ipcp_agg_lattice_pool.
(ipa_free_all_structures_after_iinln): Likewise.
(ipa_dump_agg_replacement_values): New function.
(write_agg_replacement_chain): Likewise.
(read_agg_replacement_chain): Likewise.
(ipa_prop_write_all_agg_replacement): Likewise.
(read_replacements_section): Likewise.
(ipa_prop_read_all_agg_replacement): Likewise.
(adjust_agg_replacement_values): Likewise.
(ipcp_transform_function): Likewise.
* ipa-prop.h: Also define heap vector of ipa_agg_jf_item_t and of
ipa_agg_jump_function_t.
(ipa_node_params): Make lattices an array of ipcp_param_lattices.
(ipa_agg_replacement_value): New type and its vector.
(ipa_set_node_agg_value_chain) Declare.
(ipa_node_agg_replacements): Likewise.
(ipa_get_agg_replacements_for_node): New function.
(ipcp_agg_lattice_pool): Declare.
(ipa_dump_agg_replacement_values): Likewise.
(ipa_prop_write_all_agg_replacement): Likewise.
(ipa_prop_read_all_agg_replacement): Likewise.
(ipcp_transform_function): Likewise.
* ipa-inline-analysis.c (estimate_ipcp_clone_size_and_time): Pass around
known aggregates and hints.
* ipa-inline.h: include ipa-prop.h.
(estimate_ipcp_clone_size_and_time): Adjust declaration.
* lto-streamer.h (lto_section_type): New item
LTO_section_ipcp_transform.
* lto-section-in.c (lto_section_name): New element ipcp_trans.
* params.def (PARAM_IPA_CP_LOOP_HINT_BONUS): New parameter.
* Makefile.in (IPA_INLINE_H): New. Use everywhee instead of
ipa-inline.h.
Uros Bizjak [Wed, 7 Nov 2012 12:15:59 +0000 (13:15 +0100)]
i386.c (enum upper_128bits_state): Remove.
* config/i386/i386.c (enum upper_128bits_state): Remove.
(check_avx256_store): Use bool pointer argument.
(ix86_avx_u128_mode_needed): Use note_stores also for CALL insns.
* config/i386/predicates.md (vzeroupper_operation): Use match_test.
Yufeng Zhang [Wed, 7 Nov 2012 11:01:46 +0000 (11:01 +0000)]
aarch64.c (aarch64_expand_prologue): For the load-pair with writeback instruction...
gcc/ChangeLog
2012-11-07 Yufeng Zhang <yufeng.zhang@arm.com>
* config/aarch64/aarch64.c (aarch64_expand_prologue): For the
load-pair with writeback instruction, replace
aarch64_set_frame_expr with add_reg_note (REG_CFA_ADJUST_CFA);
add new local variable 'cfa_reg' and use it.
* ipa-inline-analysis.c (true_predicate, single_cond_predicate,
reset_inline_edge_summary): Fix
formatting.
(account_size_time): Bump up the limit on number of size/time entries to
256.
(estimate_function_body_sizes): Work in reverse postorder.
Jakub Jelinek [Wed, 7 Nov 2012 07:50:01 +0000 (08:50 +0100)]
re PR debug/54693 (VTA guality issues with loops)
PR debug/54693
* tree-flow.h (propagate_threaded_block_debug_into): New prototype.
* tree-ssa-threadedge.c (propagate_threaded_block_debug_into): No
longer static.
* tree-ssa-loop-ch.c (copy_loop_headers): Use it.
Arithmetic sample for timevar log files
"Log0/*perf"
and selecting lines containing "TOTAL" with desired confidence 95 is
trial count is 4, mean is 443.022 (95% confidence in 440.234 to 445.811),
std.deviation is 1.75264, std.error is 0.876322
Arithmetic sample for timevar log files
"Log3/*perf"
and selecting lines containing "TOTAL" with desired confidence 95 is
trial count is 4, mean is 441.302 (95% confidence in 436.671 to 445.934),
std.deviation is 2.91098, std.error is 1.45549
The first sample appears to be 0.39% larger,
with 60% confidence of being larger.
To reach 95% confidence, you need roughly 14 trials,
assuming the standard deviation is stable, which is iffy.
* dwarf2.h (dwarf_location_list_entry_type): New enum with fields
DW_LLE_GNU_end_of_list_entry, DW_LLE_GNU_base_address_selection_entry,
DW_LLE_GNU_start_end_entry and DW_LLE_GNU_start_length_entry.
generic-morestack.c (__generic_morestack): Align the returned stack pointer to a 32 byte boundary.
* generic-morestack.c (__generic_morestack): Align the returned
stack pointer to a 32 byte boundary.
* config/i386/morestack.S (__morestack_non_split) [32-bit]: Don't
increment the return address until we have decided that we don't
have a varargs function.
(__morestack) [32-bit]: Align stack correctly when calling C
functions.
(__morestack) [64-bit]: Likewise.
Jan Hubicka [Tue, 6 Nov 2012 16:22:45 +0000 (17:22 +0100)]
cfgloopanal.c (get_loop_hot_path): New function.
* cfgloopanal.c (get_loop_hot_path): New function.
* tree-ssa-lop-ivcanon.c (struct loop_size): Add CONSTANT_IV,
NUM_NON_PURE_CALLS_ON_HOT_PATH, NUM_PURE_CALLS_ON_HOT_PATH,
NUM_BRANCHES_ON_HOT_PATH.
(tree_estimate_loop_size): Compute the new values.
(try_unroll_loop_completely): Disable unrolling of loops with only
calls or too many branches.
(tree_unroll_loops_completely): Deal also with outer loops of hot loops.
* cfgloop.h (get_loop_hot_path): Declare.
* params.def (PARAM_MAX_PEEL_BRANCHES): New parameters.
* invoke.texi (max-peel-branches): Document.
* gcc.dg/tree-ssa/loop-1.c: Make to look like a good unroling candidate still.
* gcc.dg/tree-ssa/loop-23.c: Likewise.
* gcc.dg/tree-ssa/cunroll-1.c: Unrolling now happens early.
* gcc.dg/tree-prof/unroll-1.c: Remove confused dg-options.
Oleg Endo [Tue, 6 Nov 2012 11:55:43 +0000 (11:55 +0000)]
re PR target/54089 ([SH] Refactor shift patterns)
PR target/54089
* config/sh/sh.c (and_xor_ior_costs, addsubcosts): Double the costs for
ops larger than SImode.
* config/sh/sh.md (rotcl, *rotcl): New insns and splits.
(ashldi3_k): Convert to insn_and_split and use new rotcl insn.
Ed Schonberg [Tue, 6 Nov 2012 10:47:21 +0000 (10:47 +0000)]
sem_res.adb (Preanalyze_And_Resolve): In Alfa mode do not disable checks...
2012-11-06 Ed Schonberg <schonberg@adacore.com>
* sem_res.adb (Preanalyze_And_Resolve): In Alfa mode do not
disable checks, so that flags can be properly set on expressions
that are not further expanded.
Gary Dismukes [Tue, 6 Nov 2012 10:22:42 +0000 (10:22 +0000)]
exp_attr.adb (Expand_N_Attribute_Reference): Apply a predicate check when evaluating the attribute Valid...
2012-11-06 Gary Dismukes <dismukes@adacore.com>
* exp_attr.adb (Expand_N_Attribute_Reference): Apply a predicate
check when evaluating the attribute Valid, and issue a warning
about infinite recursion when the check occurs within the
predicate function of the prefix's subtype.
* exp_ch4.adb (Expand_N_In): Remove test for Is_Discrete_Type
when we're checking that there's no predicate check function as a
condition for substituting a Valid check for a scalar membership
test (substitution should be suppressed for any kind of scalar
subtype with a predicate check). Also, don't emit a predicate
check when the right operand is a range.
* einfo.adb: Include Loop_Entry_Attributes to the list of
Node/List/Elist10 usage.
(Loop_Entry_Attributes): New routine.
(Set_Loop_Entry_Attributes): New routine.
(Write_Field10_Name): Add an output string for Loop_Entry_Attributes.
* einfo.ads: Define new attribute Loop_Entry_Attributes along
with its usage in nodes.
(Loop_Entry_Attributes): New routine and dedicated pragma Inline.
(Set_Loop_Entry_Attributes): New routine and dedicated pragma Inline.
* exp_attr.adb (Expand_N_Attribute_Reference): Do not expand
Attribute_Loop_Entry here.
* exp_ch5.adb: Add with and use clause for Elists;
(Expand_Loop_Entry_Attributes): New routine.
(Expand_N_Loop_Statement): Add a call to Expand_Loop_Entry_Attributes.
* exp_prag.adb (Expand_Pragma_Loop_Assertion): Specialize the
search to include multiple nested loops produced by the expansion
of Ada 2012 array iterator.
* sem_attr.adb: Add with and use clause for Elists.
(Analyze_Attribute): Check the legality of attribute Loop_Entry.
(Resolve_Attribute): Nothing to do for Loop_Entry.
(S14_Attribute): New routine.
* snames.ads-tmpl: Add a comment on entries marked with
HiLite. Add new name Name_Loop_Entry. Add new attribute
Attribute_Loop_Entry.
Arnaud Charlet [Tue, 6 Nov 2012 10:14:13 +0000 (11:14 +0100)]
[multiple changes]
2012-11-06 Geert Bosch <bosch@adacore.com>
* eval_fat.adb (Machine, Succ): Fix front end to support static
evaluation of attributes on targets with both VAX and IEEE float.
* sem_util.ads, sem_util.adb (Has_Denormals, Has_Signed_Zeros):
New type-specific functions. Previously we used Denorm_On_Target
and Signed_Zeros_On_Target directly, but that doesn't work well
for OpenVMS where a single target supports both floating point
with and without signed zeros.
* sem_attr.adb (Attribute_Denorm, Attribute_Signed_Zeros): Use
new Has_Denormals and Has_Signed_Zeros functions to support both
IEEE and VAX floating point on a single target.
2012-11-06 Tristan Gingold <gingold@adacore.com>
* bindgen.adb (System_Interrupts_Used): New variable.
(Gen_Adainit): Declare and call
Install_Restricted_Handlers_Sequential if System.Interrupts is
used when elaboration policy is sequential.
Arnaud Charlet [Tue, 6 Nov 2012 10:11:20 +0000 (11:11 +0100)]
[multiple changes]
2012-11-06 Tristan Gingold <gingold@adacore.com>
* fe.h (Get_Vax_Real_Literal_As_Signed): Declare.
* eval_fat.adb, eval_fat.ads (Decompose_Int): Move spec in package spec.
* exp_vfpt.adb, exp_vfpt.ads (Vax_Real_Literal_As_Signed): New function.
(Expand_Vax_Real_Literal): Remove.
* exp_ch2.adb (Expand_N_Real_Literal): Do nothing.
* sem_eval.adb (Expr_Value_R): Remove special Vax float case,
as this is not anymore a special case.
2012-11-06 Yannick Moy <moy@adacore.com>
* uintp.ads: Minor correction of typo in comment.
2012-11-06 Ed Schonberg <schonberg@adacore.com>
* sem_prag.adb (Analyze_Pragnma, case Unchecked_Union): remove
requirement that discriminants of an unchecked_union must have
defaults.