Larger MOVE_RATIO will always make code faster. 17 is the number with
smaller code sizes for Lakemont.
gcc/
PR target/72839
* config/i386/i386.c (lakemont_cost): Set MOVE_RATIO to 17.
gcc/testsuite/
PR target/72839
* gcc.target/i386/pr72839.c: New test.
From-SVN: r239578
Hello,
For -gdwarf-3 and newer, the DWARF back-end sometimes generates DWARF
procedures to factorize complex location descriptions. DWARF procedures
can be materialized as DW_TAG_dwarf_procedure DIEs, but actually any DIE
that can hold a DW_AT_location attribute is also accepted.
Unlike what I thought at some point, the DW_TAG_dwarf_procedure tag was
introduced in the DWARFv3 standard, not the DWARFv4 one, so the back-end
can always emit DW_TAG_dwarf_procedure DIEs, as this simplifies code and
prevents the types pruning pass from missing a DWARF procedure.
Boostrapped and regtested on x86_64-linux: no regression. Ok to commit?
Thank you in advance!
gcc/
* dwarf2out.c (copy_dwarf_procedure): Remove obsolete comment.
(new_dwarf_proc_die): Emit DW_TAG_dwarf_procedure DIEs even for
-gdwarf-3.
(function_to_dwarf_procedure): Update comment.
From-SVN: r239575
* doc/xml/manual/test.xml: Improve documentation of test targets.
Document new-abi-baseline, check-debug, and check-parallel targets.
From-SVN: r239573
* doc/xml/manual/build_hacking.xml: Improve markup.
* doc/xml/manual/test.xml: Likewise. Change section title from "Test"
to "Testing".
* doc/xml/faq.xml: Change link text to "Testing".
From-SVN: r239571
Selftests can use class selftest::temp_source_file to write out files
for testing input-handling, and the files are unlinked in the dtor.
This leads to stale entries in input.c's cache of file content, which
could lead to errors if a temporary filename gets reused during a run
of the selftests.
We don't normally expect files to be "deleted from under us", so
special-case this by adding a special way for temp_source_file's
dtor to purge any cache entries referring to it.
gcc/ChangeLog:
* input.c (diagnostics_file_cache_forcibly_evict_file): New
function.
* input.h (diagnostics_file_cache_forcibly_evict_file): New
declaration.
* selftest.c (selftest::temp_source_file::~temp_source_file):
Evict m_filename from the diagnostic file cache.
From-SVN: r239570
2016-08-18 Richard Biener <rguenther@suse.de>
* tree-pass.h (make_pass_materialize_all_clones): Declare.
* ipa.c (pass_data_materialize_all_clones, pass_materialize_all_clones,
make_pass_materialize_all_clones): New simple IPA pass encapsulating
clone materialization.
* passes.def (all_late_ipa_passes): Start with
pass_materialize_all_clones.
* cgraphunit.c (symbol_table::compile): Remove call to
materialize_all_clones.
* tree-into-ssa.c: Include statistics.h.
(update_ssa): Count number of times we do incremental/rewrite
SSA update.
From-SVN: r239567
2016-08-18 Richard Biener <rguenther@suse.de>
PR tree-optimization/77282
* tree-ssa-pre.c (eliminate_dom_walker::before_dom_children):
When doing auto-parallelizing also prevent use of PHIs that
carry dependences across loop backedges.
From-SVN: r239565
On behalf of Tamar Christina <tamar.christina@arm.com>.
gcc/
* varasm.c (default_use_anchors_for_symbol_p): Reject too large decls.
Co-Authored-By: Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
From-SVN: r239561
* config/i386/i386.c (enum ix86_builtins): Remove IX86_BUILTIN_*
codes that appear in bdesc_* arrays, instead include i386-builtin.def
twice to define those.
(bdesc_comi, bdesc_pcmpestr, bdesc_pcmpistr, bdesc_special_args,
bdesc_args, bdesc_round_args, bdesc_mpx, bdesc_mpx_const,
bdesc_multi_arg): Define by including i386-builtin.def the third time.
* config/i386/i386-builtin.def: New file.
From-SVN: r239559
gcc/ChangeLog:
* input.c (get_source_range_for_char): Rename to...
(selftest::get_source_range_for_char): ...this, and move within
the #if CHECKING_P guard.
(get_num_source_ranges_for_substring): Rename to...
(selftest::get_num_source_ranges_for_substring): ...this, move
within the #if CHECKING_P guard, and make static.
(selftest::assert_num_substring_ranges): Initialize
actual_num_ranges.
From-SVN: r239550
This patch fixes a case where reload blindly assumes a subreg mem is
OK if its address has been partially reloaded by legitimize_reload_address.
PR rtl-optimization/72771
* reload.c (find_reloads): Don't assume that a subreg mem is OK
when find_reloads_toplev returns address_reloaded==-1.
(alternative_allows_const_pool_ref): Update comment.
testsuite/
* gcc.c-torture/compile/pr72771.c: New.
From-SVN: r239549
PR fortran/67496
* trans-array.c (trans_array_constructor): Load
expr->ts.u.cl->length_from_typespec only if expr->ts.type is
BT_CHARACTER.
* gfortran.dg/pr67496.f90: New test.
From-SVN: r239544
PR middle-end/77259
* tree-ssa-pre.c (eliminate_dom_walker::before_dom_children): If
turning a call into __builtin_unreachable-like noreturn call, adjust
gimple_call_set_fntype.
* tree-cfgcleanup.c (fixup_noreturn_call): Remove lhs also if
gimple_call_fntype has void return type.
* g++.dg/ipa/devirt-52.C: New test.
From-SVN: r239537
* testsuite/ext/profile/all.cc: Use effective target instead of
-std=gnu++11. Use dg-additional-options instead of repeating options.
From-SVN: r239536
* testsuite/20_util/bind/ref_neg.cc: Use effective target instead of
-std=gnu++11. Add -fno-show-columns to dg-options. Use dg-prune-output
instead of dg-excess-errors.
From-SVN: r239535
2016-08-17 Richard Biener <rguenther@suse.de>
PR tree-optimization/76490
* tree-vrp.c (update_value_range): Preserve overflow infinities
when intersecting with ranges from get_range_info.
(operand_less_p): Handle overflow infinities correctly.
(value_range_constant_singleton): Use vrp_operand_equal_p
to handle overflow max/min correctly.
(vrp_valueize): Likewise.
(union_ranges): Likewise.
(intersect_ranges): Likewise.
(vrp_visit_phi_node): Improve iteration limitation to only
apply when we'll possibly re-visit the PHI via a changed argument
on the backedge.
* gfortran.fortran-torture/compile/pr76490.f90: New testcase.
* gcc.dg/pr52904.c: XFAIL.
From-SVN: r239529
2016-08-17 Thomas Preud'homme <thomas.preudhomme@arm.com>
gcc/
* config/arm/t-aprofile (MULTILIB_EXCEPTIONS): Rewrite into ...
(MULTILIB_REQUIRED): This by specifying multilib needing to be built
rather than those that should not be built.
From-SVN: r239528
2016-08-17 Richard Biener <rguenther@suse.de>
* tree-ssa.c: Include tree-cfg.h and tree-dfa.h.
(verify_vssa): New function verifying virtual SSA form.
(verify_ssa): Call it.
* tree-ssa-loop-manip.c (slpeel_update_phi_nodes_for_guard2):
Do not apply loop-closed SSA handling to virtuals.
* ssa-iterators.h (op_iter_init): Handle GIMPLE_TRANSACTION.
* tree-into-ssa.c (prepare_use_sites_for): Skip virtual SSA names
when rewriting their symbol.
(prepare_def_site_for): Likewise.
* tree-chkp-opt.c (chkp_reduce_bounds_lifetime): Clear virtual
operands of moved stmts.
From-SVN: r239524
2016-08-17 Richard Biener <rguenther@suse.de>
PR tree-optimization/23855
* tree-ssa-loop-unswitch.c: Include tree-ssa-loop-manip.h.
(tree_unswitch_outer_loop): Iterate find_loop_guard as long as we
find guards to hoist. Do not update SSA form but rewrite virtuals
into loop closed SSA.
(find_loop_guard): Adjust to skip already hoisted guards. Do
not mark virtuals for renaming or update SSA form.
* gcc.dg/loop-unswitch-2.c: Adjust.
From-SVN: r239523
* config/i386/i386.c (enum ix86_builtins): Reorder enumerators, so
that builtins not mentioned in bdesc_* arrays come first, then
the ones mentioned in bdesc_* arrays in the order they appear in
the arrays in between IX86_BUILTIN__BDESC_*_FIRST and
IX86_BUILTIN__BDESC_*_LAST enumerator.
(bdesc_mpx): Fix up a comment typo.
(bdesc_multi_arg): Remove __builtin_ia32_vpcomne[bwdq] and
__builtin_ia32_vpcomneu[bwdq] builtins.
(BDESC_VERIFY, BDESC_VERIFYS): Define.
(ix86_init_mmx_sse_builtins, ix86_init_mpx_builtins): Verify
enum ix86_builtins ordering.
(ix86_expand_builtin): Use enum ix86_builtins ordering assumption
for direct bdesc_* array member access instead of searching all the
arrays until an fcode match is found.
From-SVN: r239512
* config/i386/i386.md (*ashl<mode>3_mask): Rewrite define_insn
pattern as define_insn_and_split. Split insn before reload to
ashl<mode>3_1.
(*<shift_insn><mode>3_mask): Ditto. Split insn before reload to
<shift_insn><mode>3_1.
(*<rotate_insn><mode>3_mask): Ditto. Split insn before reload to
<rotate_insn><mode>3_1.
From-SVN: r239511
gcc/c-family/ChangeLog:
PR c/72857
* c-common.c (substring_loc::get_range): Rename to...
(substring_loc::get_location): ...this, converting param from a
source_range * to a location_t *. Call
get_source_location_for_substring rather than
get_source_range_for_substring, and pass in m_caret_idx.
* c-common.h (substring_loc::substring_loc): Add param "caret_idx".
(substring_loc::get_range): Replace with...
(substring_loc::get_location): ...this.
(substring_loc::set_caret_index): New method.
(substring_loc): Add field m_caret_idx.
* c-format.c (format_warning_va): Update for above changes.
Rename local "substring_loc" to "fmt_substring_loc" to avoid
clashing with type name.
(format_warning_at_char): Add caret_idx param to substring_loc ctor.
(check_argument_type): Likewise.
(format_type_warning): Rename param "fmt_loc" to "whole_fmt_loc"
Use a copy when emitting warnings, setting the caret index from TYPE.
gcc/ChangeLog:
PR c/72857
* input.c (get_source_range_for_substring): Rename to...
(get_source_location_for_substring): ...this, adding param
"caret_idx", and converting output param from source_range * to
location_t *.
(get_source_range_for_char): New function.
(get_num_source_ranges_for_substring): Update comment to reflect
above renaming.
(assert_char_at_range): Update to use get_source_range_for_char
rather than get_source_range_for_substring.
(test_lexer_string_locations_concatenation_2): Likewise.
* substring-locations.h (get_source_range_for_substring): Rename
to...
(get_source_location_for_substring): ...this, and adding param
"caret_idx", and converting output param from source_range * to
location_t *.
gcc/testsuite/ChangeLog:
PR c/72857
* gcc.dg/format/asm_fprintf-1.c: Restore column numbers
for embedded NUL.
* gcc.dg/format/c90-printf-1.c: Restore column numbers.
* gcc.dg/format/diagnostic-ranges.c (test_hex): Update expected
caret placement.
(test_oct): Likewise.
(test_multiple): Likewise.
(test_field_width_specifier): Likewise.
(test_field_width_specifier_2): New function.
(test_field_precision_specifier): New function.
(test_embedded_nul): Update expected caret placement.
(test_non_contiguous_strings): Update line number.
* gcc.dg/plugin/diagnostic-test-string-literals-1.c
(__emit_string_literal_range): Add "caret_idx" param.
(test_simple_string_literal): Add value for new param, updating
expected output..
(test_concatenated_string_literal): Likewise.
(test_multiline_string_literal): Likewise.
(test_hex): Likewise.
(test_oct): Likewise.
(test_multiple): Likewise.
(test_ucn4): Likewise.
(test_ucn8): Likewise.
(test_u8): Likewise.
(test_u): Likewise; update expected message, from "range" to
"location".
(test_U): Likewise.
(test_L): Likewise.
(test_macro): Add value for new param.
* gcc.dg/plugin/diagnostic-test-string-literals-2.c
(__emit_string_literal_range): Add "caret_idx" param.
(test_stringified_token_1): Add value for new param. Update
expected message, from "range" to "location".
(test_stringized_token_2): Likewise, adding param to macro.
(test_stringified_token_3): Likewise.
* gcc.dg/plugin/diagnostic_plugin_test_string_literals.c
(emit_warning): Convert param from source_range to location_t.
(test_string_literals): Add caret_idx param, and use it when
constructing a substring_loc. Update error message, from
"range" to "location".
From-SVN: r239510
PR target/71910
* tree-cfg.c (execute_fixup_cfg): Add node variable, use it. Before inlining,
add cgraph edge for the added __builtin_unreachable call.
* g++.dg/gomp/pr71910.C: New test.
From-SVN: r239508