gcc.git
5 years agoImport these changes from the binutils/gdb repository:
Nick Clifton [Tue, 11 Jun 2019 12:05:49 +0000 (12:05 +0000)]
Import these changes from the binutils/gdb repository:

2019-05-28  Nick Alcock  <nick.alcock@oracle.com>

* Makefile.def (dependencies): configure-libctf depends on all-bfd
and all its deps.
* Makefile.in: Regenerated.

2019-05-28  Nick Alcock  <nick.alcock@oracle.com>

* Makefile.def (host_modules): Add libctf.
* Makefile.def (dependencies): Likewise.
libctf depends on zlib, libiberty, and bfd.
* Makefile.in: Regenerated.
* configure.ac (host_libs): Add libctf.
* configure: Regenerated.

From-SVN: r272148

5 years agotoir.cc (pop_label): Only queue labels in a vector.
Richard Biener [Tue, 11 Jun 2019 08:30:47 +0000 (08:30 +0000)]
toir.cc (pop_label): Only queue labels in a vector.

2019-06-11  Richard Biener  <rguenthe@suse.de>

d/90778
* toir.cc (pop_label): Only queue labels in a vector.
(cmp_labels): Label decl comparator.
(pop_binding_level): Pop labels in DECL_UID order to avoid
debug info differences.

From-SVN: r272146

5 years agore PR bootstrap/90819 (-Walloc-size-larger-than error in trans-mem.c)
Jakub Jelinek [Tue, 11 Jun 2019 08:20:02 +0000 (10:20 +0200)]
re PR bootstrap/90819 (-Walloc-size-larger-than error in trans-mem.c)

PR bootstrap/90819
* trans-mem.c (tm_memopt_compute_available): Add assertion
that blocks is not empty.  Formatting fix.

From-SVN: r272145

5 years agoDisable htable sanitization in pt.c (PR c++/87847).
Martin Liska [Tue, 11 Jun 2019 07:55:19 +0000 (09:55 +0200)]
Disable htable sanitization in pt.c (PR c++/87847).

2019-06-11  Martin Liska  <mliska@suse.cz>

PR c++/87847
* hash-table.h: Extend create_gcc, add one parameter
that is passed into hash_table::hash_table.
2019-06-11  Martin Liska  <mliska@suse.cz>

PR c++/87847
* pt.c (init_template_processing): Disable hash table
sanitization for decl_specializations and type_specializations.

From-SVN: r272144

5 years ago* libgcov-merge.c (__gcov_merge_single): Revert previous change.
Jakub Jelinek [Tue, 11 Jun 2019 07:54:17 +0000 (09:54 +0200)]
* libgcov-merge.c (__gcov_merge_single): Revert previous change.

From-SVN: r272143

5 years agoDaily bump.
GCC Administrator [Tue, 11 Jun 2019 00:16:16 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r272141

5 years ago* config/i386/i386.md (absneg fp_reg splitter): Fix operator mode.
Uros Bizjak [Mon, 10 Jun 2019 21:51:42 +0000 (23:51 +0200)]
* config/i386/i386.md (absneg fp_reg splitter): Fix operator mode.

From-SVN: r272134

5 years agocompiler: support inlining functions that use index expressions
Ian Lance Taylor [Mon, 10 Jun 2019 21:34:12 +0000 (21:34 +0000)]
compiler: support inlining functions that use index expressions

    Also move the determine_types pass on an inlined function body to one
    place, rather than doing it ad hoc as needed.

    This adds 79 new inlinable functions in the standard library, such as
    bytes.HasPrefix and bytes.LastIndexByte.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/181261

From-SVN: r272133

5 years agocompiler: make heap expression's write barrier conditional
Ian Lance Taylor [Mon, 10 Jun 2019 21:08:42 +0000 (21:08 +0000)]
compiler: make heap expression's write barrier conditional

    Heap_expression::do_get_backend emits an unconditional write
    barrier if the type has pointers and it is not a stack allocation.
    This CL changes it to use a write barrier for the assignment only
    when write barriers are enabled. While here, also change it to
    call gcWriteBarrier instead of typedmemmove for pointer-shaped
    types.

    For this to work, Function::build needs to be adjusted so that
    Heap_expression::do_get_backend is called when there is a parent
    block.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/181540

From-SVN: r272132

5 years agocompiler: permit inlining functions with labels and goto statements
Ian Lance Taylor [Mon, 10 Jun 2019 21:02:20 +0000 (21:02 +0000)]
compiler: permit inlining functions with labels and goto statements

    This permits inlining functions with for loops and some switches, as
    they are lowered to if and goto statements before exporting them.

    This by itself only adds three new inlinable functions in the standard
    library: sort.Search, context.(*emptyCtx).String, and
    cmd/go/internal/work.(*Builder).disableBuildID.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/181197

From-SVN: r272131

5 years agocompiler: use gcWriteBarrier for pointer-shaped struct/array
Ian Lance Taylor [Mon, 10 Jun 2019 20:35:14 +0000 (20:35 +0000)]
compiler: use gcWriteBarrier for pointer-shaped struct/array

    If a struct/array is pointer-shaped (i.e. having a single field
    that is pointer-shaped), we can use gcWriteBarrier instead of
    typedmemmove for the write barrier.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/181539

From-SVN: r272130

5 years agore PR c++/87250 (Internal compiler error with -Os -fsyntax-only)
Matthew Beliveau [Mon, 10 Jun 2019 20:35:00 +0000 (20:35 +0000)]
re PR c++/87250 (Internal compiler error with -Os -fsyntax-only)

PR c++/87250
* g++.dg/cpp0x/pr87250.C: New test.

From-SVN: r272129

5 years agoconstexpr.c (free_constructor): New.
Jason Merrill [Mon, 10 Jun 2019 19:32:34 +0000 (15:32 -0400)]
constexpr.c (free_constructor): New.

* constexpr.c (free_constructor): New.

(cxx_eval_call_expression): Free parameter value CONSTRUCTORs.

From-SVN: r272127

5 years agoReduce unsharing in constexpr call evaluation.
Jason Merrill [Mon, 10 Jun 2019 19:32:30 +0000 (15:32 -0400)]
Reduce unsharing in constexpr call evaluation.

* constexpr.c (unshare_constructor): Only unshare if T is itself a
CONSTRUCTOR.
(cxx_eval_call_expression): Don't call it on the result here.

From-SVN: r272126

5 years agoReduce constexpr_call memory consumption.
Jason Merrill [Mon, 10 Jun 2019 19:31:49 +0000 (15:31 -0400)]
Reduce constexpr_call memory consumption.

* constexpr.c (cxx_bind_parameters_in_call): Use TREE_VEC rather
than TREE_LIST.
(constexpr_call_hasher::equal, cxx_bind_parameters_in_call)
(cxx_eval_call_expression): Adjust.

From-SVN: r272125

5 years agocompiler: make escape analysis work with imported inlineable functions
Ian Lance Taylor [Mon, 10 Jun 2019 19:30:21 +0000 (19:30 +0000)]
compiler: make escape analysis work with imported inlineable functions

    The escape analysis was written before we import inlineable
    function bodies, and in some places it skipped functions that are
    not in the local package. Now that there are imported function
    bodies, make the escape analysis work with them.

    Note that it is necessary for the escape analysis to run on
    imported function bodies, even if they are already tagged. The
    tags only have the information of the parameters (receiver,
    results), but not the internal nodes, e.g. local variables. We
    still need to do the analysis to get all the information. (In the
    future maybe we could export/import escape info for internal
    nodes also, then we don't need to redo the analysis.)

    Also add assertions to ensure that if we analyze the same
    function in multiple places, they'd better agree with each other.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/181537

From-SVN: r272124

5 years agoi386-protos.h (ix86_split_fp_absneg_operator): New prototype.
Uros Bizjak [Mon, 10 Jun 2019 19:17:57 +0000 (21:17 +0200)]
i386-protos.h (ix86_split_fp_absneg_operator): New prototype.

* config/i386/i386-protos.h (ix86_split_fp_absneg_operator):
New prototype.
* config/i386/i386-expand.c (ix86_expand_fp_absneg_operator):
Emit clobber also for non-sse operations.
(ix86_split_fp_absneg_operator): New function.
* config/i386/i386.md (SSEMODEF): New mode iterator.
(ssevecmodef): New mode attribute.
(<code>tf2): Use absneg code iterator.
(*<code>tf2_1): Rename from *absnegtf3_sse. Use absneg code iterator.
Add three-operand AVX alternatives.
(*<code><mode>2_i387_1): Rename from *absnegxf2_i387.
Use absneg code iterator and X87MODEF mode iterator.
(absneg fp_reg non-sse splitter): Call absneg code iterator
and X87MODEF mode iterator.
(absneg general_reg non-sse splitter): Use absneg code iterator
and X87MODEF mode iterator.  Use ix86_split_fp_absneg_operator.
(*<code><mode>2_1): Rename from *absneg<mode>2.  Use absneg
code iterator.  Add three-operand AVX alternative.
(absneg sse_reg splitter): Use absneg code iterator
and SSEMODEF mode iterator.  Handle AVX operands.
(absneg fp_reg splitter): Use absneg code iterator
and MODEF mode iterator.
(absneg general_reg splitter): Merge splitters using MODEF mode
iterator.  Use absneg code iterator.  Call
ix86_split_fp_absneg_operator.
(*<code><mode>2_i387): Rename from *<code><mode>2_1.
Do not enable for non-sse modes before reload.
(CSGNMODE): Remove.
(CSGNVMODE): Ditto.
(copysing<mode>3): Use SSEMODEF instead of CSGNMODE and
ssevecmodef mode attribute instaed of CSGNVMODE.
(copysign<mode>3_const): Ditto.
(copysign<mode>3_var): Ditto.
* config/i386/i386.md (*<code><mode>2): Rename from *absneg<mode>2.
Use absneg code iterator.  Simplify code using std::swap.
* config/i386/predicates.md (absneg_operator): Remove.

From-SVN: r272123

5 years agore PR testsuite/90772 (g++.dg/cpp1y/feat-cxx14.C and several others fails starting...
Jakub Jelinek [Mon, 10 Jun 2019 16:18:52 +0000 (18:18 +0200)]
re PR testsuite/90772 (g++.dg/cpp1y/feat-cxx14.C and several others fails starting with r272011)

PR testsuite/90772
* g++.dg/cpp1y/feat-cxx14.C: Use std::size_t instead of size_t.
* g++.dg/cpp1z/feat-cxx1z.C: Likewise.
* g++.dg/cpp2a/feat-cxx2a.C: Likewise.
* g++.dg/cpp1z/pr85569.C: Include <functional>.
* g++.dg/tree-ssa/pr80293.C: Include <cstdint>.
* g++.dg/tree-ssa/pr69336.C: Include <stdexcept>.

From-SVN: r272122

5 years agoPR other/90695 reduce testcase to remove library dependency
Jonathan Wakely [Mon, 10 Jun 2019 15:55:36 +0000 (16:55 +0100)]
PR other/90695 reduce testcase to remove library dependency

This reproduces the original ICE fixed by r178857 (tested at r178852 and
r178860), without depending on a libstdc++ header that keeps changing.

The number of errors differs between C++14 and C++17 modes, so the fixed
test uses dg-excess-errors to match any number of them. The precise
errors aren't what's being tested for here anyway, the point of the test
is to verify the ICE in PR 50391 is fixed.

PR other/90695
* g++.dg/cpp0x/noexcept15.C: Remove dependency on library header.

From-SVN: r272121

5 years agogimple-fold.c (get_range_strlen): Update comment that didn't make it into r267503...
Martin Sebor [Mon, 10 Jun 2019 15:54:58 +0000 (15:54 +0000)]
gimple-fold.c (get_range_strlen): Update comment that didn't make it into r267503 or related commits.

gcc/ChangeLog:

* gimple-fold.c (get_range_strlen): Update comment that didn't
make it into r267503 or related commits.

From-SVN: r272120

5 years agogcov-tool: Mark {merge,rewrite}_usage with noreturn attribute
Vladislav Ivanishin [Mon, 10 Jun 2019 14:17:53 +0000 (14:17 +0000)]
gcov-tool: Mark {merge,rewrite}_usage with noreturn attribute

2019-06-10  Vladislav Ivanishin  <vlad@ispras.ru>

* gcov-tool.c (merge_usage, rewrite_usage): Mark with
ATTRIBUTE_NORETURN thus making consistent with overlap_usage.

From-SVN: r272119

5 years agotree.def (OMP_SCAN): New tree code.
Jakub Jelinek [Mon, 10 Jun 2019 12:20:30 +0000 (14:20 +0200)]
tree.def (OMP_SCAN): New tree code.

* tree.def (OMP_SCAN): New tree code.
* tree-core.h (enum omp_clause_code): Add OMP_CLAUSE_INCLUSIVE and
OMP_CLAUSE_EXCLUSIVE.
* tree.h (OMP_CLAUSES): Use OMP_SCAN instead of OMP_TASKGROUP.
(OMP_SCAN_BODY, OMP_SCAN_CLAUSES): Define.
* tree.c (omp_clause_num_ops, omp_clause_code_name): Add entries for
OMP_CLAUSE_{IN,EX}CLUSIVE.
(walk_tree_1): Handle OMP_CLAUSE_{IN,EX}CLUSIVE.
* tree-nested.c (convert_nonlocal_reference_stmt,
convert_local_reference_stmt, convert_gimple_call): Handle
GIMPLE_OMP_SCAN.
* tree-pretty-print.c (dump_omp_clause): Handle
OMP_CLAUSE_{IN,EX}CLUSIVE.
(dump_generic_node): Handle OMP_SCAN.
* gimple.def (GIMPLE_OMP_SCAN): New gimple code.
* gimple.h (gomp_scan): New type.
(is_a_helper <gomp_scan *>::test,
is_a_helper <const gomp_scan *>::test): New templates.
(gimple_build_omp_scan): Declare.
(gimple_omp_scan_clauses, gimple_omp_scan_clauses_ptr,
gimple_omp_scan_set_clauses): New inline functions.
(CASE_GIMPLE_OMP): Add case GIMPLE_OMP_SCAN:.
* gimple.c (gimple_build_omp_scan): New function.
(gimple_copy): Handle GIMPLE_OMP_SCAN.
* gimple-walk.c (walk_gimple_op, walk_gimple_stmt): Likewise.
* gimple-pretty-print.c (dump_gimple_omp_block): Don't handle
GIMPLE_OMP_TASKGROUP.
(dump_gimple_omp_scan): New function.
(pp_gimple_stmt_1): Handle GIMPLE_OMP_SCAN.
* gimple-low.c (lower_stmt): Handle GIMPLE_OMP_SCAN.
* tree-inline.c (remap_gimple_stmt, estimate_num_insns): Likewise.
* gimplify.c (enum gimplify_omp_var_data): Add GOVD_REDUCTION_INSCAN.
(is_gimple_stmt): Handle OMP_SCAN.
(gimplify_scan_omp_clauses): Reject inscan reductions on constructs
other than OMP_FOR or OMP_SIMD.  Handle OMP_CLAUSE_{IN,EX}CLUSIVE.
(gimplify_adjust_omp_clauses): Diagnose inscan reductions not
mentioned in nested #pragma omp scan.  Handle
OMP_CLAUSE_{IN,EX}CLUSIVE.
(gimplify_expr): Handle OMP_SCAN.
* omp-low.c (check_omp_nesting_restrictions): For parent context,
look through GIMPLE_OMP_SCAN context.  Allow #pragma omp scan in
simd constructs.
(scan_omp_1_stmt, lower_omp_1, diagnose_sb_1, diagnose_sb_2): Handle
GIMPLE_OMP_SCAN.
c-family/
* c-pragma.h (enum pragma_kind): Add PRAGMA_OMP_SCAN.
* c-pragma.c (omp_pragmas_simd): Add #pragma omp scan.
* c-omp.c (c_omp_split_clauses): Diagnose inscan reductions on
combined/composite constructs where it is not allowed.  Copy over
OMP_CLAUSE_REDUCTION_INSCAN.
c/
* c-parser.c (c_parser_pragma): Reject PRAGMA_OMP_SCAN.
(c_parser_omp_clause_reduction): Don't sorry_at on inscan reductions.
(c_parser_omp_scan_loop_body): New function.
(c_parser_omp_for_loop): Call c_parser_omp_scan_loop_body if there are
inscan reduction clauses.
* c-typeck.c (c_finish_omp_clauses): Reject mixing inscan with
non-inscan reductions on the same construct, or inscan reductions with
ordered or schedule clauses, or inscan array reductions.
cp/
* parser.c (cp_parser_omp_clause_reduction): Don't sorry_at on inscan
reductions.
(cp_parser_omp_scan_loop_body): New function.
(cp_parser_omp_for_loop): Call cp_parser_omp_scan_loop_body if there
are inscan reduction clauses.
(cp_parser_pragma): Reject PRAGMA_OMP_SCAN.
* semantics.c (finish_omp_clauses): Reject mixing inscan with
non-inscan reductions on the same construct, or inscan reductions with
ordered or schedule clauses, or inscan array reductions.
* pt.c (tsubst_omp_clauses): Handle OMP_CLAUSE_{IN,EX}CLUSIVE.
(tsubst_expr): Handle OMP_SCAN.
testsuite/
* c-c++-common/gomp/scan-1.c: New test.
* c-c++-common/gomp/scan-2.c: New test.
* c-c++-common/gomp/scan-3.c: New test.
* c-c++-common/gomp/scan-4.c: New test.

From-SVN: r272117

5 years agoUpdate __gcov_* scanned function name in a test-case.
Martin Liska [Mon, 10 Jun 2019 11:28:49 +0000 (13:28 +0200)]
Update __gcov_* scanned function name in a test-case.

2019-06-10  Martin Liska  <mliska@suse.cz>

* gcc.dg/no_profile_instrument_function-attr-1.c: Fix
function name.

From-SVN: r272116

5 years agoReduce SCCs in IPA postorder.
Martin Liska [Mon, 10 Jun 2019 11:07:24 +0000 (13:07 +0200)]
Reduce SCCs in IPA postorder.

2019-06-10  Martin Liska  <mliska@suse.cz>

* ipa-cp.c (ignore_edge_p): New function.
(build_toporder_info): Use it.
* ipa-inline.c (ignore_edge_p): New function/
(inline_small_functions): Use it.
* ipa-pure-const.c (ignore_edge_for_nothrow):
Verify opt_for_fn for caller and callee.
(ignore_edge_for_pure_const): Likewise.
* ipa-reference.c (ignore_edge_p): Extend to check
for opt_for_fn.
* ipa-utils.c (searchc): Refactor.
* ipa-utils.h: Fix coding style.

From-SVN: r272115

5 years agoAdd missing ATTR_UNUSED (PR bootstrap/90808).
Martin Liska [Mon, 10 Jun 2019 09:53:46 +0000 (11:53 +0200)]
Add missing ATTR_UNUSED (PR bootstrap/90808).

2019-06-10  Martin Liska  <mliska@suse.cz>

PR bootstrap/90808
* libgcov.h: Add ATTRIBUTE_UNUSED.

From-SVN: r272114

5 years ago[ARC] Update RTX costs.
Claudiu Zissulescu [Mon, 10 Jun 2019 08:25:37 +0000 (10:25 +0200)]
[ARC] Update RTX costs.

Update RTX costs to reflect better the ARC architecture.

gcc/
xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>

* config/arc/arc.c (arc_rtx_costs): Update costs.

/gcc/testsuite
xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>

* gcc.target/arc/jumptables.c: Update test.

From-SVN: r272113

5 years ago[ARC] Improve code gen when compiling for size
Claudiu Zissulescu [Mon, 10 Jun 2019 08:25:25 +0000 (10:25 +0200)]
[ARC] Improve code gen when compiling for size

When optimizing for size, try to avoid using long immediate by
employing alternative instructions.

gcc/
xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>

        * config/arc/arc-protos.h (arc_check_ior_const): Declare.
        (arc_split_ior): Likewise.
        (arc_check_mov_const): Likewise.
        (arc_split_mov_const): Likewise.
        * config/arc/arc.c (arc_print_operand): Fix 'z' letter.
        (arc_rtx_costs): Replace check Crr with Cax constraint.
        (prepare_move_operands): Cleanup, remove unused code.
        (arc_split_ior): New function.
        (arc_check_ior_const): Likewise.
        (arc_split_mov_const): Likewise.
        (arc_check_mov_const): Likewise.
        * config/arc/arc.md (movsi_insn): Restructure it, and convert it
        in define_insn_and_split pattern.
        (iorsi3): Likewise.
        (mulsi3_v2): Add new matching variant.
        (andsi3_i): Cleanup pattern.
        (rotrsi3_cnt1): Update pattern.
        (rotrsi3_cnt8): New pattern.
        (ashlsi2_cnt8): Likewise.
        (ashlsi2_cnt16): Likewise.
        * config/arc/constraints.md (C0p): Update constraint.
        (Crr): Remove it.
        (C0x): New pattern.
        (Cax): New pattern.

testsuite/
xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>

        * gcc.target/arc/and-cnst-size.c: New test.
        * gcc.target/arc/mov-cnst-size.c: Likewise.
        * gcc.target/arc/or-cnst-size.c: Likewise.
        * gcc.target/arc/store-merge-1.c: Update test.
        * gcc.target/arc/arc700-stld-hazard.c: Likewise.
        * gcc.target/arc/cmem-1.c: Likewise.
        * gcc.target/arc/cmem-2.c: Likewise.
        * gcc.target/arc/cmem-3.c: Likewise.
        * gcc.target/arc/cmem-4.c: Likewise.
        * gcc.target/arc/cmem-5.c: Likewise.
        * gcc.target/arc/cmem-6.c: Likewise.
        * gcc.target/arc/loop-4.c: Likewise.
        * gcc.target/arc/movh_cl-1.c: Likewise.
        * gcc.target/arc/sdata-3.c: Likewise.

From-SVN: r272112

5 years agoIPA ICF: enhance dump about items in a non-singular class.
Martin Liska [Mon, 10 Jun 2019 07:43:11 +0000 (09:43 +0200)]
IPA ICF: enhance dump about items in a non-singular class.

2019-06-10  Martin Liska  <mliska@suse.cz>

* ipa-icf.c (sem_item_optimizer::parse_nonsingleton_classes):
Update coding style.
(sem_item_optimizer::dump_cong_classes):
Print how many items are in a non-singular class.  Improve
coding style.
2019-06-10  Martin Liska  <mliska@suse.cz>

* gcc.dg/ipa/pr68035.c: Update scanned pattern.

From-SVN: r272111

5 years agoAdd warn_unused_result attribute for memory-related functions in libiberty.
Martin Liska [Mon, 10 Jun 2019 07:42:43 +0000 (09:42 +0200)]
Add warn_unused_result attribute for memory-related functions in libiberty.

2019-06-10  Martin Liska  <mliska@suse.cz>

* ansidecl.h (ATTRIBUTE_WARN_UNUSED_RESULT): New macro.
* libiberty.h (xmalloc): Use it.
(xrealloc): Likewise.
(xcalloc): Likewise.
(xstrdup): Likewise.
(xstrndup): Likewise.
(xmemdup): Likewise.

From-SVN: r272110

5 years agoAdd alloc_size for libiberty memory allocation functions.
Martin Liska [Mon, 10 Jun 2019 07:42:22 +0000 (09:42 +0200)]
Add alloc_size for libiberty memory allocation functions.

2019-06-10  Martin Liska  <mliska@suse.cz>

* ansidecl.h:
(ATTRIBUTE_RESULT_SIZE_1): Define new macro.
(ATTRIBUTE_RESULT_SIZE_2): Likewise.
(ATTRIBUTE_RESULT_SIZE_1_2): Likewise.
* libiberty.h (xmalloc): Add RESULT_SIZE attribute.
(xrealloc): Likewise.
(xcalloc): Likewise.

From-SVN: r272109

5 years agoUpdate a bit dump format.
Martin Liska [Mon, 10 Jun 2019 07:39:34 +0000 (09:39 +0200)]
Update a bit dump format.

2019-06-10  Martin Liska  <mliska@suse.cz>

* value-prof.c (dump_histogram_value): Change dump format.
(gimple_mod_subtract_transform): Remove legacy comment.

From-SVN: r272108

5 years agoDump histograms only if present.
Martin Liska [Mon, 10 Jun 2019 07:39:20 +0000 (09:39 +0200)]
Dump histograms only if present.

2019-06-10  Martin Liska  <mliska@suse.cz>

* value-prof.c (dump_histogram_value): Print histogram values
only if present.

From-SVN: r272107

5 years agoImplement N disk counters for single value and indirect call counters.
Martin Liska [Mon, 10 Jun 2019 07:38:59 +0000 (09:38 +0200)]
Implement N disk counters for single value and indirect call counters.

2019-06-10  Martin Liska  <mliska@suse.cz>

* gcov-io.h (GCOV_DISK_SINGLE_VALUES): New.
(GCOV_SINGLE_VALUE_COUNTERS): Likewise.
* ipa-profile.c (ipa_profile_generate_summary):
Use get_most_common_single_value.
* tree-profile.c (gimple_init_gcov_profiler):
Instrument with __gcov_one_value_profiler_v2
and __gcov_indirect_call_profiler_v4.
* value-prof.c (dump_histogram_value):
Print all values for HIST_TYPE_SINGLE_VALUE.
(stream_out_histogram_value): Update assert for
N values.
(stream_in_histogram_value): Set number of
counters for HIST_TYPE_SINGLE_VALUE.
(get_most_common_single_value): New.
(gimple_divmod_fixed_value_transform):
Use get_most_common_single_value.
(gimple_ic_transform): Likewise.
(gimple_stringops_transform): Likewise.
(gimple_find_values_to_profile): Set number
of counters for HIST_TYPE_SINGLE_VALUE.
* value-prof.h (get_most_common_single_value):
New.
2019-06-10  Martin Liska  <mliska@suse.cz>

* Makefile.in: Add __gcov_one_value_profiler_v2,
__gcov_one_value_profiler_v2_atomic and
__gcov_indirect_call_profiler_v4.
* libgcov-merge.c (__gcov_merge_single): Change
function signature.
(merge_single_value_set): New.
* libgcov-profiler.c (__gcov_one_value_profiler_body):
Update functionality.
(__gcov_one_value_profiler): Remove.
(__gcov_one_value_profiler_v2): ... this.
(__gcov_one_value_profiler_atomic): Rename to ...
(__gcov_one_value_profiler_v2_atomic): this.
(__gcov_indirect_call_profiler_v3): Rename to ...
(__gcov_indirect_call_profiler_v4): ... this.
* libgcov.h (__gcov_one_value_profiler): Remove.
(__gcov_one_value_profiler_atomic): Remove.
(__gcov_one_value_profiler_v2_atomic): New.
(__gcov_indirect_call_profiler_v3): Remove.
(__gcov_one_value_profiler_v2): New.
(__gcov_indirect_call_profiler_v4): New.
(gcov_get_counter_ignore_scaling): New function.

From-SVN: r272106

5 years agotestsuite - Require alias support in a test using it.
Iain Sandoe [Mon, 10 Jun 2019 07:04:55 +0000 (07:04 +0000)]
testsuite - Require alias support in a test using it.

2019-06-10  Iain Sandoe  <iain@sandoe.co.uk>

* gcc.dg/attr-copy-6.c: Require alias support.

From-SVN: r272105

5 years agoFix build with --enable-gather-detailed-mem-stats.
Martin Liska [Mon, 10 Jun 2019 07:04:39 +0000 (09:04 +0200)]
Fix build with --enable-gather-detailed-mem-stats.

2019-06-10  Martin Liska  <mliska@suse.cz>

* hash-map.h: Pass default value to hash_table ctor.
* hash-table.h: Add default value to call of a ctor.

From-SVN: r272104

5 years agoDaily bump.
GCC Administrator [Mon, 10 Jun 2019 00:16:22 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r272102

5 years agore PR c++/65175 (ICE forming a typedef with an alias template)
Marek Polacek [Sun, 9 Jun 2019 23:18:28 +0000 (23:18 +0000)]
re PR c++/65175 (ICE forming a typedef with an alias template)

PR c++/65175
* g++.dg/cpp0x/alias-decl-69.C: New test.

From-SVN: r272098

5 years agore PR c++/60366 (ICE with self-invoking lambdas)
Marek Polacek [Sun, 9 Jun 2019 15:41:07 +0000 (15:41 +0000)]
re PR c++/60366 (ICE with self-invoking lambdas)

PR c++/60366
* g++.dg/cpp0x/lambda/lambda-ice32.C: New test.

From-SVN: r272092

5 years agore PR fortran/89365 (Inquiry functions for assumed rank objects fail)
Paul Thomas [Sun, 9 Jun 2019 09:43:37 +0000 (09:43 +0000)]
re PR fortran/89365 (Inquiry functions for assumed rank objects fail)

2019-06-09  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/89365
* gfortran.dg/assumed_rank_bounds_3.f90 : New test.

From-SVN: r272090

5 years agoDaily bump.
GCC Administrator [Sun, 9 Jun 2019 00:16:18 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r272089

5 years agoTest for C++20 p0858 - ConstexprIterator requirements.
Edward Smith-Rowland [Sat, 8 Jun 2019 22:18:36 +0000 (22:18 +0000)]
Test for C++20 p0858 - ConstexprIterator requirements.

2019-06-08  Edward Smith-Rowland  <3dw4rd@verizon.net>

Test for C++20 p0858 - ConstexprIterator requirements.
* testsuite/21_strings/basic_string_view/requirements/constexpr_iter.cc:
New test.
* testsuite/23_containers/array/requirements/constexpr_iter.cc:
New test.

From-SVN: r272085

5 years agore PR fortran/90786 (ICE on procedure pointer assignment to function with class point...
Paul Thomas [Sat, 8 Jun 2019 15:52:38 +0000 (15:52 +0000)]
re PR fortran/90786 (ICE on procedure pointer assignment to function with class pointer result)

2019-06-08  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/90786
* trans-expr.c (pointer_assignment_is_proc_pointer) Remove as
it is very simple and only called from one place.
(gfc_trans_pointer_assignment): Rename non_proc_pointer_assign
as non_proc_ptr_assign. Assign to it directly, rather than call
to above, deleted function and use gfc_expr_attr instead of
only checking the reference chain.

2019-06-08  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/90786
* gfortran.dg/proc_ptr_51.f90 : New test.

From-SVN: r272084

5 years agore PR c++/52269 ([C++11] Body of constexpr function templates instantiated too eagerl...
Marek Polacek [Sat, 8 Jun 2019 14:10:42 +0000 (14:10 +0000)]
re PR c++/52269 ([C++11] Body of constexpr function templates instantiated too eagerly in unevaluated operands)

PR c++/52269
* g++.dg/cpp0x/constexpr-decltype4.C: New test.

From-SVN: r272083

5 years agore PR fortran/90744 (Bogus length for character temporaries passed to external proced...
Thomas Koenig [Sat, 8 Jun 2019 13:50:42 +0000 (13:50 +0000)]
re PR fortran/90744 (Bogus length for character temporaries passed to external procedures since r268992)

2019-06-08  Thomas Koenig  <tkoenig@gcc.gnu.org>
Tomáš Trnka  <trnka@scm.com>

PR fortran/90744
* trans-types.c (get_formal_from_actual_arglist): Unset typespec
flags which make no sense for procedures without explicit
interface.

2019-06-08  Thomas Koenig  <tkoenig@gcc.gnu.org>
Tomáš Trnka  <trnka@scm.com>

PR fortran/90744
* gfortran.dg/deferred_character_33.f90: New test.
* gfortran.dg/deferred_character_33a.f90: New test.

From-SVN: r272082

5 years agoUse consistent spelling of PCLMUL instruction
Jonathan Wakely [Sat, 8 Jun 2019 13:40:25 +0000 (14:40 +0100)]
Use consistent spelling of PCLMUL instruction

* doc/invoke.texi (C Dialect Options): Minor grammatical change.
(x86 Options): Replace all uses of "PCL_MUL" with "PCLMUL"

From-SVN: r272081

5 years agore PR c++/77548 (ICE on invalid C++ code with overloaded functions: in instantiate_ty...
Marek Polacek [Sat, 8 Jun 2019 13:13:48 +0000 (13:13 +0000)]
re PR c++/77548 (ICE on invalid C++ code with overloaded functions: in instantiate_type, at cp/class.c:8270)

PR c++/77548
* g++.dg/other/pr77548.C: New test.

From-SVN: r272079

5 years agore PR c++/72845 (gcc crashes (ICE) when compiling program with complex noexcept decla...
Marek Polacek [Sat, 8 Jun 2019 12:51:07 +0000 (12:51 +0000)]
re PR c++/72845 (gcc crashes (ICE) when compiling program with complex noexcept declaration)

PR c++/72845
* g++.dg/cpp0x/noexcept41.C: New test.

From-SVN: r272078

5 years agoinit_1.c: Remove options -O2 -fno-schedule-insns and instead pass -O.
Prathamesh Kulkarni [Sat, 8 Jun 2019 08:24:43 +0000 (08:24 +0000)]
init_1.c: Remove options -O2 -fno-schedule-insns and instead pass -O.

2019-06-08  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>

* gcc.target/aarch64/sve/init_1.c: Remove options
-O2 -fno-schedule-insns and instead pass -O.
Update assembly in comments.
* gcc.target/aarch64/sve/init_2.c: Likewise.
* gcc.target/aarch64/sve/init_3.c: Likewise.
* gcc.target/aarch64/sve/init_4.c: Likewise.
* gcc.target/aarch64/sve/init_5.c: Likewise and additionally
adjust dg-scan.
* gcc.target/aarch64/sve/init_6.c: Likewise.
* gcc.target/aarch64/sve/init_7.c: Likewise.
* gcc.target/aarch64/sve/init_8.c: Likewise.
* gcc.target/aarch64/sve/init_9.c: Likewise.
* gcc.target/aarch64/sve/init_10.c: Likewise.
* gcc.target/aarch64/sve/init_11.c: Likewise.
* gcc.target/aarch64/sve/init_12.c: Likewise.

From-SVN: r272073

5 years agore PR c++/77747 (GCC allows inheriting constructors from indirect base)
Marek Polacek [Sat, 8 Jun 2019 00:48:54 +0000 (00:48 +0000)]
re PR c++/77747 (GCC allows inheriting constructors from indirect base)

PR c++/77747
* g++.dg/cpp0x/inh-ctor33.C: New test.

From-SVN: r272071

5 years agore PR c++/77967 (ICE in cp_parser_type_name, at cp/parser.c:16419 (trying to add...
Marek Polacek [Sat, 8 Jun 2019 00:30:51 +0000 (00:30 +0000)]
re PR c++/77967 (ICE in cp_parser_type_name, at cp/parser.c:16419 (trying to add a method to a template alias))

PR c++/77967
* g++.dg/cpp0x/alias-decl-68.C: New test.

From-SVN: r272070

5 years agore PR c++/77771 (internal compiler error: in cxx_eval_bit_field_ref, at cp/constexpr...
Marek Polacek [Sat, 8 Jun 2019 00:17:13 +0000 (00:17 +0000)]
re PR c++/77771 (internal compiler error: in cxx_eval_bit_field_ref, at cp/constexpr.c:2090)

PR c++/77771
* g++.dg/cpp0x/constexpr-77771.C: New test.

From-SVN: r272068

5 years agoDaily bump.
GCC Administrator [Sat, 8 Jun 2019 00:16:31 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r272067

5 years agoscanasm.exp (dg-function-on-line): Add pattern for hppa*-*-linux*.
John David Anglin [Fri, 7 Jun 2019 23:15:49 +0000 (23:15 +0000)]
scanasm.exp (dg-function-on-line): Add pattern for hppa*-*-linux*.

* lib/scanasm.exp (dg-function-on-line): Add pattern for hppa*-*-linux*.

From-SVN: r272060

5 years agore PR target/90751 (-fpatchtable-function-entry broken on hppa-linux-gnu-gcc/hppa64...
John David Anglin [Fri, 7 Jun 2019 23:13:08 +0000 (23:13 +0000)]
re PR target/90751 (-fpatchtable-function-entry  broken on hppa-linux-gnu-gcc/hppa64-linux-gnu-gcc)

PR target/90751
* config/pa/pa-linux.h (ASM_DECLARE_FUNCTION_NAME): Update comment.
Call pa_output_function_label>
(TARGET_ASM_FUNCTION_PROLOGUE): define.
* config/pa/pa-protos.h (pa_output_function_label): Declare.
* config/pa/pa.c (pa_output_function_prologue): Add ATTRIBUTE_UNUSED
to declaration.
(pa_linux_output_function_prologue): Declare.
(TARGET_ASM_FUNCTION_PROLOGUE): Delete define.
(pa_output_function_label): New.
(pa_output_function_prologue): Revise to use pa_output_function_label.
(pa_linux_output_function_prologue): New.
* config/pa/pa.h (TARGET_ASM_FUNCTION_PROLOGUE): Define.

From-SVN: r272059

5 years agoSplit up value_range::intersect into base (value_range_base) and
Aldy Hernandez [Fri, 7 Jun 2019 22:18:24 +0000 (22:18 +0000)]
Split up value_range::intersect into base (value_range_base) and
derived versions (value_range).

From-SVN: r272058

5 years agoSynchronize libstdc++ PSTL with upstream LLVM PSTL
Thomas Rodgers [Fri, 7 Jun 2019 22:01:16 +0000 (22:01 +0000)]
Synchronize libstdc++ PSTL with upstream LLVM PSTL

Rename PSTL macro's consistent with libstdc++ (and llvm upstream
project) standards.
* include/bits/c++config: Rename all macros of the form __PSTL* to
_PSTL*.
* include/std/algorithm: Likewise.
* include/std/execution: Likewise.
* include/std/numeric: Likewise.
* include/std/memory: Likewise.
* include/pstl/glue_memory_impl.h: Likewise.
* include/pstl/numeric_impl.h: Likewise.
* include/pstl/glue_memory_defs.h: Likewise.
* include/pstl/execution_defs.h: Likewise.
* include/pstl/utils.h: Likewise.
* include/pstl/algorithm_fwd.h: Likewise.
* include/pstl/unseq_backend_simd.h: Likewise.
* include/pstl/glue_execution_defs.h: Likewise.
* include/pstl/algorithm_impl.h: Likewise.
* include/pstl/parallel_impl.h: Likewise.
* include/pstl/memory_impl.h: Likewise.
* include/pstl/glue_numeric_defs.h: Likewise.
* include/pstl/parallel_backend_utils.h: Likewise.
* include/pstl/glue_algorithm_defs.h: Likewise.
* include/pstl/parallel_backend.h: Likewise.
* include/pstl/glue_numeric_impl.h: Likewise.
* include/pstl/parallel_backend_tbb.h: Likewise.
* include/pstl/numeric_fwd.h: Likewise.
* include/pstl/glue_algorithm_impl.h: Likewise.
* include/pstl/execution_impl.h: Likewise.
* include/pstl/pstl_config.h: Likewise.
* testsuite/util/pstl/pstl_test_config.h: Likewise.
* testsuite/util/pstl/test_utils.h: Likewise.
* testsuite/20_util/specialized_algorithms/pstl/uninitialized_construct.cc:
Likewise.
* testsuite/20_util/specialized_algorithms/pstl/uninitialized_copy_move.cc:
Likewise.
* testsuite/26_numerics/pstl/numeric_ops/adjacent_difference.cc:
Likewise.
* testsuite/26_numerics/pstl/numeric_ops/scan.cc: Likewise.
* testsuite/26_numerics/pstl/numeric_ops/transform_scan.cc: Likewise.
* testsuite/26_numerics/pstl/numeric_ops/reduce.cc: Likewise.
* testsuite/25_algorithms/pstl/alg_nonmodifying/reverse.cc: Likewise.
* testsuite/25_algorithms/pstl/alg_nonmodifying/nth_element.cc:
Likewise.
* testsuite/25_algorithms/pstl/alg_nonmodifying/find_end.cc: Likewise.
* testsuite/25_algorithms/pstl/alg_nonmodifying/find_if.cc: Likewise.
* testsuite/25_algorithms/pstl/alg_nonmodifying/none_of.cc: Likewise.
* testsuite/25_algorithms/pstl/alg_nonmodifying/count.cc: Likewise.
* testsuite/25_algorithms/pstl/alg_nonmodifying/reverse_copy.cc:
Likewise.
* testsuite/25_algorithms/pstl/alg_nonmodifying/equal.cc: Likewise.
* testsuite/25_algorithms/pstl/alg_nonmodifying/search_n.cc: Likewise.
* testsuite/25_algorithms/pstl/alg_nonmodifying/find.cc: Likewise.
* testsuite/25_algorithms/pstl/alg_nonmodifying/all_of.cc: Likewise.
* testsuite/25_algorithms/pstl/alg_nonmodifying/find_first_of.cc:
Likewise.
* testsuite/25_algorithms/pstl/alg_sorting/is_heap.cc: Likewise.
* testsuite/25_algorithms/pstl/alg_sorting/partial_sort.cc: Likewise.
* testsuite/25_algorithms/pstl/alg_sorting/partial_sort_copy.cc:
Likewise.
* testsuite/25_algorithms/pstl/alg_sorting/lexicographical_compare.cc:
Likewise.
* testsuite/25_algorithms/pstl/alg_merge/inplace_merge.cc: Likewise.
* testsuite/25_algorithms/pstl/alg_merge/merge.cc: Likewise.
* testsuite/25_algorithms/pstl/alg_modifying_operations/unique_copy_equal.cc:
Likewise.
* testsuite/25_algorithms/pstl/alg_modifying_operations/replace_copy.cc:
Likewise.
* testsuite/25_algorithms/pstl/alg_modifying_operations/is_partitioned.cc:
Likewise.
* testsuite/25_algorithms/pstl/alg_modifying_operations/rotate_copy.cc:
Likewise.
* testsuite/25_algorithms/pstl/alg_modifying_operations/remove.cc:
Likewise.
* testsuite/25_algorithms/pstl/alg_modifying_operations/copy_if.cc:
Likewise.
* testsuite/25_algorithms/pstl/alg_modifying_operations/partition_copy.cc:
Likewise.
* testsuite/25_algorithms/pstl/alg_modifying_operations/partition.cc:
Likewise.
* testsuite/25_algorithms/pstl/alg_modifying_operations/copy_move.cc:
Likewise.
* testsuite/25_algorithms/pstl/alg_modifying_operations/unique.cc:
Likewise.
* testsuite/25_algorithms/pstl/alg_modifying_operations/rotate.cc:
Likewise.
* testsuite/25_algorithms/pstl/alg_nonmodifying/any_of.cc: Likewise.

Rename header guards to be consistent with upstream project's
conventions.
* include/pstl/glue_memory_impl.h: Rename all macros of the form
_PSTL_(.*)_H to _PSTL_\U\1_H.
* include/pstl/numeric_impl.h: Likewise.
* include/pstl/glue_memory_defs.h: Likewise.
* include/pstl/execution_defs.h: Likewise.
* include/pstl/utils.h: Likewise.
* include/pstl/algorithm_fwd.h: Likewise.
* include/pstl/unseq_backend_simd.h: Likewise.
* include/pstl/glue_execution_defs.h: Likewise.
* include/pstl/algorithm_impl.h: Likewise.
* include/pstl/parallel_impl.h: Likewise.
* include/pstl/memory_impl.h: Likewise.
* include/pstl/glue_numeric_defs.h: Likewise.
* include/pstl/parallel_backend_utils.h: Likewise.
* include/pstl/glue_algorithm_defs.h: Likewise.
* include/pstl/parallel_backend.h: Likewise.
* include/pstl/glue_numeric_impl.h: Likewise.
* include/pstl/parallel_backend_tbb.h: Likewise.
* include/pstl/numeric_fwd.h: Likewise.
* include/pstl/glue_algorithm_impl.h: Likewise.
* include/pstl/execution_impl.h: Likewise.
* include/pstl/pstl_config.h: Likewise.
* testsuite/util/pstl/pstl_test_config.h: Likewise.

Synchronize libstdc++ parallel algorithms with upstream
project.
* include/pstl/algorithm_fwd.h: Synchronize with
upstream PSTL project.
* include/pstl/algorithm_impl.h: Likewise.
* include/pstl/execution_defs.h: Likewise.
* include/pstl/execution_impl.h: Likewise.
* include/pstl/glue_algorithm_impl.h: Likewise.
* include/pstl/glue_execution_defs.h: Likewise.
* include/pstl/numeric_fwd.h: Likewise.
* include/pstl/numeric_impl.h: Likewise.
* include/pstl/parallel_backend.h: Likewise.
* include/pstl/pstl_config.h: Likewise.
* include/pstl/unseq_backend_simd.h: Likewise.
* include/pstl/parallel_backend_serial.h: New file.
* include/Makefile.am (pstl_headers): Add
parallel_backend_serial.h.
* include/Makefile.in: Regenerate.

Clean up non-conforming names
* include/pstl/algorithm_impl.h (__parallel_set_union_op):
Uglfiy copy_range1 and copy_range2
(__pattern_walk2_n): Rename local n to __n
* include/pstl/parallel_backend_tbb.h (struct __binary_no_op):
Rename parameter _T to _Tp.

Integrate non-TBB serial backend support
* include/bits/c++config: Adjust TBB detection logic to select serial
PSTL backend if no TBB present.
* testsuite/utils/pstl/test_utils.h: Remove check for
_PSTL_USE_PAR_POLICIES

From-SVN: r272056

5 years agocompiler: improve write barrier generation
Ian Lance Taylor [Fri, 7 Jun 2019 21:16:11 +0000 (21:16 +0000)]
compiler: improve write barrier generation

    For string, slice, interface values, do assignments field by
    field instead of using typedmemmove.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/181297

From-SVN: r272055

5 years agoAvoid constexpr garbage for implicit conversion to void.
Jason Merrill [Fri, 7 Jun 2019 21:08:26 +0000 (17:08 -0400)]
Avoid constexpr garbage for implicit conversion to void.

* constexpr.c (cxx_eval_constant_expression): Call
STRIP_ANY_LOCATION_WRAPPER early.
[CONVERT_EXPR]: Don't build anything for conversion to void.
[ADDR_EXPR]: ggc_free unused ADDR_EXPR.

From-SVN: r272054

5 years agoFix test that gets skipped as unsupported
Jonathan Wakely [Fri, 7 Jun 2019 19:57:28 +0000 (20:57 +0100)]
Fix test that gets skipped as unsupported

* testsuite/24_iterators/container_access.cc: Move dg-options before
dg-do directive so the target check uses the -std option.

From-SVN: r272051

5 years agoPR libstdc++/90770 fix missing src/debug/Makefile
Jonathan Wakely [Fri, 7 Jun 2019 19:57:19 +0000 (20:57 +0100)]
PR libstdc++/90770 fix missing src/debug/Makefile

PR libstdc++/90770
* configure: Regenerate.
* src/Makefile.am (stamp-debug): Also test for missing makefile.
* src/Makefile.in: Regenerate.

From-SVN: r272050

5 years agoMakefile.in (genprogerr): Add condmd.
Jakub Jelinek [Fri, 7 Jun 2019 15:38:35 +0000 (17:38 +0200)]
Makefile.in (genprogerr): Add condmd.

* Makefile.in (genprogerr): Add condmd.
(genprog): Remove it here.

From-SVN: r272047

5 years agore PR fortran/89100 (Default widths for i, f and g format specifiers in format strings)
Mark Eggleston [Fri, 7 Jun 2019 14:25:39 +0000 (14:25 +0000)]
re PR fortran/89100 (Default widths for i, f and g format specifiers in format strings)

2019-06-07  Mark Eggleston <mark.eggleston@codethink.com>

PR fortran/89100
* gfortran.dg/fmt_f_default_field_width_3.f90: Modify dg-error
to allow use when kind=16 is not supported.
* gfortran.dg/fmt_g_default_field_width_3.f90: Modify dg-error
to allow use when kind=16 is not supported.

From-SVN: r272046

5 years agocompiler: support inlining functions with if statements
Ian Lance Taylor [Fri, 7 Jun 2019 14:19:51 +0000 (14:19 +0000)]
compiler: support inlining functions with if statements

    This increases the number of inlinable functions from 455 to 500.
    An example of a newly inlinable function is strings.Compare.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/181137

From-SVN: r272045

5 years agoDocument -march=gfx906 option.
Andrew Stubbs [Fri, 7 Jun 2019 14:00:58 +0000 (14:00 +0000)]
Document -march=gfx906 option.

2019-06-07  Andrew Stubbs  <ams@codesourcery.com>

gcc/
* doc/invoke.texi (AMD GCN Options): Add gfx906.

From-SVN: r272044

5 years agocompiler: do simple deadcode elimination
Ian Lance Taylor [Fri, 7 Jun 2019 13:40:26 +0000 (13:40 +0000)]
compiler: do simple deadcode elimination

    Normally the backend will do deadcode elimination and this is
    sufficient. However, the escape analysis operates on the AST that
    may have deadcode, and may cause things to escape that otherwise
    do not.

    This CL adds a simple deadcode elimination, run before the escape
    analysis.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/181080

From-SVN: r272043

5 years agore PR debug/90574 ([gdb] gdb wrongly stopped at a breakpoint in an unexecuted line...
Richard Biener [Fri, 7 Jun 2019 12:14:55 +0000 (12:14 +0000)]
re PR debug/90574 ([gdb] gdb wrongly stopped at a breakpoint in an unexecuted line of code)

2019-06-07  Richard Biener  <rguenther@suse.de>

PR debug/90574
* tree-cfg.c (stmt_starts_bb_p): Split blocks at labels
that appear after user labels.

* gcc.misc-tests/gcov-pr90574-1.c: New testcase.
* gcc.misc-tests/gcov-pr90574-2.c: Likewise.

From-SVN: r272040

5 years agoEnable sanitization for hash tables.
Martin Liska [Fri, 7 Jun 2019 12:13:13 +0000 (14:13 +0200)]
Enable sanitization for hash tables.

2019-06-07  Martin Liska  <mliska@suse.cz>

* cselib.c (cselib_init): Disable hash table
sanitization.
* hash-set.h: Pass new default argument to m_table.
* hash-table.c: Add global variable with hash table
sanitization limit.
* hash-table.h (Allocator>::hash_table): Add new argument
to ctor.
(hashtab_chk_error): New.
* params.def (PARAM_HASH_TABLE_VERIFICATION_LIMIT): New.
* toplev.c (process_options): Set hash_table_sanitize_eq_limit
from the PARAM_HASH_TABLE_VERIFICATION_LIMIT value.

From-SVN: r272038

5 years agocommon.opt (flto-odr-type-merging): Ignore.
Jan Hubicka [Fri, 7 Jun 2019 08:15:00 +0000 (10:15 +0200)]
common.opt (flto-odr-type-merging): Ignore.

* common.opt (flto-odr-type-merging): Ignore.
* invoke.texi (-flto-odr-type-merging): Remove.
* ipa-devirt.c (odr_vtable_hasher:odr_name_hasher): Remove.
(can_be_vtable_hashed_p): Remove.
(hash_odr_vtable): Remove.
(odr_vtable_hasher::hash): Remove.
(types_same_for_odr): Remove.
(types_odr_comparable): Remove.
(odr_vtable_hasher::equal): Remove.
(odr_vtable_hash_type, odr_vtable_hash): Remove.
(add_type_duplicate): Do not synchronize vtable and name hashtables.
(get_odr_type): Do not use vtable hash.
(dump_odr_type): Remove commented out code.
(build_type_inheritance_graph): Do not allocate vtable hash.
(rebuild_type_inheritance_graph): Do not delete vtable hash.
* ipa-utils.h (type_with_linkage_p): Drop vtable hash path.
(odr_type_p): Likewise.
* tree.c (need_assembler_name_p): Remove flag_lto_odr_type_mering
test.

From-SVN: r272037

5 years agoMake aliasing_component_refs_p to work harder when same_type_for_tbaa returns -1
Jan Hubicka [Fri, 7 Jun 2019 08:14:04 +0000 (10:14 +0200)]
Make aliasing_component_refs_p to work harder when same_type_for_tbaa returns -1

* tree-ssa-alias.c (aliasing_component_refs_p): Do not give up
immediately after same_types_for_tbaa_p returns -1 and continue
looking for possible exact match; if matching types are arrays
watch for partial overlaps.
(indirect_ref_may_alias_decl_p): Watch for partial array overlaps.
(indirect_refs_may_alias_p): Do type based disambiguation first;
update comment.

* gcc.dg/lto/alias-access-path-2.0.c: New testcase.

From-SVN: r272036

5 years agoFix fwprop call to call to paradoxical_subreg_p
Richard Sandiford [Fri, 7 Jun 2019 07:40:20 +0000 (07:40 +0000)]
Fix fwprop call to call to paradoxical_subreg_p

"mode" is the mode of "x", not the replacement value.

2019-06-06  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* fwprop.c (propagate_rtx): Fix call to paradoxical_subreg_p.

From-SVN: r272032

5 years agoRemove indirect call top N counter type.
Martin Liska [Fri, 7 Jun 2019 06:41:58 +0000 (08:41 +0200)]
Remove indirect call top N counter type.

2019-06-07  Martin Liska  <mliska@suse.cz>

* doc/invoke.texi: Remove param.
* gcov-counter.def (GCOV_COUNTER_ICALL_TOPNV):
Remove.
* gcov-io.h (GCOV_ICALL_TOPN_VAL): Likewise.
(GCOV_ICALL_TOPN_NCOUNTS): Likewise.
* params.def (PARAM_INDIR_CALL_TOPN_PROFILE): Likewise.
* profile.c (instrument_values): Remove
HIST_TYPE_INDIR_CALL_TOPN.
* tree-profile.c (init_ic_make_global_vars):
Always build __gcov_indirect_call only.
(gimple_init_gcov_profiler): Remove usage
of PARAM_INDIR_CALL_TOPN_PROFILE.
(gimple_gen_ic_profiler): Likewise.
* value-prof.c (dump_histogram_value): Likewise.
(stream_in_histogram_value): Likewise.
(gimple_indirect_call_to_profile): Likewise.
(gimple_find_values_to_profile): Likewise.
* value-prof.h (enum hist_type): Likewise.
2019-06-07  Martin Liska  <mliska@suse.cz>

* Makefile.in: Remove usage of
_gcov_merge_icall_topn.
* libgcov-driver.c (gcov_sort_n_vals): Remove.
(gcov_sort_icall_topn_counter): Likewise.
(gcov_sort_topn_counter_arrays): Likewise.
(dump_one_gcov): Remove call to gcov_sort_topn_counter_arrays.
* libgcov-merge.c (__gcov_merge_icall_topn): Remove.
* libgcov-profiler.c (__gcov_topn_value_profiler_body):
Likewise.
(GCOV_ICALL_COUNTER_CLEAR_THRESHOLD): Remove.
(struct indirect_call_tuple): Remove.
(__gcov_indirect_call_topn_profiler): Remove.
* libgcov-util.c (__gcov_icall_topn_counter_op): Remove.
* libgcov.h (gcov_sort_n_vals): Remove.
(L_gcov_merge_icall_topn): Likewise.
(__gcov_merge_icall_topn): Likewise.
(__gcov_indirect_call_topn_profiler): Likewise.

From-SVN: r272030

5 years agoFix a thinko in tree-ssa-loop.c.
Martin Liska [Fri, 7 Jun 2019 05:35:19 +0000 (07:35 +0200)]
Fix a thinko in tree-ssa-loop.c.

2019-06-07  Martin Liska  <mliska@suse.cz>

* tree-ssa-loop.c (get_lsm_tmp_name): Return at the end of the
function.

From-SVN: r272029

5 years agoAdd warn_unused_result for malloc-like functions (PR tree-optimization/78902).
Martin Liska [Fri, 7 Jun 2019 05:33:11 +0000 (07:33 +0200)]
Add warn_unused_result for malloc-like functions (PR tree-optimization/78902).

2019-06-07  Martin Liska  <mliska@suse.cz>

PR tree-optimization/78902
* builtin-attrs.def (ATTR_WARN_UNUSED_RESULT): New.
(ATTR_MALLOC_NOTHROW_LEAF_LIST): Remove.
(ATTR_WARN_UNUSED_RESULT_NOTHROW_LEAF_LIST): New.
(ATTR_MALLOC_WARN_UNUSED_RESULT_NOTHROW_LEAF_LIST): New.
(ATTR_ALLOC_SIZE_2_NOTHROW_LIST): Remove.
(ATTR_MALLOC_SIZE_1_NOTHROW_LEAF_LIST): Remove.
(ATTR_MALLOC_WARN_UNUSED_RESULT_NOTHROW_LIST): New.
(ATTR_ALLOC_WARN_UNUSED_RESULT_SIZE_2_NOTHROW_LIST): New.
(ATTR_MALLOC_WARN_UNUSED_RESULT_SIZE_1_NOTHROW_LEAF_LIST): New.
(ATTR_ALLOCA_SIZE_1_NOTHROW_LEAF_LIST): Remove.
(ATTR_ALLOCA_WARN_UNUSED_RESULT_SIZE_1_NOTHROW_LEAF_LIST): New.
(ATTR_MALLOC_SIZE_1_2_NOTHROW_LEAF_LIST):  Remove.
(ATTR_MALLOC_WARN_UNUSED_RESULT_SIZE_1_2_NOTHROW_LEAF_LIST):
New.
(ATTR_ALLOC_SIZE_2_NOTHROW_LEAF_LIST): Remove.
(ATTR_ALLOC_WARN_UNUSED_RESULT_SIZE_2_NOTHROW_LEAF_LIST): New.
(ATTR_MALLOC_NOTHROW_NONNULL): Remove.
(ATTR_WARN_UNUSED_RESULT_NOTHROW_NONNULL): New.
(ATTR_MALLOC_WARN_UNUSED_RESULT_NOTHROW_NONNULL): New.
(ATTR_MALLOC_NOTHROW_NONNULL_LEAF): Remove.
(ATTR_WARN_UNUSED_RESULT_NOTHROW_NONNULL_LEAF): New.
(ATTR_MALLOC_WARN_UNUSED_RESULT_NOTHROW_NONNULL_LEAF): New.
* builtins.def (BUILT_IN_ALIGNED_ALLOC): Change to use
warn_unused_result attribute.
(BUILT_IN_STRDUP): Likewise.
(BUILT_IN_STRNDUP): Likewise.
(BUILT_IN_ALLOCA): Likewise.
(BUILT_IN_CALLOC): Likewise.
(BUILT_IN_MALLOC): Likewise.
(BUILT_IN_REALLOC): Likewise.
2019-06-07  Martin Liska  <mliska@suse.cz>

PR tree-optimization/78902
* c-c++-common/asan/alloca_loop_unpoisoning.c: Use result
of __builtin_alloca.
* c-c++-common/asan/pr88619.c: Likewise.
* g++.dg/overload/using2.C: Likewise for malloc.
* gcc.dg/attr-alloc_size-5.c: Add new dg-warning.
* gcc.dg/nonnull-3.c: Use result of __builtin_strdup.
* gcc.dg/pr43643.c: Likewise.
* gcc.dg/pr59717.c: Likewise for calloc.
* gcc.dg/torture/pr71816.c: Likewise.
* gcc.dg/tree-ssa/pr78886.c: Likewise.
* gcc.dg/tree-ssa/pr79697.c: Likewise.
* gcc.dg/pr78902.c: New test.

From-SVN: r272028

5 years agoDaily bump.
GCC Administrator [Fri, 7 Jun 2019 00:16:19 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r272027

5 years agogo/internal/gccgoimporter: ignore unexported and imported names
Ian Lance Taylor [Fri, 7 Jun 2019 00:07:50 +0000 (00:07 +0000)]
go/internal/gccgoimporter: ignore unexported and imported names

    Due to inlining, we can now see unexported functions and variables,
    and functions and variables imported from different packages.
    Ignore them rather than reporting them from this package.

    Handle $hash and $equal functions consistently, so that we discard the
    inline body if there is one.

    Ignore names created for result parameters for inlining purposes.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/180758

From-SVN: r272023

5 years agocompiler: permit inlining temporary statements and references
Ian Lance Taylor [Thu, 6 Jun 2019 23:34:00 +0000 (23:34 +0000)]
compiler: permit inlining temporary statements and references

    This increases the number of inlinable functions from 439 to 455.
    An example is math/bits.Mul32, which uses temporaries to handle the
    tuple assignment.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/180837

From-SVN: r272022

5 years agoRISC-V: Move STARTFILE_PREFIX_SPEC into target OS files.
Jim Wilson [Thu, 6 Jun 2019 23:18:48 +0000 (23:18 +0000)]
RISC-V: Move STARTFILE_PREFIX_SPEC into target OS files.

gcc/
PR target/89955
* config/riscv/riscv.h (STARTFILE_PREFIX_SPEC): Deleted.
* config/riscv/freebsd.h (STARTFILE_PREFIX_SPEC): Added.
* config/riscv/linux.h (STARTFILE_PREFIX_SPEC): Added.

From-SVN: r272021

5 years ago* sv.po: Update.
Joseph Myers [Thu, 6 Jun 2019 23:14:54 +0000 (00:14 +0100)]
* sv.po: Update.

From-SVN: r272019

5 years agoDarwin, c++, testsuite - adjust alignas4.C for Darwin's asm syntax.
Iain Sandoe [Thu, 6 Jun 2019 19:16:31 +0000 (19:16 +0000)]
Darwin, c++, testsuite - adjust alignas4.C for Darwin's asm syntax.

Darwin produces aligned zerofill directives for the objects represented.
We can scan for these using "lp64" and "ilp32" to catch operation on both
X86 and PowerPC ports (the test is for the alignment which is the trailing
value in the zerofill directive, as a power of two).

gcc/testsuite/ChangeLog:

2019-06-06  Iain Sandoe  <iain@sandoe.co.uk>

* g++.dg/cpp0x/alignas4.C: Amend test to check for zerofill syntax
on Darwin.

From-SVN: r272018

5 years agoDarwin, PowerPC, libgcc - Ensure unwinder is built with altivec enabled.
Iain Sandoe [Thu, 6 Jun 2019 19:02:54 +0000 (19:02 +0000)]
Darwin, PowerPC, libgcc - Ensure unwinder is built with altivec enabled.

When libgcc is built on Darwin, it is usually built for the earliest potential
target (Darwin8, 10.4).  Build for that revision default to assuming that the
processor might be G3 (without vector ops) and there is an outlined function
used for save/restore that checks whether the processor is G3 or G4+ at run-
time.  However, the unwinder itself needs to be built with the assumption of
vector usage so that the relevant outlined functions are called.

2019-06-06  Iain Sandoe  <iain@sandoe.co.uk>

* config/rs6000/t-darwin: Ensure that the unwinder is built with
altivec enabled.

From-SVN: r272017

5 years agotree-ssa-strlen.c (adjust_related_strinfos): Avoid trailing article.
Martin Sebor [Thu, 6 Jun 2019 18:46:20 +0000 (18:46 +0000)]
tree-ssa-strlen.c (adjust_related_strinfos): Avoid trailing article.

gcc/ChangeLog:

* tree-ssa-strlen.c (adjust_related_strinfos): Avoid trailing article.
(handle_builtin_malloc): Remove trailing spaces.
(handle_builtin_memset): Same.
(handle_builtin_memcmp): Same.
(compute_string_length): Same.
(determine_min_objsize): Same.
(handle_builtin_string_cmp): Same.
(handle_char_store): Same.  Break up excessively long line.

From-SVN: r272016

5 years agoDrop alignment check in build_reconstructed_reference
Martin Jambor [Thu, 6 Jun 2019 16:33:04 +0000 (18:33 +0200)]
Drop alignment check in build_reconstructed_reference

2019-06-06  Martin Jambor  <mjambor@suse.cz>

* tree-sra.c (build_reconstructed_reference): Drop the alignment
check.

From-SVN: r272013

5 years agoMake SRA re-construct orginal memory accesses when easy
Martin Jambor [Thu, 6 Jun 2019 16:31:20 +0000 (18:31 +0200)]
Make SRA re-construct orginal memory accesses when easy

2019-06-06  Martin Jambor  <mjambor@suse.cz>

* tree-sra.c (struct access): New field grp_same_access_path.
(dump_access): Dump it.
(build_reconstructed_reference): New function.
(build_ref_for_model): Use it if possible.
(path_comparable_for_same_access): New function.
(same_access_path_p): Likewise.
(sort_and_splice_var_accesses): Set the new flag.
(analyze_access_subtree): Likewise.
(propagate_subaccesses_across_link): Propagate zero value of the new
flag down the access tree.

testsuite/
* gcc.dg/tree-ssa/alias-access-path-1.c: Remove -fno-tree-sra option.
* gcc.dg/tree-ssa/ssa-dse-26.c: Disable FRE.
* testsuite/gnat.dg/opt39.adb: Adjust scan dump.

From-SVN: r272012

5 years agoAvoid unnecessary inclusion of <stdexcept> header
Jonathan Wakely [Thu, 6 Jun 2019 15:34:56 +0000 (16:34 +0100)]
Avoid unnecessary inclusion of <stdexcept> header

This can greatly reduce the amount of preprocessed code that is included
by other headers, because <stdexcept> depends on <string> which is huge.

* include/std/array: Do not include <stdexcept>.
* include/std/optional: Include <exception> and
<bits/exception_defines.h> instead of <stdexcept>.
* testsuite/20_util/function_objects/searchers.cc: Include <cctype>
for std::isalnum.
* testsuite/20_util/tuple/cons/deduction.cc: Include <memory> for
std::allocator.
* testsuite/23_containers/map/erasure.cc: Include <string>.
* testsuite/23_containers/unordered_map/erasure.cc: Likewise.

From-SVN: r272011

5 years agoFix more failing tests for C++98 mode
Jonathan Wakely [Thu, 6 Jun 2019 15:34:51 +0000 (16:34 +0100)]
Fix more failing tests for C++98 mode

* testsuite/23_containers/deque/requirements/dr438/assign_neg.cc: Add
dg-prune-output for different C++98 diagnostic.
* testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc:
Likewise.
* testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc:
Likewise.
* testsuite/23_containers/deque/requirements/dr438/insert_neg.cc:
Likewise.
* testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
Likewise.
* testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc:
Likewise.
* testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc:
Likewise.
* testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
Likewise.
* testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
Likewise.
* testsuite/23_containers/vector/requirements/dr438/
constructor_1_neg.cc: Likewise.
* testsuite/23_containers/vector/requirements/dr438/
constructor_2_neg.cc: Likewise.
* testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
Likewise.
* testsuite/libstdc++-prettyprinters/compat.cc: Do not run for C++98.

From-SVN: r272010

5 years agoFix more tests that fail in C++2a mode
Jonathan Wakely [Thu, 6 Jun 2019 15:34:45 +0000 (16:34 +0100)]
Fix more tests that fail in C++2a mode

* testsuite/23_containers/unordered_map/requirements/debug_container.cc:
Do not test allocator rebinding extension for C++2a.
* testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Change
dg-do directive for C++17 and C++2a.

From-SVN: r272009

5 years agoAdd -march=gfx906 for AMD GCN.
Andrew Stubbs [Thu, 6 Jun 2019 15:11:59 +0000 (15:11 +0000)]
Add -march=gfx906 for AMD GCN.

2019-06-06  Andrew Stubbs  <ams@codesourcery.com>

gcc/
* config.gcc (amdgcn-*-*): Allow --with-arch=gfx906.
* config/gcn/gcn.opt (gpu_type): Add gfx906.
* config/gcn/t-gcn-hsa (MULTILIB_OPTIONS): Add gfx906 multilib.
(MULTILIB_DIRNAMES): Rename gcn5 to gfx900.
Add gfx906.

From-SVN: r272007

5 years ago[AArch64] PR tree-optimization/90332: Implement vec_init<M><N> where N is a vector...
Kyrylo Tkachov [Thu, 6 Jun 2019 13:59:07 +0000 (13:59 +0000)]
[AArch64] PR tree-optimization/90332: Implement vec_init<M><N> where N is a vector mode

This patch fixes the failing gcc.dg/vect/slp-reduc-sad-2.c testcase on aarch64
by implementing a vec_init optab that can handle two half-width vectors producing a full-width one
by concatenating them.

In the gcc.dg/vect/slp-reduc-sad-2.c case it's a V8QI reg concatenated with a V8QI const_vector of zeroes.
This can be implemented efficiently using the aarch64_combinez pattern that just loads a D-register to make
use of the implicit zero-extending semantics of that load.
Otherwise it concatenates the two vector using aarch64_simd_combine.

With this patch I'm seeing the effect from richi's original patch that added gcc.dg/vect/slp-reduc-sad-2.c on aarch64
and 525.x264_r improves by about 1.5%.

PR tree-optimization/90332
* config/aarch64/aarch64.c (aarch64_expand_vector_init):
Handle VALS containing two vectors.
* config/aarch64/aarch64-simd.md (*aarch64_combinez<mode>): Rename
to...
(@aarch64_combinez<mode>): ... This.
(*aarch64_combinez_be<mode>): Rename to...
(@aarch64_combinez_be<mode>): ... This.
(vec_init<mode><Vhalf>): New define_expand.
* config/aarch64/iterators.md (Vhalf): Handle V8HF.

From-SVN: r272002

5 years agoFix tests that fail in C++2a mode
Jonathan Wakely [Thu, 6 Jun 2019 13:36:27 +0000 (14:36 +0100)]
Fix tests that fail in C++2a mode

The GNU extension that allows using the wrong allocator type with a
container is disabled for C++2a mode, because the standard now requires
a diagnostic. Fix the tests that fail when -std=gnu++2a is used.

Also remove some reundant tests that are duplicates of another test
except for a target specifier of c++11. Those tests previously set
-std=gnu++11 explicitly but that was replaced globally with a target
specifier. These tests existed to verify that explicit instantiation
worked for both C++98 and C++11 modes, but now do nothing because both
copies of the test use -std=gnu++14 by default. Instead of duplicating
the test we should be regularly running the whole testsuite with
different -std options.

* testsuite/23_containers/deque/requirements/explicit_instantiation/
1_c++0x.cc: Remove redundant test.
* testsuite/23_containers/deque/requirements/explicit_instantiation/
2.cc: Use target selector instead of preprocessor condition.
* testsuite/23_containers/deque/requirements/explicit_instantiation/
3.cc: Do not run test for C++2a.
* testsuite/23_containers/forward_list/requirements/
explicit_instantiation/3.cc: Likewise.
* testsuite/23_containers/forward_list/requirements/
explicit_instantiation/5.cc: Do not test allocator rebinding extension
for C++2a.
* testsuite/23_containers/list/requirements/explicit_instantiation/
1_c++0x.cc: Remove redundant test.
* testsuite/23_containers/list/requirements/explicit_instantiation/
2.cc: Use target selector instead of preprocessor condition.
* testsuite/23_containers/list/requirements/explicit_instantiation/
3.cc: Do not run test for C++2a.
* testsuite/23_containers/list/requirements/explicit_instantiation/
5.cc: Do not test allocator rebinding extension for C++2a.
* testsuite/23_containers/map/requirements/explicit_instantiation/
1_c++0x.cc: Remove redundant test.
* testsuite/23_containers/map/requirements/explicit_instantiation/
2.cc: Adjust comment.
* testsuite/23_containers/map/requirements/explicit_instantiation/
3.cc: Do not run test for C++2a.
* testsuite/23_containers/map/requirements/explicit_instantiation/
5.cc: Do not test allocator rebinding extension for C++2a.
* testsuite/23_containers/multimap/requirements/explicit_instantiation/
1_c++0x.cc: Remove redundant test.
* testsuite/23_containers/multimap/requirements/explicit_instantiation/
3.cc: Do not run test for C++2a.
* testsuite/23_containers/multimap/requirements/explicit_instantiation/
5.cc: Do not test allocator rebinding extension for C++2a.
* testsuite/23_containers/multiset/requirements/explicit_instantiation/
3.cc: Do not run test for C++2a.
* testsuite/23_containers/multiset/requirements/explicit_instantiation/
5.cc: Do not test allocator rebinding extension for C++2a.
* testsuite/23_containers/set/requirements/explicit_instantiation/3.cc:
Do not run test for C++2a.
* testsuite/23_containers/set/requirements/explicit_instantiation/
1_c++0x.cc: Remove redundant test.
* testsuite/23_containers/set/requirements/explicit_instantiation/5.cc:
Do not test allocator rebinding extension for C++2a.
* testsuite/23_containers/unordered_map/requirements/
explicit_instantiation/3.cc: Likewise.
* testsuite/23_containers/unordered_map/requirements/
explicit_instantiation/5.cc: Do not test allocator rebinding extension
for C++2a.
* testsuite/23_containers/unordered_multimap/requirements/
explicit_instantiation/3.cc: Do not run test for C++2a.
* testsuite/23_containers/unordered_multimap/requirements/
explicit_instantiation/5.cc: Do not test allocator rebinding extension
for C++2a.
* testsuite/23_containers/unordered_multiset/requirements/
explicit_instantiation/3.cc: Do not run test for C++2a.
* testsuite/23_containers/unordered_multiset/requirements/
explicit_instantiation/5.cc: Do not test allocator rebinding extension
for C++2a.
* testsuite/23_containers/unordered_set/requirements/
explicit_instantiation/3.cc: Do not run test for C++2a.
* testsuite/23_containers/unordered_set/requirements/
explicit_instantiation/5.cc: Do not test allocator rebinding extension
for C++2a.
* testsuite/23_containers/vector/ext_pointer/explicit_instantiation/
2.cc: Remove redundant test.
* testsuite/23_containers/vector/ext_pointer/explicit_instantiation/
3.cc: Do not run test for C++2a.
* testsuite/23_containers/vector/requirements/explicit_instantiation/
3.cc: Likewise.

From-SVN: r272001

5 years agoRemove redundant static assertions in [meta.unary.prop] traits
Jonathan Wakely [Thu, 6 Jun 2019 12:13:47 +0000 (13:13 +0100)]
Remove redundant static assertions in [meta.unary.prop] traits

The type property predicates that are implemented by a compiler builtin
already do the right checks in the compiler. The checks for complete
type or unbounded arrays were wrong for these types anyway.

* include/std/type_traits (is_empty, is_polymorphic, is_final)
(is_abstract, is_aggregate): Remove static_assert.
* testsuite/20_util/is_abstract/incomplete_neg.cc: Check for error
from builtin only.
* testsuite/20_util/is_aggregate/incomplete_neg.cc: Likewise. Add
missing -std=gnu++17 option.
* testsuite/20_util/is_empty/incomplete_neg.cc: New test.
* testsuite/20_util/is_final/incomplete_neg.cc: New test.
* testsuite/20_util/is_polymorphic/incomplete_neg.cc: Check for error
from builtin only.

From-SVN: r272000

5 years agoFix tests that fail with -std=gnu++98 or -std=gnu++11
Jonathan Wakely [Thu, 6 Jun 2019 12:13:42 +0000 (13:13 +0100)]
Fix tests that fail with -std=gnu++98 or -std=gnu++11

* testsuite/18_support/set_terminate.cc: Do not run for C++98 mode.
* testsuite/18_support/set_unexpected.cc: Likewise.
* testsuite/20_util/is_nothrow_invocable/value.cc: Test converting to
void.
* testsuite/20_util/is_nothrow_invocable/value_ext.cc: Fix constexpr
function to be valid in C++11.
* testsuite/26_numerics/complex/proj.cc: Do not run for C++98 mode.
* testsuite/experimental/names.cc: Do not run for C++98 mode. Do not
include Library Fundamentals or Networking headers in C++11 mode.
* testsuite/ext/char8_t/atomic-1.cc: Do not run for C++98 mode.

From-SVN: r271999

5 years agoRefactor SFINAE constraints on std::tuple constructors
Jonathan Wakely [Thu, 6 Jun 2019 12:13:36 +0000 (13:13 +0100)]
Refactor SFINAE constraints on std::tuple constructors

Replace the _TC class template with the better-named _TupleConstraints
one, which provides a different set of member functions. The new members
do not distinguish construction from lvalues and rvalues, but expects
the caller to do that by providing different template arguments. Within
the std::tuple primary template and std::tuple<T1, T2> partial
specialization the _TupleConstraints members are used via new alias
templates like _ImplicitCtor and _ExplicitCtor which makes the
constructor constraints less verbose and repetitive. For example, where
we previously had:

     template<typename... _UElements, typename
             enable_if<
                _TMC<_UElements...>::template
                   _MoveConstructibleTuple<_UElements...>()
                 && _TMC<_UElements...>::template
                   _ImplicitlyMoveConvertibleTuple<_UElements...>()
                 && (sizeof...(_Elements) >= 1),
       bool>::type=true>
       constexpr tuple(_UElements&&... __elements)

We now have:

     template<typename... _UElements,
             bool _Valid = __valid_args<_UElements...>(),
             _ImplicitCtor<_Valid, _UElements...> = true>
      constexpr
      tuple(_UElements&&... __elements)

There are two semantic changes as a result of the refactoring:

- The allocator-extended default constructor is now constrained.
- The rewritten constraints fix PR 90700.

* include/std/tuple (_TC): Replace with _TupleConstraints.
(_TupleConstraints): New helper for SFINAE constraints, with more
expressive member functions to reduce duplication when used.
(tuple::_TC2, tuple::_TMC, tuple::_TNTC): Remove.
(tuple::_TCC): Replace dummy type parameter with bool non-type
parameter that can be used to check the pack size.
(tuple::_ImplicitDefaultCtor, tuple::_ExplicitDefaultCtor)
(tuple::_ImplicitCtor, tuple::_ExplicitCtor): New alias templates for
checking constraints in constructors.
(tuple::__valid_args, tuple::_UseOtherCtor, tuple::__use_other_ctor):
New SFINAE helpers.
(tuple::tuple): Use new helpers to reduce repitition in constraints.
(tuple::tuple(allocator_arg_t, const Alloc&)): Constrain.
(tuple<T1, T2>::_TCC, tuple<T1, T2>::_ImplicitDefaultCtor)
(tuple<T1, T2>::_ExplicitDefaultCtor, tuple<T1, T2>::_ImplicitCtor)
(tuple<T1, T2>::_ExplicitCtor): New alias templates for checking
constraints in constructors.
(tuple::__is_alloc_arg()): New SFINAE helpers.
(tuple<T1, T2>::tuple): Use new helpers to reduce repitition in
constraints.
(tuple<T1, T2>::tuple(allocator_arg_t, const Alloc&)): Constrain.
* testsuite/20_util/tuple/cons/90700.cc: New test.
* testsuite/20_util/tuple/cons/allocators.cc: Add default constructor
to meet new constraint on allocator-extended default constructor.

From-SVN: r271998

5 years agoMSP430: Use minimal code size library shift functions when optimizing for size
Jozef Lawrynowicz [Thu, 6 Jun 2019 12:10:19 +0000 (12:10 +0000)]
MSP430: Use minimal code size library shift functions when optimizing for size

gcc/ChangeLog

2019-06-06  Jozef Lawrynowicz  <jozef.l@mittosystems.com>

* config/msp430/msp430.md (ashlhi3): Use the const_variant of shift
library functions only when not optimizing for size.
(ashlsi3): Likewise.
(ashrhi3): Likewise.
(ashrsi3): Likewise.
(lshrhi3): Likewise.
(lshrsi3): Likewise.

gcc/testsuite/ChangeLog

2019-06-06  Jozef Lawrynowicz  <jozef.l@mittosystems.com>

* gcc.target/msp430/size-optimized-shifts.c: New test.

From-SVN: r271997

5 years agore PR rtl-optimization/88751 (Performance regression reload vs lra)
Andreas Krebbel [Thu, 6 Jun 2019 11:35:04 +0000 (11:35 +0000)]
re PR rtl-optimization/88751 (Performance regression reload vs lra)

Fix PR88751

This patch implements a small improvement for the heuristic in lra
which decides when it has to activate the simpler register allocation
algorithm.

gcc/ChangeLog:

2019-06-06  Andreas Krebbel  <krebbel@linux.ibm.com>

PR rtl-optimization/88751
* ira.c (ira): Use the number of the actually referenced registers
when calculating the threshold.

From-SVN: r271996

5 years ago* configure: Regenerate.
Jakub Jelinek [Thu, 6 Jun 2019 09:32:07 +0000 (11:32 +0200)]
* configure: Regenerate.

From-SVN: r271994

5 years agoMSP430: Emulate 16-bit shifts with rotate insn when src operand is in memory
Jozef Lawrynowicz [Thu, 6 Jun 2019 09:23:10 +0000 (09:23 +0000)]
MSP430: Emulate 16-bit shifts with rotate insn when src operand is in memory

gcc/ChangeLog

2019-06-06  Jozef Lawrynowicz  <jozef.l@mittosystems.com>

* config/msp430/msp430.md (ashlhi3): Force shift src operand into a
register if it is in memory, so the shift can be emulated with a rotate
instruction.
(ashrhi3): Likewise.
(lshrhi3): Likewise.

gcc/testsuite/ChangeLog

2019-06-06  Jozef Lawrynowicz  <jozef.l@mittosystems.com>

* gcc.target/msp430/emulate-slli.c: New test.
* gcc.target/msp430/emulate-srai.c: New test.
* gcc.target/msp430/emulate-srli.c: New test.

From-SVN: r271993

5 years agoMSP430: Put libgcc shift functions in their own section
Jozef Lawrynowicz [Thu, 6 Jun 2019 09:07:36 +0000 (09:07 +0000)]
MSP430: Put libgcc shift functions in their own section

2019-06-06  Jozef Lawrynowicz  <jozef.l@mittosystems.com>

* config/msp430/slli.S (__mspabi_slli_n): Put function in its own
section.
(__mspabi_slli): Likewise.
(__mspabi_slll_n): Likewise.
(__mspabi_slll): Likewise.
* config/msp430/srai.S (__mspabi_srai_n): Likewise.
(__mspabi_srai): Likewise.
(__mspabi_sral_n): Likewise.
(__mspabi_sral): Likewise.
* config/msp430/srli.S (__mspabi_srli_n): Likewise.
(__mspabi_srli): Likewise.
(__mspabi_srll_n): Likewise.
(__mspabi_srll): Likewise.

From-SVN: r271992

5 years agoSimplify mult where both arguments are 0 or 1 (PR tree-optimization/87954).
Martin Liska [Thu, 6 Jun 2019 07:55:51 +0000 (09:55 +0200)]
Simplify mult where both arguments are 0 or 1 (PR tree-optimization/87954).

2019-06-06  Martin Liska  <mliska@suse.cz>

PR tree-optimization/87954
* match.pd: Simplify mult where both arguments are 0 or 1.
2019-06-06  Martin Liska  <mliska@suse.cz>

PR tree-optimization/87954
* gcc.dg/pr87954.c: New test.

From-SVN: r271991

5 years agovr-values.c (vr_values::extract_range_from_ssa_name): Do not put equivalences on...
Richard Biener [Thu, 6 Jun 2019 07:32:44 +0000 (07:32 +0000)]
vr-values.c (vr_values::extract_range_from_ssa_name): Do not put equivalences on UNDEFINED ranges.

2019-06-06  Richard Biener  <rguenther@suse.de>

* vr-values.c (vr_values::extract_range_from_ssa_name): Do not
put equivalences on UNDEFINED ranges.
* gimple-ssa-evrp.c (evrp_dom_walker::before_dom_children):
Make sure to drop defs of stmts added during simplification
to VARYING.

From-SVN: r271990

5 years agotree-ssa-structalias.c: Include tree-cfg.h.
Richard Biener [Thu, 6 Jun 2019 07:25:19 +0000 (07:25 +0000)]
tree-ssa-structalias.c: Include tree-cfg.h.

2019-06-06  Richard Biener  <rguenther@suse.de>

* tree-ssa-structalias.c: Include tree-cfg.h.
(make_heapvar): Do not make heap vars artificial.
(find_func_aliases_for_builtin_call): Handle stack allocation
functions.
(find_func_aliases): Delay processing of simple enough returns
in non-IPA mode.
(set_uids_in_ptset): Adjust.
(find_what_var_points_to): Likewise.
(solve_constraints): Do not dump points-to sets here.
(compute_points_to_sets): Post-process return statements,
amending the escaped solution.  Dump points-to sets afterwards.
(ipa_pta_execute): Dump points-to sets.

* gcc.dg/tree-ssa/alias-37.c: New testcase.
* gcc.dg/torture/20190604-1.c: Likewise.
* gcc.dg/tree-ssa/pta-callused.c: Adjust.

From-SVN: r271989