gcc.git
6 years agostrlenopt-46.c: Define strnlen for targets like Solaris 10 that don't define the...
Martin Sebor [Fri, 29 Jun 2018 16:37:54 +0000 (16:37 +0000)]
strlenopt-46.c: Define strnlen for targets like Solaris 10 that don't define the function.

gcc/testsuite/ChangeLog:

* gcc.dg/strlenopt-46.c: Define strnlen for targets like Solaris 10
that don't define the function.

From-SVN: r262255

6 years agore PR c++/86184 (Conditional expression with omitted operand cannot use rvalue of...
Marek Polacek [Fri, 29 Jun 2018 15:25:14 +0000 (15:25 +0000)]
re PR c++/86184 (Conditional expression with omitted operand cannot use rvalue of type convertible to bool)

PR c++/86184
* tree.c (cp_save_expr): Don't call save_expr for TARGET_EXPRs.

* g++.dg/ext/cond3.C: New test.

From-SVN: r262254

6 years agoWhen using -fprofile-generate=/some/path mangle absolute path of file (PR lto/85759).
Martin Liska [Fri, 29 Jun 2018 14:03:36 +0000 (16:03 +0200)]
When using -fprofile-generate=/some/path mangle absolute path of file (PR lto/85759).

2018-06-29  Martin Liska  <mliska@suse.cz>

PR lto/85759
* coverage.c (coverage_init): Mangle full path name.
* doc/invoke.texi: Document the change.
* gcov-io.c (mangle_path): New.
* gcov-io.h (mangle_path): Likewise.
* gcov.c (mangle_name): Use mangle_path for path mangling.

From-SVN: r262251

6 years ago[arm] Avoid STRD with odd register for TARGET_ARM in output_move_double
Kyrylo Tkachov [Fri, 29 Jun 2018 13:36:35 +0000 (13:36 +0000)]
[arm] Avoid STRD with odd register for TARGET_ARM in output_move_double

In this testcase the user forces an odd register as the starting reg for a DFmode value.
The output_move_double function tries to store that using an STRD instruction.
But for TARGET_ARM the starting register of an STRD must be an even one.
This is always the case with compiler-allocated registers for DFmode values, but the
inline assembly forced our hand here.

This patch  restricts the STRD-emitting logic in output_move_double to not avoid
odd-numbered source registers in STRD.
I'm not a fan of the whole function, we should be exposing a lot of the logic in there
to RTL rather than at the final output stage, but that would need to be fixed separately.

* config/arm/arm.c (output_move_double): Don't allow STRD instructions
if starting source register is not even.

* gcc.target/arm/arm-soft-strd-even.c: New test.

From-SVN: r262250

6 years agocontrib: introduce Vim addon directory, add match.pd syntax plugin
Alexander Monakov [Fri, 29 Jun 2018 13:14:46 +0000 (16:14 +0300)]
contrib: introduce Vim addon directory, add match.pd syntax plugin

* vim-gcc-dev/README: New file.
* vim-gcc-dev/ftdetect/gcc-dev.vim: New file.
* vim-gcc-dev/syntax/gcc-match.vim: New file.
* gimple.vim: Move under vim-gcc-dev/syntax/.
* gcc-rtl.vim: Likewise.

From-SVN: r262249

6 years ago[testsuite/guality] Use line number vars in gdb-test
Tom de Vries [Fri, 29 Jun 2018 11:25:49 +0000 (11:25 +0000)]
[testsuite/guality] Use line number vars in gdb-test

2018-06-29  Tom de Vries  <tdevries@suse.de>

* gcc.dg/guality/pr45882.c (foo): Add line number var for breakpoint
line, and use it.
* lib/gcc-dg.exp (get-absolute-line): Factor out of ...
(process-message): ... here.
* lib/gcc-gdb-test.exp (gdb-test): Use get-absolute-line.

From-SVN: r262248

6 years agoFix bit-test expansion for single cluster (PR tree-optimization/86263).
Martin Liska [Fri, 29 Jun 2018 10:57:00 +0000 (12:57 +0200)]
Fix bit-test expansion for single cluster (PR tree-optimization/86263).

2018-06-29  Martin Liska  <mliska@suse.cz>

        PR tree-optimization/86263
* tree-switch-conversion.c (switch_decision_tree::try_switch_expansion):
        Make edge redirection.
2018-06-29  Martin Liska  <mliska@suse.cz>

        PR tree-optimization/86263
* gcc.dg/tree-ssa/pr86263.c: New test.

From-SVN: r262247

6 years agodumpfile.c: add indentation via DUMP_VECT_SCOPE
David Malcolm [Fri, 29 Jun 2018 09:56:40 +0000 (09:56 +0000)]
dumpfile.c: add indentation via DUMP_VECT_SCOPE

This patch adds a concept of nested "scopes" to dumpfile.c's dump_*_loc
calls, and wires it up to the DUMP_VECT_SCOPE macro in tree-vectorizer.h,
so that the nested structure is shown in -fopt-info by indentation.

For example, this converts -fopt-info-all e.g. from:

test.c:8:3: note: === analyzing loop ===
test.c:8:3: note: === analyze_loop_nest ===
test.c:8:3: note: === vect_analyze_loop_form ===
test.c:8:3: note: === get_loop_niters ===
test.c:8:3: note: symbolic number of iterations is (unsigned int) n_9(D)
test.c:8:3: note: not vectorized: loop contains function calls or data references that cannot be analyzed
test.c:8:3: note: vectorized 0 loops in function

to:

test.c:8:3: note: === analyzing loop ===
test.c:8:3: note:  === analyze_loop_nest ===
test.c:8:3: note:   === vect_analyze_loop_form ===
test.c:8:3: note:    === get_loop_niters ===
test.c:8:3: note:   symbolic number of iterations is (unsigned int) n_9(D)
test.c:8:3: note:   not vectorized: loop contains function calls or data references that cannot be analyzed
test.c:8:3: note: vectorized 0 loops in function

showing that the "symbolic number of iterations" message is within
the "=== analyze_loop_nest ===" (and not within the
"=== vect_analyze_loop_form ===").

This is also enabling work for followups involving optimization records
(allowing the records to directly capture the nested structure of the
dump messages).

gcc/ChangeLog:
* dumpfile.c (dump_loc): Add indentation based on scope depth.
(dump_scope_depth): New variable.
(get_dump_scope_depth): New function.
(dump_begin_scope): New function.
(dump_end_scope): New function.
* dumpfile.h (get_dump_scope_depth): New declaration.
(dump_begin_scope): New declaration.
(dump_end_scope): New declaration.
(class auto_dump_scope): New class.
(AUTO_DUMP_SCOPE): New macro.
* tree-vectorizer.h (DUMP_VECT_SCOPE): Reimplement in terms of
AUTO_DUMP_SCOPE.

From-SVN: r262246

6 years agoAdd whitespace to some dejagnu directives in libstdc++ tests
Jonathan Wakely [Fri, 29 Jun 2018 09:54:07 +0000 (10:54 +0100)]
Add whitespace to some dejagnu directives in libstdc++ tests

* testsuite/20_util/add_rvalue_reference/requirements/alias_decl.cc:
Add whitespace to dejagnu directive.
* testsuite/23_containers/array/element_access/at_neg.cc: Likewise.

From-SVN: r262245

6 years agotree-vect-data-refs.c (vect_analyze_data_ref_dependences): Assert compute_all_depende...
Richard Biener [Fri, 29 Jun 2018 09:49:14 +0000 (09:49 +0000)]
tree-vect-data-refs.c (vect_analyze_data_ref_dependences): Assert compute_all_dependences succeeds.

2018-06-29  Richard Biener  <rguenther@suse.de>

* tree-vect-data-refs.c (vect_analyze_data_ref_dependences): Assert
compute_all_dependences succeeds.
* tree-vect-loop.c (vect_get_datarefs_in_loop): Fail early if we
exceed --param loop-max-datarefs-for-datadeps.

From-SVN: r262244

6 years ago* config/rs6000/t-rs6000: Append rs6000-modes.h to TM_H.
Jakub Jelinek [Fri, 29 Jun 2018 07:38:59 +0000 (09:38 +0200)]
* config/rs6000/t-rs6000: Append rs6000-modes.h to TM_H.

From-SVN: r262241

6 years agoDaily bump.
GCC Administrator [Fri, 29 Jun 2018 00:16:42 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r262240

6 years agoruntime: don't stat a NULL filename
Ian Lance Taylor [Thu, 28 Jun 2018 20:54:04 +0000 (20:54 +0000)]
runtime: don't stat a NULL filename

    Noticed in https://gcc.gnu.org/PR86331.

    Reviewed-on: https://go-review.googlesource.com/121417

From-SVN: r262234

6 years agoC++: less verbose error-recovery for version conflict markers
David Malcolm [Thu, 28 Jun 2018 20:24:49 +0000 (20:24 +0000)]
C++: less verbose error-recovery for version conflict markers

gcc/cp/ChangeLog:
* parser.c (cp_parser_error_1): After issuing a conflict marker
error, consume tokens until the end of the source line.

gcc/testsuite/ChangeLog:
* g++.dg/conflict-markers-2.C: New test.

From-SVN: r262232

6 years agoPR c++/86342 - -Wdeprecated-copy and system headers.
Jason Merrill [Thu, 28 Jun 2018 20:22:21 +0000 (16:22 -0400)]
PR c++/86342 - -Wdeprecated-copy and system headers.

* decl2.c (cp_warn_deprecated_use): Don't warn about declarations
in system headers.

From-SVN: r262231

6 years agop9-extract-1.c: Add test case.
Carl Love [Thu, 28 Jun 2018 19:45:07 +0000 (19:45 +0000)]
p9-extract-1.c: Add test case.

gcc/testsuite/ChangeLog:

2018-06-28  Carl Love  <cel@us.ibm.com>

* gcc.target/p9-extract-1.c: Add test case.
* gcc.target/builtins-3-p9-runnable.c: Add test case to match
name in ABI.

From-SVN: r262230

6 years agore PR target/86348 (ICE: in curr_insn_transform, at lra-constraints.c:3919: unable...
Uros Bizjak [Thu, 28 Jun 2018 19:02:02 +0000 (21:02 +0200)]
re PR target/86348 (ICE: in curr_insn_transform, at lra-constraints.c:3919: unable to generate reloads for: vec_extractv4si_0_zext_sse4)

PR target/86348
* config/i386/sse.md (*vec_extractv4si_0_zext_sse4): Use
alternative 0 in preferred_for_speed attribute.

testsuite/ChangeLog:

PR target/86348
* gcc.target/i386/pr86348.c: New test.

From-SVN: r262228

6 years agoFix insn length for pdp11 shift patterns.
Paul Koning [Thu, 28 Jun 2018 18:50:12 +0000 (14:50 -0400)]
Fix insn length for pdp11 shift patterns.

* config/pdp11/pdp11-protos.h (pdp11_shift_length): New function.
* config/pdp11/pdp11.c (pdp11_shift_length): New function.
* config/pdp11/pdp11.h (ADJUST_INSN_LENGTH): Remove.
* config/pdp11/pdp11.md: Correct "length" attribute calculation
for shift insn patterns.

From-SVN: r262227

6 years agore PR go/86343 (types built by GO share TYPE_FIELDS in unsupported way)
Ian Lance Taylor [Thu, 28 Jun 2018 17:46:36 +0000 (17:46 +0000)]
re PR go/86343 (types built by GO share TYPE_FIELDS in unsupported way)

PR go/86343
* go-gcc.cc (Gcc_backend::set_placeholder_struct_type): Call
build_variant_type_copy rather than build_distinct_type_copy.

From-SVN: r262225

6 years ago[testsuite] Fix f16_mov_immediate_3.c
Wilco Dijkstra [Thu, 28 Jun 2018 16:09:39 +0000 (16:09 +0000)]
[testsuite] Fix f16_mov_immediate_3.c

Fix and simplify the testcase so it generates dup even on latest trunk.

    testsuite/
* gcc.target/aarch64/f16_mov_immediate_3.c: Fix testcase.

From-SVN: r262222

6 years agore PR fortran/82865 (Option -fdec collides with PDT)
Fritz Reese [Thu, 28 Jun 2018 15:31:24 +0000 (15:31 +0000)]
re PR fortran/82865 (Option -fdec collides with PDT)

2018-06-28  Fritz Reese  <fritzoreese@gmail.com>

    gcc/fortran/ChangeLog:

PR fortran/82865
* decl.c (gfc_match_type): Refactor and check for PDT declarations.

    gcc/testsuite/ChangeLog:

PR fortran/82865
* gfortran.dg/dec_type_print_2.f03: New testcase.

From-SVN: r262221

6 years agoHide alt_dump_file within dumpfile.c
David Malcolm [Thu, 28 Jun 2018 14:55:42 +0000 (14:55 +0000)]
Hide alt_dump_file within dumpfile.c

This patch removes alt_dump_file from dumpfile.h, making it static
within dumpfile.c.  This allows for changing how -fopt-info is
implemented, and potentially adding other kinds of dump target, such
as remarks or optimization records.

Doing so requires changing the implementation of dump_enabled_p, so
the patch changes this to a simple lookup of a boolean global, which
is updated any time dump_file or alt_dump_file change.

gcc/ChangeLog:
* cgraph.c (cgraph_node::get_body): Replace assignments to
"dump_file" with calls to set_dump_file.
* dumpfile.c (alt_dump_file): Make static, and group with...
(alt_flags): ...this definition.
(dumps_are_enabled): New variable.
(refresh_dumps_are_enabled): New function.
(set_dump_file): New function.
(set_alt_dump_file): New function.
(gcc::dump_manager::dump_start): Replace assignments to
"dump_file" and "alt_dump_file" with calls to set_dump_file and
set_alt_dump_file.
(gcc::dump_manager::dump_finish): Likewise.
* dumpfile.h (alt_dump_file): Delete decl.
(dumps_are_enabled): New variable decl.
(set_dump_file): New function decl.
(dump_enabled_p): Rewrite in terms of new "dumps_are_enabled"
global.
* tree-nested.c (lower_nested_functions): Replace assignments to
"dump_file" with calls to set_dump_file.

From-SVN: r262220

6 years agotree-cfg.c (verify_gimple_in_cfg): Call verify_location on the goto_locus of each...
Eric Botcazou [Thu, 28 Jun 2018 14:49:15 +0000 (14:49 +0000)]
tree-cfg.c (verify_gimple_in_cfg): Call verify_location on the goto_locus of each outgoing edge of each basic block.

* tree-cfg.c (verify_gimple_in_cfg): Call verify_location on the
goto_locus of each outgoing edge of each basic block.

From-SVN: r262219

6 years agodwarf2out.c (decl_scope_table): Remove.
Richard Biener [Thu, 28 Jun 2018 10:22:38 +0000 (10:22 +0000)]
dwarf2out.c (decl_scope_table): Remove.

2018-06-28  Richard Biener  <rguenther@suse.de>

* dwarf2out.c (decl_scope_table): Remove.
(push_decl_scope): Likewise.
(pop_decl_scope): Likewise.
(gen_type_die_for_member): Do not call push/pop_decl_scope.
(gen_struct_or_union_type_die): Likewise.
(gen_tagged_type_die): Likewise.
(dwarf2out_init): Do not initialize decl_scope_table.
(dwarf2out_c_finalize): Do not free it.

From-SVN: r262218

6 years agodwarf2out.c (gen_subprogram_die): Use is_unit_die when deciding whether to not re...
Richard Biener [Thu, 28 Jun 2018 10:18:27 +0000 (10:18 +0000)]
dwarf2out.c (gen_subprogram_die): Use is_unit_die when deciding whether to not re-use a DIE.

2018-06-28  Richard Biener  <rguenther@suse.de>

* dwarf2out.c (gen_subprogram_die): Use is_unit_die when
deciding whether to not re-use a DIE.

From-SVN: r262217

6 years ago* MAINTAINERS (write after approval): Add myself.
Jackson Woodruff [Thu, 28 Jun 2018 10:17:39 +0000 (10:17 +0000)]
* MAINTAINERS (write after approval): Add myself.

From-SVN: r262216

6 years agore PR c/55976 (-Werror=return-type should error on returning a value from a void...
David Pagan [Thu, 28 Jun 2018 08:42:17 +0000 (08:42 +0000)]
re PR c/55976 (-Werror=return-type should error on returning a value from a void function)

2018-06-28  David Pagan  <dave.pagan@oracle.com>

PR c/55976
* gcc.dg/noncompile/pr55976-1.c: Add dg-prune-output for extraneous
message causing unexpected test FAIL.

From-SVN: r262215

6 years agoAdd missing header file inclusion.
Martin Liska [Thu, 28 Jun 2018 08:18:01 +0000 (10:18 +0200)]
Add missing header file inclusion.

2018-06-28  Martin Liska  <mliska@suse.cz>

* brigspec.c: Add missing header file inclusion.

From-SVN: r262214

6 years agodwarf2out.c (gen_subprogram_die): Always re-use DIEs with an DW_AT_abstract_origin...
Richard Biener [Thu, 28 Jun 2018 07:43:36 +0000 (07:43 +0000)]
dwarf2out.c (gen_subprogram_die): Always re-use DIEs with an DW_AT_abstract_origin attribute.

2018-06-28  Richard Biener  <rguenther@suse.de>

* dwarf2out.c (gen_subprogram_die): Always re-use DIEs with an
DW_AT_abstract_origin attribute.

From-SVN: r262213

6 years agoCome up with jump_table ratio constants used in jump_table_cluster.
Martin Liska [Thu, 28 Jun 2018 07:15:55 +0000 (09:15 +0200)]
Come up with jump_table ratio constants used in jump_table_cluster.

2018-06-28  Martin Liska  <mliska@suse.cz>

* tree-switch-conversion.c (jump_table_cluster::can_be_handled):
        Use newly introduced constants.
* tree-switch-conversion.h (struct jump_table_cluster):
        Define max_ratio_for_size and max_ratio_for_speed.

From-SVN: r262212

6 years agoFix clustering algorithm in switch expansion.
Martin Liska [Thu, 28 Jun 2018 07:14:57 +0000 (09:14 +0200)]
Fix clustering algorithm in switch expansion.

2018-06-28  Martin Liska  <mliska@suse.cz>

* tree-switch-conversion.c (jump_table_cluster::find_jump_tables):
        Add new checking assert to catch invalid state.
(jump_table_cluster::can_be_handled): Handle single case
        clusters.
(jump_table_cluster::is_beneficial): Bail out for such case.
(bit_test_cluster::find_bit_tests):
        Add new checking assert to catch invalid state.
(bit_test_cluster::can_be_handled): Handle single case
        clusters.
(bit_test_cluster::is_beneficial): Bail out for such case.
(switch_decision_tree::analyze_switch_statement):
        Fix comment.
2018-06-28  Martin Liska  <mliska@suse.cz>

* gcc.dg/tree-ssa/switch-1.c: New test.

From-SVN: r262211

6 years agoCome up with new --completion option.
Martin Liska [Thu, 28 Jun 2018 07:11:16 +0000 (09:11 +0200)]
Come up with new --completion option.

2018-06-28  Martin Liska  <mliska@suse.cz>

* common.opt: Introduce -completion option.
* gcc.c (driver_handle_option): Handle it.
(driver::main): Print completions if completion
        is set.
* opt-suggestions.c (option_proposer::get_completions):
        New function.
(option_proposer::suggest_completion): Likewise.
(option_proposer::find_param_completions): Likewise.
(verify_autocompletions): Likewise.
(test_completion_valid_options): Likewise.
(test_completion_valid_params): Likewise.
(in_completion_p): Likewise.
(empty_completion_p): Likewise.
(test_completion_partial_match): Likewise.
(test_completion_garbage): Likewise.
(opt_proposer_c_tests): Likewise.
* opt-suggestions.h: Declare new functions.
* opts.c (common_handle_option): Handle OPT__completion_.
* selftest-run-tests.c (selftest::run_tests): Add
        opt_proposer_c_tests.
* selftest.c (assert_str_startswith): New.
* selftest.h (assert_str_startswith): Likewise.
(opt_proposer_c_tests): New.
(ASSERT_STR_STARTSWITH): Likewise.

From-SVN: r262210

6 years agoMakefile.in: Add opt-suggestions.o.
Martin Liska [Thu, 28 Jun 2018 07:08:01 +0000 (09:08 +0200)]
Makefile.in: Add opt-suggestions.o.

.
2018-06-28  Martin Liska  <mliska@suse.cz>

* Makefile.in: Add opt-suggestions.o.
* gcc-main.c: Include opt-suggestions.h.
* gcc.c (driver::driver): Likewise.
(driver::~driver): Remove m_option_suggestions.
(driver::build_option_suggestions): Moved to option_proposer.
(driver::suggest_option): Likewise.
(driver::handle_unrecognized_options): Use option_proposer.
* gcc.h (class driver): Add new memver m_option_proposer.
* opt-suggestions.c: New file.
* opt-suggestions.h: New file.
2018-06-28  Martin Liska  <mliska@suse.cz>

* cppspec.c: Include opt-suggestions.h.
2018-06-28  Martin Liska  <mliska@suse.cz>

* gfortranspec.c: Include opt-suggestions.h.
2018-06-28  Martin Liska  <mliska@suse.cz>

* jit-playback.c: Include opt-suggestions.h.

From-SVN: r262209

6 years agoIntroduce auto_string_vec class.
Martin Liska [Thu, 28 Jun 2018 07:07:40 +0000 (09:07 +0200)]
Introduce auto_string_vec class.

2018-06-28  Martin Liska  <mliska@suse.cz>

* vec.h (class auto_string_vec): New (moved from auto_argvec).
(auto_string_vec::~auto_string_vec): Likewise.
2018-06-28  Martin Liska  <mliska@suse.cz>

* jit-playback.c (class auto_argvec): Moved to vec.h.
(auto_argvec::~auto_argvec): Likewise.
(compile): Use the renamed name.
(invoke_driver): Likewise.

From-SVN: r262208

6 years agotree-inline.c (remap_gimple_stmt): Force input_location on the new statement if id...
Eric Botcazou [Thu, 28 Jun 2018 06:21:13 +0000 (06:21 +0000)]
tree-inline.c (remap_gimple_stmt): Force input_location on the new statement if id->reset_location is true.

* tree-inline.c (remap_gimple_stmt): Force input_location on the new
statement if id->reset_location is true.
(copy_edges_for_bb): Do not set goto_locus on the new edges if
id->reset_location is true.
(copy_phis_for_bb): Force input_location on the arguments if
id->reset_location is true.
(expand_call_inline): Set id->reset_location if DECL_IGNORED_P
is set on the function to be inlined.
* tree-inline.h (struct copy_body_data): Move remapping_type_depth and
prevent_decl_creation_for_types fields up and add reset_location field.

From-SVN: r262207

6 years ago* doc/invoke.texi (Debugging Options): Add -gsplit-dwarf.
Stephan Bergmann [Thu, 28 Jun 2018 03:48:57 +0000 (03:48 +0000)]
* doc/invoke.texi (Debugging Options): Add -gsplit-dwarf.

From-SVN: r262206

6 years agolra-eliminations.c (update_reg_eliminate): Mark all spanning hard registers for Pmode.
Dimitar Dimitrov [Thu, 28 Jun 2018 03:43:48 +0000 (03:43 +0000)]
lra-eliminations.c (update_reg_eliminate): Mark all spanning hard registers for Pmode.

2018-06-23  Dimitar Dimitrov  <dimitar@dinux.eu>

* lra-eliminations.c (update_reg_eliminate): Mark all spanning hard
registers for Pmode.
* lra-lives.c (check_pseudos_live_through_calls): Mark all spanning
hard registers for the clobbered pseudo.

From-SVN: r262205

6 years agoDaily bump.
GCC Administrator [Thu, 28 Jun 2018 00:16:28 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r262203

6 years agoC++: don't offer bogus "._0" suggestions (PR c++/86329)
David Malcolm [Wed, 27 Jun 2018 23:21:46 +0000 (23:21 +0000)]
C++: don't offer bogus "._0" suggestions (PR c++/86329)

PR c++/86329 reports that the C++ frontend can offer bogus suggestions like:

#include <string>

int compare()
{
  return __n1 - __n2;
}

suggested.cc: In function 'int compare()':
suggested.cc:5:10: error: '__n1' was not declared in this scope
   return __n1 - __n2;
          ^~~~
suggested.cc:5:10: note: suggested alternative: '._61'
   return __n1 - __n2;
          ^~~~
          ._61
suggested.cc:5:17: error: '__n2' was not declared in this scope
   return __n1 - __n2;
                 ^~~~
suggested.cc:5:17: note: suggested alternative: '._72'
   return __n1 - __n2;
                 ^~~~
                 ._72

The dot-prefixed names are an implementation detail of how we implement
anonymous enums found in the header files, generated via
anon_aggrname_format in make_anon_name.

This patch uses anon_aggrname_p to filter them out when considering
which names to suggest.

gcc/cp/ChangeLog:
PR c++/86329
* name-lookup.c (consider_binding_level): Filter out names that
match anon_aggrname_p.

gcc/testsuite/ChangeLog:
PR c++/86329
* g++.dg/lookup/pr86329.C: New test.

From-SVN: r262199

6 years agoConvert pdp11 back end to CCmode.
Paul Koning [Wed, 27 Jun 2018 21:58:24 +0000 (17:58 -0400)]
Convert pdp11 back end to CCmode.

* common/config/pdp11/pdp11-common.c (pdp11_handle_option): Handle
mutually exclusive options.
* config/pdp11/constraints.md (h): New constraint.
(O): Update definition to match shift code generation.
(D): New constraint.
* config/pdp11/pdp11-modes.def (CCNZ): Define mode.
(CCFP): Remove.
* config/pdp11/pdp11-protos.h (int_no_side_effect_operand): New
function.
(output_jump): Change arguments.
(pdp11_fixed_cc_regs): New function.
(pdp11_cc_mode): Ditto.
(pdp11_expand_shift): Ditto.
(pdp11_assemble_shift): Ditto.
(pdp11_small_shift): Ditto.
(pdp11_branch_cost): Remove.
* config/pdp11/pdp11.c (pdp11_assemble_integer): Remove comments
from output.
(pdp11_register_move_cost): Update for CC registers.
(pdp11_rtx_costs): Add case for LSHIFTRT.
(pdp11_output_jump): Add CCNZ mode conditional branches.
(notice_update_cc_on_set): Remove.
(pdp11_cc_mode): New function.
(simple_memory_operand): Correct pre/post decrement case.
(no_side_effect_operand): New function.
(pdp11_regno_reg_class): Add CC_REGS class.
(pdp11_fixed_cc_regs): New function.
(pdp11_small_shift): New function.
(pdp11_expand_shift): New function to expand shift insns.
(pdp11_assemble_shift): New function to output shifts.
(pdp11_branch_cost): Remove.
(pdp11_modes_tieable_p): Make QI/HI modes tieable.
* config/pdp11/pdp11.h (SIZE_TYPE): Ensure 16-bit type.
(WCHAR_TYPE): Ditto.
(PTRDIFF_TYPE): Ditto.
(ADJUST_INSN_LENGTH): New macro.
(FIXED_REGISTERS): Add CC registers.
(CALL_USED_REGISTERS): Ditto.
(reg_class): Ditto.
(REG_CLASS_NAMES): Ditto.
(REG_CLASS_CONTENTS): Ditto.
(SELECT_CC_MODE): Use new function.
(TARGET_FLAGS_REGNUM): New macro.
(TARGET_FIXED_CONDITION_CODE_REGS): Ditto.
(cc0_reg_rtx): Remove.
(CC_STATUS_MDEP): Remove.
(CC_STATUS_MDEFP_INIT): Remove.
(CC_IN_FPU): Remove.
(NOTICE_UPDATE_CC): Remove.
(REGISTER_NAMES): Add CC registers.
(BRANCH_COST): Change to constant 1.
* config/pdp11/pdp11.md: Rewrite for CCmode condition code
handling.
* config/pdp11/pdp11.opt (mbcopy): Remove.
(mbcopy-builtin): Remove.
(mbranch-cheap): Remove.
(mbranch-expensive): Remove.
* config/pdp11/predicates.md (expand_shift_operand): Update to
match shift code generation.
(ccnz_operator): New predicate.
* doc/invoke.texi (PDP-11 Options): Remove deleted options
-mbcopy, -mbcopy-builtin, -mbranch-cheap, -mbranch-expensive.
Remove non-existent option -mabshi, -mno-abshi.  Document mutually
exclusive options.
* doc/md.texi (PDP-11): Document new D and h constraints.  Update
description of O constraint.

From-SVN: r262198

6 years agoAdd test case that was supposed to be added in commit 255556 on 2017-12-11.
Carl Love [Wed, 27 Jun 2018 21:50:01 +0000 (21:50 +0000)]
Add test case that was supposed to be added in commit 255556 on 2017-12-11.

gcc/testsuite/ChangeLog:

2018-06-27  Carl Love  <cel@us.ibm.com>

Add test case that was supposed to be added in commit 255556 on 2017-12-11.

* gcc.target/vsx-vector-abss.c: New file to test vec_abss.

From-SVN: r262196

6 years agoFix typo in libgcc/Makefile.in
Rainer Orth [Wed, 27 Jun 2018 20:32:27 +0000 (20:32 +0000)]
Fix typo in libgcc/Makefile.in

* Makefile.in (install_leaf): Use enable_gcov instead of
enable_libgcov.

From-SVN: r262195

6 years agostl_vector.h (struct _Vector_base<>::_Vector_impl_data): New.
François Dumont [Wed, 27 Jun 2018 20:23:20 +0000 (20:23 +0000)]
stl_vector.h (struct _Vector_base<>::_Vector_impl_data): New.

2018-06-27  François Dumont  <fdumont@gcc.gnu.org>

* include/bits/stl_vector.h
(struct _Vector_base<>::_Vector_impl_data): New.
(struct _Vector_base<>::_Vector_impl): Inherit from latter.
(_Vector_base<>::_Vector_impl::_M_swap_data): Move...
(_Vector_base<>::_Vector_impl_data::_M_swap_data): ...here.
(_Vector_base<>::_Vector_impl()): Add noexcept qualification.
(_Vector_base<>::_Vector_impl(_Vector_impl&&)): New.
(_Vector_base<>::_Vector_impl(_Tp_alloc_type&&, _Vector_impl&&)): New.
(_Vector_base(const allocator_type&, _Vector_base&&)): New, use latter.
(_Vector_base()): Default.
(_Vector_base(_Vector_base&&)): Default.
(_Vector_base(size_t)) [_GLIBCXX_INLINE_VERSION]: Delete.
(_Vector_base(_Tp_alloc_type&&)) [_GLIBCXX_INLINE_VERSION]: Delete.
(_Vector_base::_M_create_storage(size_t)): Make protected.
(vector()): Default.
(vector(vector&&)): Default.
(vector(vector&&, const allocator_type&, true_type)): New.
(vector(vector&&, const allocator_type&, false_type)): New.
(vector(vector&&, const allocator_type&)): Use latters.
(vector(_InputIte, _InputIte, const allocator_type&)): Call
_M_range_initialize directly.
* include/debug/vector
(vector(vector&&, const allocator_type&)): Add noexcept qualification.
* testsuite/23_containers/vector/allocator/default_init.cc: New.
* testsuite/23_containers/vector/cons/noexcept_move_construct.cc: Add
static assertions.

From-SVN: r262194

6 years agov850.md (addsi3_set_flags): New pattern.
Jeff Law [Wed, 27 Jun 2018 18:32:48 +0000 (12:32 -0600)]
v850.md (addsi3_set_flags): New pattern.

* config/v850/v850.md (addsi3_set_flags): New pattern.
(subsi3_set_flags, negsi2_set_flags, andsi3_set_flags): Likewise.
(iorsi3_set_flags, xorsi3_set_flags, one_cmplsi2_set_flags): Likewise.
(zero_extendhisi2_v850_set_flags): Likewise.
(zero_extendqisi2_v850_set_flags): Likewise.
(ashlsi3_set_flags, ashlsi3_v850e2_set_flags): Likewise.
(lshrsi3_set_flags, lshrsi3_v850e2_set_flags): Likewise.
(ashrsi3_set_flags, ashrsi3_v850e2_set_flags): Likewise.

Co-Authored-By: Austin Law <austinklaw@gmail.com>
From-SVN: r262192

6 years agov850-protos.h (notice_update_cc): Remove.
Jeff Law [Wed, 27 Jun 2018 18:31:10 +0000 (12:31 -0600)]
v850-protos.h (notice_update_cc): Remove.

* config/v850/v850-protos.h (notice_update_cc): Remove.
* config/v850/v850.c (v850_compare_op0, v850_compare_op1): Remove.
(v850_print_operand): Handle 'D' and "d".
(v850_select_cc_mode): Remove ATTRIBUTE_UNUSED for last argument.
Add handling of arithmetic/logical operations compared against zero.
(v850_gen_float_compare): Remove ATTRIBUTE_UNUSED for last argument.
Do not look at v850_compare_op, instead get mode from last argument.
(v850_gen_compare): Remove
(increment_stack): Use addsi3_clobber_flags to avoid splitting failure
after reload for prologue insns.
(expand_prologue): Account for CLOBBER of CC_REGNUM in various
patterns.
(construct_save_jarl): Likewise.
(TARGET_FLAGS_REGNUM): Define.
* config/v850/v850.h (v850_compare_op0, v850_compare_op1): Remove.
(NOTICE_UPDATE_CC): Remove.
* config/v850/v850.md (v850_tst1): Use (reg:CCZ CC_REGNUM) rather
than cc0.  Conditionalize on reload_completed.
(cmpsi_insn, setfcc_insn): Likewise.
(tst1 splitter): Turn into define_and_split which sets the flags
after reload.
(cstoresi4, cbranchsf4, cbranchdf4, cbranchsi4_insn): Likewise.
(cbranchsi4, branch_normal, branch_invert): Do not expose cc0 here.
(cstoresf4, cstoredf4): Clobber the flags.
(cmpsi, cmpsf, cmpdf): Remove expanders.
(setf_insn): Remove pattern.
(addsi3): Turn into define_and_split which clobbers the flags after
reload and a suitable pattern (addsi3_clobber_flags) for use after
reload.
(subsi3, negsi2, andsi3, iorsi3, xorsi3, one_cmplsi2) Likewise.
(ashlsi3, ashlsi3_v850e2, lshrsi3, lsh4si3_v850e2): Likewise.
(ashrsi3, ashrsi3_v850e2): Likewise.
(bins): Clobber the flags.
(movsicc_normal_cc, movsicc_normal, movsicc_tst1): Likewise.
(movsicc_tst1_revesed, sasf, swap and rotate patterns): Likewise.
(fix_loop_counter, call_internal_short, call_internal_long): Likewise.
(call_value_internal_short, call_value_internal_long): Likewise.
(callt_save_interrupt, callt_return_interrupt): Likewise.
(save_interrupt, return_interrupt): Likewise.
(callt_save_all_interrupt, save_all_interrupt): Likewise.
(_save_all_interrupt, callt_restore_all_interrupt): Likewise.
(restore_all_interrupt, _restore_all_interrupt): Likewise.
(All FP comparisons): Only allow after reload has completed.
(trfsr): Likewise.
(divh, divhu): Tweak output template.
(branch_z_normal, branch_z_invert): Remove
(branch_nz_normal, branch_nz_invert): Likewise.
(extendhisi_insn, extendqisi_insn): Do not clobber flags.

Co-Authored-By: Austin Law <austinklaw@gmail.com>
From-SVN: r262190

6 years agov850-modes.def (CCZ, CCNZ): Add new modes.
Jeff Law [Wed, 27 Jun 2018 18:30:06 +0000 (12:30 -0600)]
v850-modes.def (CCZ, CCNZ): Add new modes.

* config/v850/v850-modes.def (CCZ, CCNZ): Add new modes.
* config/v850/v850.c (notice_update_cc): Remove.
* config/v850/v850.h  (CC_OVERFLOW_UNUSABLE): Remove
(CC_NO_CARRY): Likewise.
(NOTICE_UPDATE_CC): Define to nothing.
* config/v850/v850.md: Remove block comment on cc0 handling
Remove "cc" attribute from all patterns.  Remove cc_status handling
from all patterns.  Minor formatting fixes.

Co-Authored-By: Austin Law <austinklaw@gmail.com>
From-SVN: r262189

6 years agoAvoid crash on friend in nested class template.
Jason Merrill [Wed, 27 Jun 2018 17:29:51 +0000 (13:29 -0400)]
Avoid crash on friend in nested class template.

* name-lookup.c (do_pushtag): If we skip a class level, also skip
its template level.

From-SVN: r262188

6 years ago[AArch64] Add support for Arm Cortex-A76
Kyrylo Tkachov [Wed, 27 Jun 2018 14:33:16 +0000 (14:33 +0000)]
[AArch64] Add support for Arm Cortex-A76

The Cortex-A76 is an Armv8.2-A processor with dotproduct and FP16 support.
It can be paired with the Cortex-A55 and hence the option
-mcpu/-mtune=cortex-a76.cortex-a55 is also introduced.

Bootstrapped and tested on aarch64-none-linux-gnu.

* config/aarch64/aarch64-cores.def (cortex-a76): New entry.
(cortex-a76.cortex-a55): Likewise.
* config/aarch64/aarch64-tune.md: Regenerate.
* doc/invoke.texi (AArch64 Options): Document cortex-a76 and
cortex-a76.cortex-a55.

From-SVN: r262186

6 years agot-v850 (MULTILIB_OPTIONS): Remove 8byte-align.
Jeff Law [Wed, 27 Jun 2018 14:27:44 +0000 (08:27 -0600)]
t-v850 (MULTILIB_OPTIONS): Remove 8byte-align.

* config/v850/t-v850 (MULTILIB_OPTIONS): Remove 8byte-align.
(MULTILIB_DIRNAMES): Similarly.

From-SVN: r262185

6 years agoAdd std::__is_byte<std::byte> specialization
Jonathan Wakely [Wed, 27 Jun 2018 10:30:52 +0000 (11:30 +0100)]
Add std::__is_byte<std::byte> specialization

* include/bits/cpp_type_traits.h [__cplusplus >= 201703]
(__is_byte<byte>): Define specialization for std::byte.

From-SVN: r262182

6 years agogimple.h (gimple_return_retbnd): Delete.
Eric Botcazou [Wed, 27 Jun 2018 10:26:06 +0000 (10:26 +0000)]
gimple.h (gimple_return_retbnd): Delete.

* gimple.h (gimple_return_retbnd): Delete.
(gimple_return_set_retbnd): Likewise.
* cgraphunit.c (cgraph_node::expand_thunk): Remove call to
gimple_return_set_retbnd.
* gimple-pretty-print.c (dump_gimple_return): Remove call to
gimple_return_retbnd and adjust.
* tree-inline.h (struct copy_body_data): Remove retbnd field.
* tree-inline.c (remap_gimple_stmt): Remove handling of retbnd.
Explicitly return NULL in a couple more cases.  Move assertion
on debug statements and remove unreachable code.
(reset_debug_binding): Do not test id->retbnd.
(expand_call_inline): Do not set it.

From-SVN: r262181

6 years agoadd support for --disable-gcov
Rasmus Villemoes [Wed, 27 Jun 2018 10:04:25 +0000 (12:04 +0200)]
add support for --disable-gcov

For some targets (in my case VxWorks 5.5), libgcov does not compile due
to missing functions and macros such as getpid() and F_OK.

Incidentally, gcc/Makefile.in already contains comments such as

# Install gcov if it was compiled.

but there is no logic in place to actually allow gcov to not be
compiled.

So add an option for disabling build and install of libgcov and the
related host tools.

From-SVN: r262180

6 years ago[arm] Add support for Arm Cortex-A76
Kyrylo Tkachov [Wed, 27 Jun 2018 09:54:40 +0000 (09:54 +0000)]
[arm] Add support for Arm Cortex-A76

The Cortex-A76 is an Armv8.2-A processor with dotproduct and FP16 support.
It can be paired with the Cortex-A55 and hence the option
-mcpu/-mtune=cortex-a76.cortex-a55 is also introduced.

Bootstrapped and tested on arm-none-linux-gnueabihf.

* config/arm/arm-cpus.in (cortex-a76): New entry.
(cortex-a76.cortex-a55): Likewise.
* config/arm/arm-tables.opt: Regenerate.
* config/arm/arm-tune.md: Likewise.
* config/arm/driver-arm.c (arm_cpu_table): Add Cortex-A76 entry.
* doc/invoke.texi (ARM Options): Document cortex-a76 and
cortex-a76.cortex-a55.

From-SVN: r262179

6 years agoAdd SIMD to REG pattern for movhf without armv8.2-a support for AArch64
Tamar Christina [Wed, 27 Jun 2018 08:08:48 +0000 (08:08 +0000)]
Add SIMD to REG pattern for movhf without armv8.2-a support for AArch64

This fixes a regression where we don't have an instruction for pre Armv8.2-a
to do a move of an fp16 value from a GP reg to a SIMD reg.

This patch adds that pattern to movhf_aarch64 using a dup and only selectes it
using a very low priority.

This fixes an ICE at -O0.

gcc/
2018-06-20  Tamar Christina  <tamar.christina@arm.com>

PR target/85769
* config/aarch64/aarch64.md (*movhf_aarch64): Add dup v0.4h pattern.

gcc/testsuite/
2018-06-20  Tamar Christina  <tamar.christina@arm.com>

PR target/85769
* gcc.target/aarch64/f16_mov_immediate_3.c: New.

From-SVN: r262178

6 years agofixincludes: Add missing hunk to tests/base/ioLib.h
Rasmus Villemoes [Wed, 27 Jun 2018 07:59:23 +0000 (09:59 +0200)]
fixincludes: Add missing hunk to tests/base/ioLib.h

When adding the vxworks_iolib_include_unistd hack I failed to add the
appropriate hunk to the tests/base/ioLib.h file, causing "make
check-fixincludes" to fail.

From-SVN: r262177

6 years ago[aarch64] Fix obsolete comment about X30
Siddhesh Poyarekar [Wed, 27 Jun 2018 05:28:06 +0000 (05:28 +0000)]
[aarch64] Fix obsolete comment about X30

r217431 changed X30 as caller-saved in CALL_USE_REGISTERS because of
which this comment about X30 not being marked as call-clobbered is no
longer accurate.  Fixed to describe the current state more accurately.

* config/aarch64/aarch64.h (CALL_USE_REGISTERS): Fix obsolete
comment.
(EPILOGUE_USES): Likewise.

From-SVN: r262176

6 years agoPR c++/86320 - memory-hog with std::array of pair
Jason Merrill [Wed, 27 Jun 2018 02:59:44 +0000 (22:59 -0400)]
PR c++/86320 - memory-hog with std::array of pair

* typeck2.c (process_init_constructor_array): Only compute a
constant initializer once.

In this PR, we have a large std::array of pairs.  Since the C array is
wrapped in a class we don't go to build_vec_init, so we end up with
digest_init wanting to build up the element initializer for each element of
the array.

In the more general case, like 80272, we have a data structure problem: we
don't currently have a good way of expressing the same dynamic
initialization of many elements within a CONSTRUCTOR.  RANGE_EXPR probably
ought to work, but will need more work at genericize or gimplify time.

But in this case, the initialization for each element reduces to constant
0, so we don't even need to add anything to the CONSTRUCTOR.  We just need
to realize that if the initializer for one element is 0, the others will be
as well, and we don't need to iterate over the whole array.

For the trunk, I also use a RANGE_EXPR to handle constant initialization by
a value other than 0.

void foo ()
{
  std::array<std::pair<int, int>, 1024 * 1024> arr {};
}

From-SVN: r262173

6 years agoPR c++/80290 - memory-hog with std::pair.
Jason Merrill [Wed, 27 Jun 2018 02:59:38 +0000 (22:59 -0400)]
PR c++/80290 - memory-hog with std::pair.

* pt.c (fn_type_unification): Add convs parameter.
(check_non_deducible_conversion): Remember conversion.
(check_non_deducible_conversions): New.  Do checks here.
(type_unification_real): Not here.  Remove flags parm.
* call.c (add_function_candidate): Make convs a parameter.
Don't recalculate the conversion if it's already set.
(add_template_candidate_real): Allocate convs here.
(good_conversion, conv_flags): New.

When the std::pair constructors got more complex to handle, it aggravated a
preexisting algorithmic problem in template overload resolution:

As part of template argument deduction in a call, once we've deduced all
the template arguments we can but before we substitute them to form an
actual declaration, for any function parameters that don't involve template
parameters we need to check that it's possible to convert the argument to
the parameter type (wg21.link/cwg1391).

As a result, we end up calculating the conversion twice: once here, and
then again in add_function_candidate as part of normal overload resolution.
Normally this isn't a big deal, but when the argument is a multiply-nested
initializer list, doubling the conversion processing at each level leads to
combinatorial explosion.

The patch for trunk avoids the duplication by remembering the conversion we
calculate at deduction time and then reusing it in overload resolution
rather than calculating it again.

From-SVN: r262172

6 years agoDaily bump.
GCC Administrator [Wed, 27 Jun 2018 00:17:03 +0000 (00:17 +0000)]
Daily bump.

From-SVN: r262171

6 years agoDeclare some explicit instantiations for strings in Debug Mode
Jonathan Wakely [Wed, 27 Jun 2018 00:11:53 +0000 (01:11 +0100)]
Declare some explicit instantiations for strings in Debug Mode

The empty reps and the I/O functions do not need to be implicitly
instantiated to enable assertions, so declare the explicit
instantiations when _GLIBCXX_EXTERN_TEMPLATE == -1 (i.e. when
_GLIBCXX_ASSERTIONS is defined).

PR libstdc++/86138
* include/bits/basic_string.tcc: [_GLIBCXX_EXTERN_TEMPLATE < 0]
Declare explicit instantiations of COW empty reps and I/O functions.

From-SVN: r262167

6 years agov850-common.c (TARGET_DEFAULT_TARGET_FLAGS): Turn on -mbig-switch by default.
Jeff Law [Tue, 26 Jun 2018 20:22:59 +0000 (14:22 -0600)]
v850-common.c (TARGET_DEFAULT_TARGET_FLAGS): Turn on -mbig-switch by default.

* common/config/v850/v850-common.c (TARGET_DEFAULT_TARGET_FLAGS): Turn
on -mbig-switch by default.

From-SVN: r262166

6 years agotree-inline.c (remap_location): New function extracted from...
Eric Botcazou [Tue, 26 Jun 2018 20:16:28 +0000 (20:16 +0000)]
tree-inline.c (remap_location): New function extracted from...

* tree-inline.c (remap_location): New function extracted from...
(copy_edges_for_bb): Add ID parameter.  Remap goto_locus.
(copy_phis_for_bb): ...here.  Call remap_location.
(copy_cfg_body): Adjust call to copy_edges_for_bb.

From-SVN: r262165

6 years agosample-2.cc: Add TLS DejaGNU directives.
David Edelsohn [Tue, 26 Jun 2018 19:17:08 +0000 (19:17 +0000)]
sample-2.cc: Add TLS DejaGNU directives.

        * testsuite/experimental/algorithm/sample-2.cc: Add TLS DejaGNU
        directives.
        * testsuite/experimental/algorithm/shuffle.cc: Likewise.

From-SVN: r262163

6 years agobuiltins-1.c: Correct a comment.
Kelvin Nilsen [Tue, 26 Jun 2018 18:55:34 +0000 (18:55 +0000)]
builtins-1.c: Correct a comment.

gcc/testsuite/ChangeLog:

2018-06-26  Kelvin Nilsen  <kelvin@gcc.gnu.org>

* gcc.target/powerpc/builtins-1.c: Correct a comment.

From-SVN: r262162

6 years agors6000-string.c (expand_block_clear): Don't use unaligned vsx for 16B memset.
Aaron Sawdey [Tue, 26 Jun 2018 16:46:51 +0000 (16:46 +0000)]
rs6000-string.c (expand_block_clear): Don't use unaligned vsx for 16B memset.

2018-06-26  Aaron Sawdey  <acsawdey@linux.ibm.com>

* config/rs6000/rs6000-string.c (expand_block_clear): Don't use
unaligned vsx for 16B memset.

From-SVN: r262158

6 years agoI typoed the PR numnber, correct is:
Segher Boessenkool [Tue, 26 Jun 2018 16:08:30 +0000 (18:08 +0200)]
I typoed the PR numnber, correct is:

PR target/86285
* config/rs6000/rs6000.c (rs6000_init_builtins): Do not set
ieee128_float_type_node to long_double_type_node unless
TARGET_LONG_DOUBLE_128 is set.

From-SVN: r262156

6 years agofold-vec-neg-int.p8.c: Specify powerpc_p8vector_ok requirement for this test.
Will Schmidt [Tue, 26 Jun 2018 15:26:14 +0000 (15:26 +0000)]
fold-vec-neg-int.p8.c: Specify powerpc_p8vector_ok requirement for this test.

[testsuite]

2018-06-12  Will Schmidt  <will_schmidt@vnet.ibm.com>

* gcc.target/powerpc/fold-vec-neg-int.p8.c: Specify powerpc_p8vector_ok
requirement for this test.
* gcc.target/powerpc/fold-vec-neg-int.c: Specify powerpc_p8vector_ok
requirement, and -mpower8-vector compile option.

From-SVN: r262153

6 years agors6000: Set up ieee128_float_type_node correctly (PR82625)
Segher Boessenkool [Tue, 26 Jun 2018 15:16:58 +0000 (17:16 +0200)]
rs6000: Set up ieee128_float_type_node correctly (PR82625)

We shouldn't init __ieee128 to be the same as long double if the
latter is not even a 128-bit type.

This also reorders the nearby __ibm128 code so both types use similar
logic.

PR target/82625
* config/rs6000/rs6000.c (rs6000_init_builtins): Do not set
ieee128_float_type_node to long_double_type_node unless
TARGET_LONG_DOUBLE_128 is set.

From-SVN: r262152

6 years agoIntroduce dump_location_t
David Malcolm [Tue, 26 Jun 2018 13:34:59 +0000 (13:34 +0000)]
Introduce dump_location_t

gcc/ChangeLog:
* cfgloop.c (get_loop_location): Convert return type from
location_t to dump_user_location_t, replacing INSN_LOCATION lookups
by implicit construction from rtx_insn *, and using
dump_user_location_t::from_function_decl for the fallback case.
* cfgloop.h (get_loop_location): Convert return type from
location_t to dump_user_location_t.
* cgraphunit.c (walk_polymorphic_call_targets): Update call to
dump_printf_loc to pass in a dump_location_t rather than a
location_t, via the gimple stmt.
* coverage.c (get_coverage_counts): Update calls to
dump_printf_loc to pass in dump_location_t rather than a
location_t.
* doc/optinfo.texi (Dump types): Convert example of
dump_printf_loc from taking "locus" to taking "insn".  Update
description of the "_loc" calls to cover dump_location_t.
* dumpfile.c: Include "backend.h", "gimple.h", "rtl.h", and
"selftest.h".
(dump_user_location_t::dump_user_location_t): New constructors,
from gimple *stmt and rtx_insn *.
(dump_user_location_t::from_function_decl): New function.
(dump_loc): Make static.
(dump_gimple_stmt_loc): Convert param "loc" from location_t to
const dump_location_t &.
(dump_generic_expr_loc): Delete.
(dump_printf_loc): Convert param "loc" from location_t to
const dump_location_t &.
(selftest::test_impl_location): New function.
(selftest::dumpfile_c_tests): New function.
* dumpfile.h: Include "profile-count.h".
(class dump_user_location_t): New class.
(struct dump_impl_location_t): New struct.
(class dump_location_t): New class.
(dump_printf_loc): Convert 2nd param from source_location to
const dump_location_t &.
(dump_generic_expr_loc): Delete.
(dump_gimple_stmt_loc): Convert 2nd param from source_location to
const dump_location_t &.
* gimple-fold.c (fold_gimple_assign): Update call to
dump_printf_loc to pass in a dump_location_t rather than a
location_t, via the gimple stmt.
(gimple_fold_call): Likewise.
* gimple-loop-interchange.cc
(loop_cand::analyze_iloop_reduction_var): Update for change to
check_reduction_path.
(tree_loop_interchange::interchange): Update for change to
find_loop_location.
* graphite-isl-ast-to-gimple.c (scop_to_isl_ast): Update for
change in return-type of find_loop_location.
(graphite_regenerate_ast_isl): Likewise.
* graphite-optimize-isl.c (optimize_isl): Likewise.
* graphite.c (graphite_transform_loops): Likewise.
* ipa-devirt.c (ipa_devirt): Update call to dump_printf_loc to
pass in a dump_location_t rather than a location_t, via the
gimple stmt.
* ipa-prop.c (ipa_make_edge_direct_to_target): Likewise.
* ipa.c (walk_polymorphic_call_targets): Likewise.
* loop-unroll.c (report_unroll): Convert "locus" param from
location_t to dump_location_t.
(decide_unrolling): Update for change to get_loop_location's
return type.
* omp-grid.c (struct grid_prop): Convert field "target_loc" from
location_t to dump_user_location_t.
(grid_find_single_omp_among_assignments_1): Updates calls to
dump_printf_loc to pass in a dump_location_t rather than a
location_t, via the gimple stmt.
(grid_parallel_clauses_gridifiable): Convert "tloc" from
location_t to dump_location_t.  Updates calls to dump_printf_loc
to pass in a dump_location_t rather than a location_t, via the
gimple stmt.
(grid_inner_loop_gridifiable_p): Likewise.
(grid_dist_follows_simple_pattern): Likewise.
(grid_gfor_follows_tiling_pattern): Likewise.
(grid_target_follows_gridifiable_pattern): Likewise.
(grid_attempt_target_gridification): Convert initialization
of local "grid" from memset to zero-initialization; FIXME: does
this require C++11?  Update call to dump_printf_loc to pass in a
optinfo_location rather than a location_t, via the gimple stmt.
* profile.c (read_profile_edge_counts): Updates call to
dump_printf_loc to pass in a dump_location_t rather than a
location_t
(compute_branch_probabilities): Likewise.
* selftest-run-tests.c (selftest::run_tests): Call
dumpfile_c_tests.
* selftest.h (dumpfile_c_tests): New decl.
* tree-loop-distribution.c (pass_loop_distribution::execute):
Update for change in return type of find_loop_location.
* tree-parloops.c (parallelize_loops): Likewise.
* tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Convert
"locus" from location_t to dump_user_location_t.
(canonicalize_loop_induction_variables): Likewise.
* tree-ssa-loop-ivopts.c (tree_ssa_iv_optimize_loop): Update
for change in return type of find_loop_location.
* tree-ssa-loop-niter.c (number_of_iterations_exit): Update call
to dump_printf_loc to pass in a dump_location_t rather than a
location_t, via the stmt.
* tree-ssa-sccvn.c (eliminate_dom_walker::before_dom_children):
Likewise.
* tree-vect-loop-manip.c (find_loop_location): Convert return
type from source_location to dump_user_location_t.
(vect_do_peeling): Update for above change.
(vect_loop_versioning): Update for change in type of
vect_location.
* tree-vect-loop.c (check_reduction_path): Convert "loc" param
from location_t to dump_user_location_t.
(vect_estimate_min_profitable_iters): Update for change in type
of vect_location.
* tree-vect-slp.c (vect_print_slp_tree): Convert param "loc" from
location_t to dump_location_t.
(vect_slp_bb): Update for change in type of vect_location.
* tree-vectorizer.c (vect_location): Convert from source_location
to dump_user_location_t.
(try_vectorize_loop_1): Update for change in vect_location's type.
(vectorize_loops): Likewise.
(increase_alignment): Likewise.
* tree-vectorizer.h (vect_location): Convert from source_location
to dump_user_location_t.
(find_loop_location): Convert return type from source_location to
dump_user_location_t.
(check_reduction_path): Convert 1st param from location_t to
dump_user_location_t.
* value-prof.c (check_counter): Update call to dump_printf_loc to
pass in a dump_user_location_t rather than a location_t; update
call to error_at for change in type of "locus".
(check_ic_target): Update call to dump_printf_loc to
pass in a dump_user_location_t rather than a location_t, via the
call_stmt.

From-SVN: r262149

6 years agoAdd missing noexcept on definition to match declaration
Jonathan Wakely [Tue, 26 Jun 2018 12:24:47 +0000 (13:24 +0100)]
Add missing noexcept on definition to match declaration

* include/bits/regex.tcc (regex_iterator::operator==): Add missing
noexcept.

From-SVN: r262146

6 years agoS/390: Fix mtune default.
Robin Dapp [Tue, 26 Jun 2018 11:50:09 +0000 (11:50 +0000)]
S/390: Fix mtune default.

When building with --with-tune=zEC12 and calling the resulting gcc
with --march=z13 (no extra -mtune), the binary would unexpectedly be compiled
with -march=z13 -mtune=zEC12.  This patch avoids using the default tune
parameter if -march is specified as argument but the user can still
explicitly state -march=z13 -mtune=zEC12.

gcc/ChangeLog:

2018-06-26  Robin Dapp  <rdapp@linux.vnet.ibm.com>

* config/s390/s390.h (enum processor_flags): Do not use
default tune parameter when -march was specified.

From-SVN: r262143

6 years agore PR target/86314 (GCC 7.x and 8.x zero out "eax" before using "rax" in "lock bts")
Jakub Jelinek [Tue, 26 Jun 2018 11:35:52 +0000 (13:35 +0200)]
re PR target/86314 (GCC 7.x and 8.x zero out "eax" before using "rax" in "lock bts")

PR target/86314
* config/i386/i386.md (setcc + movzbl to xor + setcc peephole2s):
Check reg_overlap_mentioned_p in addition to reg_set_p with the same
operands.

* gcc.dg/pr86314.c: New test.

From-SVN: r262141

6 years agore PR c++/86291 (OpenMP incorrect for-loop collapsing with iterators and at least...
Jakub Jelinek [Tue, 26 Jun 2018 10:40:50 +0000 (12:40 +0200)]
re PR c++/86291 (OpenMP incorrect for-loop collapsing with iterators and at least 5 nested loops)

PR c++/86291
* parser.c (cp_parser_omp_for_loop_init): Change for_block argument
type from vec<tree, va_gc> * to vec<tree, va_gc> *&.

* testsuite/libgomp.c++/pr86291.C: New test.

From-SVN: r262137

6 years agore PR debug/86257 (Program compiled with fPIC crashes while stepping over thread...
Jakub Jelinek [Tue, 26 Jun 2018 10:36:19 +0000 (12:36 +0200)]
re PR debug/86257 (Program compiled with fPIC crashes while stepping over thread-local variable GDB)

PR debug/86257
* gcc.target/i386/pr86257.c: Add -mtls-dialect=gnu to dg-options.

From-SVN: r262136

6 years agoRequire 64-bit in gcc.target/i386/pr86257.c
Rainer Orth [Tue, 26 Jun 2018 09:14:12 +0000 (09:14 +0000)]
Require 64-bit in gcc.target/i386/pr86257.c

* gcc.target/i386/pr86257.c: Require 64-bit.

From-SVN: r262135

6 years agoRequire IBM1047 support in g++.dg/pr86082.C
Rainer Orth [Tue, 26 Jun 2018 09:10:15 +0000 (09:10 +0000)]
Require IBM1047 support in g++.dg/pr86082.C

* g++.dg/pr86082.C: Require IBM1047 support.

From-SVN: r262134

6 years agoAdd myself to MAINTAINERS file
Rasmus Villemoes [Tue, 26 Jun 2018 08:58:18 +0000 (10:58 +0200)]
Add myself to MAINTAINERS file

From-SVN: r262133

6 years agore PR tree-optimization/86287 (AddressSanitizer: heap-use-after-free on bootstrap...
Richard Biener [Tue, 26 Jun 2018 06:42:46 +0000 (06:42 +0000)]
re PR tree-optimization/86287 (AddressSanitizer: heap-use-after-free on bootstrap with -O3)

2018-06-26  Richard Biener  <rguenther@suse.de>

PR tree-optimization/86287
PR bootstrap/86316
* tree-vect-loop.c (vect_transform_loop_stmt): Fix read-after-free.
(vect_analyze_loop): Initialize n_stmts.

From-SVN: r262132

6 years agore PR ipa/86271 (ICE due to size mismatch when inlining)
Richard Biener [Tue, 26 Jun 2018 06:40:43 +0000 (06:40 +0000)]
re PR ipa/86271 (ICE due to size mismatch when inlining)

2018-06-26  Richard Biener  <rguenther@suse.de>

PR middle-end/86271
* fold-const.c (fold_convertible_p): Pointer extension
isn't valid.

* gcc.dg/pr86271.c: New testcase.

From-SVN: r262131

6 years ago[PR86064] split single cross-partition range with nonzero locviews
Alexandre Oliva [Tue, 26 Jun 2018 05:44:26 +0000 (05:44 +0000)]
[PR86064] split single cross-partition range with nonzero locviews

We didn't split cross-partition ranges in loclists to output a
whole-function location expression, but with nonzero locviews, we
force loclists, and then we have to split to avoid cross-partition
list entries.

for  gcc/ChangeLog

PR debug/86064
* dwarf2out.c (loc_list_has_views): Adjust comments.
(dw_loc_list): Split single cross-partition range with
nonzero locview.

for  gcc/testsuite/ChangeLog

PR debug/86064
* gcc.dg/pr86064.c: New.

From-SVN: r262130

6 years ago* lib/target-supports.exp
Jeff Law [Tue, 26 Jun 2018 05:19:15 +0000 (23:19 -0600)]
* lib/target-supports.exp
(check_effective_target_logical_op_short_circuit): Add v850.

From-SVN: r262129

6 years agoDaily bump.
GCC Administrator [Tue, 26 Jun 2018 00:16:56 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r262127

6 years agopredicates.md (const_float_1_operand): Fix match_code test.
Jeff Law [Mon, 25 Jun 2018 23:45:05 +0000 (17:45 -0600)]
predicates.md (const_float_1_operand): Fix match_code test.

* config/v850/predicates.md (const_float_1_operand): Fix match_code
test.
(const_float_0_operand): Remove unused predicate.
* config/v850/v850.md (define_constants): Remove UNSPEC_LOOP.
(define_c_enum unspec): Add LOOP, RCP and RSQRT constants.
(recipsf2): New expander.  Original pattern now called
(recipsf2_insn).
(recipdf2, recipdf2_insn): Similarly.
(rsqrtsf2, rsqrtsf2_insn): Similarly
(rsqrtdf2, rsqrtdf2_insn): Similarly

From-SVN: r262123

6 years agostddef.h: Remove an obsolete comment on FreeBSD 5.
Gerald Pfeifer [Mon, 25 Jun 2018 22:29:55 +0000 (22:29 +0000)]
stddef.h: Remove an obsolete comment on FreeBSD 5.

* ginclude/stddef.h: Remove an obsolete comment on FreeBSD 5.
Simplify logic for FreeBSD (twice).

From-SVN: r262121

6 years agocompiler: improve escape analysis
Ian Lance Taylor [Mon, 25 Jun 2018 22:23:49 +0000 (22:23 +0000)]
compiler: improve escape analysis

    This CL ports recent enhancements of the escape analysis in the
    gc compiler to gofrontend.

    - CL 99335: unnamed receiver should not escape.

    - CL 105257: propagate loop depth to field. This prevents it
      from escaping when a field's address is taken inside a loop
      (but not otherwise escape).

    - CL 107597: use element type for "indirection" of slice/string.
      This prevents the slice/string from escaping when only the
      element, in case that it is pointerless, flows to outer scope.

    Reviewed-on: https://go-review.googlesource.com/120760

From-SVN: r262120

6 years agoPR libstdc++/86112 fix printers for Python 2.6
Jonathan Wakely [Mon, 25 Jun 2018 21:03:49 +0000 (22:03 +0100)]
PR libstdc++/86112 fix printers for Python 2.6

Dict comprehensions are only supported since Python 2.7, so use an
alternative syntax that is backwards compatible.

PR libstdc++/86112
* python/libstdcxx/v6/printers.py (add_one_template_type_printer):
Replace dict comprehension.

From-SVN: r262115

6 years agoPR tree-optimization/86204 - wrong strlen result after prior strnlen
Martin Sebor [Mon, 25 Jun 2018 20:46:45 +0000 (20:46 +0000)]
PR tree-optimization/86204 -  wrong strlen result after prior strnlen

gcc/ChangeLog:

PR tree-optimization/86204
* tree-ssa-strlen.c (handle_builtin_strlen): Avoid storing
a strnlen result if it's less than the length of the string.

gcc/testsuite/ChangeLog:

PR tree-optimization/86204
* gcc.dg/strlenopt-46.c: New test.

From-SVN: r262114

6 years agoUpdate powerpc64-linux-gnu/baseline_symbols.txt
Jonathan Wakely [Mon, 25 Jun 2018 20:36:51 +0000 (21:36 +0100)]
Update powerpc64-linux-gnu/baseline_symbols.txt

PR libstdc++/81092
* config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update.

From-SVN: r262112

6 years agoPR tree-optimization/85700 - Spurious -Wstringop-truncation warning with strncat
Martin Sebor [Mon, 25 Jun 2018 20:33:28 +0000 (20:33 +0000)]
PR tree-optimization/85700 - Spurious -Wstringop-truncation warning with strncat

gcc/ChangeLog:

PR tree-optimization/85700
* gimple-fold.c (gimple_fold_builtin_strncat): Adjust comment.
* tree-ssa-strlen.c (is_strlen_related_p): Handle integer subtraction.
(maybe_diag_stxncpy_trunc): Distinguish strncat from strncpy.

gcc/testsuite/ChangeLog:

PR tree-optimization/85700
* gcc.dg/Wstringop-truncation-4.c: New test.

From-SVN: r262110

6 years agoextend.texi (Zero-length arrays): Update and clarify.
Martin Sebor [Mon, 25 Jun 2018 19:46:14 +0000 (19:46 +0000)]
extend.texi (Zero-length arrays): Update and clarify.

gcc/ChangeLog:

* doc/extend.texi (Zero-length arrays): Update and clarify.

From-SVN: r262109

6 years agoconfig.gcc (powerpc64le*): Revert January 16th...
Michael Meissner [Mon, 25 Jun 2018 18:59:55 +0000 (18:59 +0000)]
config.gcc (powerpc64le*): Revert January 16th...

2018-06-25  Michael Meissner  <meissner@linux.ibm.com>

* config.gcc (powerpc64le*): Revert January 16th, 2018 patch that
added IEEE/IBM long double multilib support on PowerPC little
endian Linux systems.
* config/rs6000/linux64.h (MULTILIB_DEFAULTS_IEEE): Likewise.
(MULTILIB_DEFAULTS): Likewise.
* config/rs6000/rs6000.c (rs6000_option_override_internal):
Likewise.
* config/rs6000/rs6000.h (TARGET_IEEEQUAD_MULTILIB): Likewise.
* config/rs6000/t-ldouble-linux64le-ibm: Delete, no longer used.
* config/rs6000/t-ldouble-linux64le-ieee: Delete, no longer used.

From-SVN: r262105

6 years agoFix -finit-derived for c_ptr and c_funptr in programs which use
Fritz Reese [Mon, 25 Jun 2018 18:33:11 +0000 (18:33 +0000)]
Fix -finit-derived for c_ptr and c_funptr in programs which use
    iso_c_binding.

    gcc/fortran/ChangeLog:

    2018-06-25  Fritz Reese  <fritzoreese@gmail.com>

PR fortran/82972
        PR fortran/83088
        PR fortran/85851
* expr.c (component_initializer): Assign init expr to c->initializer.
(generate_isocbinding_initializer): New.
(gfc_generate_initializer): Call generate_isocbinding_initializer to
generate initializers for c_ptr and c_funptr with -finit-derived.

    gcc/testsuite/ChangeLog:

    2018-06-25  Fritz Reese  <fritzoreese@gmail.com>

PR fortran/82972
        PR fortran/83088
        PR fortran/85851
* gfortran.dg/init_flag_17.f90: New testcase.

From-SVN: r262104

6 years agogcc_qsort: avoid overlapping memcpy (PR 86311)
Alexander Monakov [Mon, 25 Jun 2018 17:44:15 +0000 (20:44 +0300)]
gcc_qsort: avoid overlapping memcpy (PR 86311)

PR middle-end/86311
* sort.cc (REORDER_23): Avoid memcpy with same destination and source.
(REORDER_45): Likewise.

From-SVN: r262092

6 years agoPR libstdc++/86292 fix exception safety of std::vector<InputIterator> constructor
Jonathan Wakely [Mon, 25 Jun 2018 16:46:33 +0000 (17:46 +0100)]
PR libstdc++/86292 fix exception safety of std::vector<InputIterator> constructor

PR libstdc++/86292
* include/bits/stl_vector.h (vector::_M_range_initialize<InputIter>):
Add try-catch block.
* testsuite/23_containers/vector/cons/86292.cc: New.

From-SVN: r262029

6 years ago* doc/xml/manual/status_cxx2017.xml: Document N4531 status.
Jonathan Wakely [Mon, 25 Jun 2018 16:42:28 +0000 (17:42 +0100)]
* doc/xml/manual/status_cxx2017.xml: Document N4531 status.

From-SVN: r262025

6 years agoAdd experimental::sample and experimental::shuffle from N4531
Jonathan Wakely [Mon, 25 Jun 2018 16:23:49 +0000 (17:23 +0100)]
Add experimental::sample and experimental::shuffle from N4531

The additions to <experimental/random> were added in 2015 but the new
algorithms in <experimental/algorithm> were not. This adds them.

* include/experimental/algorithm (sample, shuffle): Add new overloads
using per-thread random number engine.
* testsuite/experimental/algorithm/sample.cc: Simpify and reduce
dependencies by using __gnu_test::test_container.
* testsuite/experimental/algorithm/sample-2.cc: New.
* testsuite/experimental/algorithm/shuffle.cc: New.

From-SVN: r262024

6 years agop9-extract-1.c: Make second argument of vec_extract a signed int.
Carl Love [Mon, 25 Jun 2018 16:04:14 +0000 (16:04 +0000)]
p9-extract-1.c: Make second argument of vec_extract a signed int.

gcc/testsuite/ChangeLog:

2018-06-25  Carl Love  <cel@us.ibm.com>

* gcc.target/powerpc/p9-extract-1.c: Make second argument of
  vec_extract a signed int. Add vec_extract tests for bool char
and bool int.
* gcc.target/powerpc/p9-extract-4.c:  New test file for long long
vec_extract tests.

From-SVN: r262023

6 years agov850.md (divmodhi4): Make sure to sign extend the dividend to 32 bits.
Jeff Law [Mon, 25 Jun 2018 16:02:16 +0000 (10:02 -0600)]
v850.md (divmodhi4): Make sure to sign extend the dividend to 32 bits.

* config/v850/v850.md (divmodhi4): Make sure to sign extend the
dividend to 32 bits.  Adjust length.
(udivmodhi4): Cleanup output template.  Fix length.

From-SVN: r262022

6 years ago[testsuite/guality] Fix tcl error on gdb -v failure
Tom de Vries [Mon, 25 Jun 2018 15:56:13 +0000 (15:56 +0000)]
[testsuite/guality] Fix tcl error on gdb -v failure

2018-06-25  Tom de Vries  <tdevries@suse.de>

* lib/gcc-gdb-test.exp (report_gdb): Handle gdb -v failure.

From-SVN: r262021

6 years agovsx.md: Change word selector to prefered location.
Carl Love [Mon, 25 Jun 2018 15:43:34 +0000 (15:43 +0000)]
vsx.md: Change word selector to prefered location.

gcc/ChangeLog:

2018-06-25  Carl Love  <cel@us.ibm.com>

* config/rs6000/vsx.md: Change word selector to prefered location.

Signed-off-by: Carl Love <cel@us.ibm.com>
---
 gcc/config/rs6000/vsx.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gcc/config/rs6000/vsx.md b/gcc/config/rs6000/vsx.md
index a528ef2e8..6e7a4277f 100644
--- a/gcc/config/rs6000/vsx.md
+++ b/gcc/config/rs6000/vsx.md
@@ -3934,7 +3934,7 @@

   operands[5] = gen_rtx_REG (V4SFmode, tmp_regno);
   operands[6] = gen_rtx_REG (V4SImode, tmp_regno);
-  operands[7] = GEN_INT (BYTES_BIG_ENDIAN ? 1 : 2);
+  operands[7] = GEN_INT (BYTES_BIG_ENDIAN ? 0 : 3);
   operands[8] = gen_rtx_REG (V4SImode, reg_or_subregno (operands[0]));
 }
   [(set_attr "type" "vecperm")
--
2.17.1

From-SVN: r262020