gcc.git
6 years agoAdd documentation for "mode" attribute for types.
Paul Koning [Wed, 11 Jul 2018 19:06:41 +0000 (15:06 -0400)]
Add documentation for "mode" attribute for types.

* doc/extend.texi (Common Variable Attributes): Move "mode" into
alphabetical order.
(Common Type Attributes): Add "mode" attribute.

From-SVN: r262561

6 years agolto-streamer-out.c (DFS::DFS_write_tree_body): Do not stream DECL_ORIGINAL_TYPE.
Jan Hubicka [Wed, 11 Jul 2018 16:38:27 +0000 (18:38 +0200)]
lto-streamer-out.c (DFS::DFS_write_tree_body): Do not stream DECL_ORIGINAL_TYPE.

* lto-streamer-out.c (DFS::DFS_write_tree_body): Do not
stream DECL_ORIGINAL_TYPE.
(DFS::DFS_write_tree_body): Drop hack handling local external decls.
(hash_tree): Do not walk DECL_ORIGINAL_TYPE.
* tree-streamer-in.c (lto_input_ts_decl_non_common_tree_pointers):
Do not walk original type.
* tree-streamer-out.c (streamer_write_chain): Drop hack handling
external decls.
(write_ts_decl_non_common_tree_pointers): Do not stream
DECL_ORIGINAL_TYPE
* tree.c (free_lang_data_in_decl): Clear DECL_ORIGINAL_TYPE.
(find_decls_types_r): Do not walk DEC_ORIGINAL_TYPE.

From-SVN: r262560

6 years agotree-ssa-threadupdate.c (thread_through_all_blocks): Do not jump thread twice from...
Aldy Hernandez [Wed, 11 Jul 2018 16:25:58 +0000 (16:25 +0000)]
tree-ssa-threadupdate.c (thread_through_all_blocks): Do not jump thread twice from the same starting edge.

        * tree-ssa-threadupdate.c (thread_through_all_blocks): Do not jump
thread twice from the same starting edge.

From-SVN: r262559

6 years agovr-values.c (gimple_stmt_nonzero_p): Abstract common code to...
Aldy Hernandez [Wed, 11 Jul 2018 15:30:51 +0000 (15:30 +0000)]
vr-values.c (gimple_stmt_nonzero_p): Abstract common code to...

        * vr-values.c (gimple_stmt_nonzero_p): Abstract common code to...
        * gimple.c (gimple_call_nonnull_result_p): ...here...
        (gimple_call_nonnull_arg): ...and here.
        * gimple.h (gimple_call_nonnull_result_p): New.
        (gimple_call_nonnull_arg): New.

From-SVN: r262557

6 years ago[arm] Put CPU's FPU capabilities directly in the ISA specification
Richard Earnshaw [Wed, 11 Jul 2018 15:27:55 +0000 (15:27 +0000)]
[arm] Put CPU's FPU capabilities directly in the ISA specification

As part of the transition from the original support for named FPUs to
general FPU properties I defined an entry in the CPU definitions in
arm-cpus.in to use a named FPU.  However, that has now outlived its
usefulness and increasingly we are likely to find that newer cores do
not fit the legacy FPU names very well.  Furthermore it is now possible
to encode all the FPU capatilities directly in the ISA definitions, often
as simply as using +fp or +simd.

So this patch removes the fpu field from the "define cpu" entries and
instead encodes the same information in the isa field.  This also alows us
to remove a bit of now-dead code from parsecpu.awk.

* config/arm/arm-cpus.in: Move information from fpu field of each
cpu definition to the isa field.
* config/arm/parsecpu.awk (fpu): Delete match rule.
(gen_comm_data): Don't add bits from the CPU's FPU entry.

From-SVN: r262556

6 years agocompiler: fix evaluation order of LHS index expressions
Ian Lance Taylor [Wed, 11 Jul 2018 14:22:12 +0000 (14:22 +0000)]
compiler: fix evaluation order of LHS index expressions

    The spec says that when an index expression appears on the left hand
    side of an assignment, the operands should be evaluated. The
    gofrontend code was assuming that that only referred to the index
    operand. But discussion of https://golang.org/issue/23188 has
    clarified that this means both the slice/map/string operand and the
    index operand. Adjust the gofrontend code accordingly.

    Fixes golang/go#23188

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

From-SVN: r262554

6 years agore PR c++/86443 (ICEs on #pragma omp distribute parallel for with class iterators)
Jakub Jelinek [Wed, 11 Jul 2018 13:13:31 +0000 (15:13 +0200)]
re PR c++/86443 (ICEs on #pragma omp distribute parallel for with class iterators)

PR c++/86443
* testsuite/libgomp.c++/for-15.C (a): Remove unused variable.
(results): Make sure the variable is not inside declare target region.
(qux): Remove unused function.

From-SVN: r262552

6 years agore PR debug/86457 (ICE in add_dwarf_attr, at dwarf2out.c:4405 since r251448)
Richard Biener [Wed, 11 Jul 2018 07:08:54 +0000 (07:08 +0000)]
re PR debug/86457 (ICE in add_dwarf_attr, at dwarf2out.c:4405 since r251448)

2018-07-11  Richard Biener  <rguenther@suse.de>

PR debug/86457
* dwarf2out.c (init_sections_and_labels): Use
output_asm_line_debug_info consistently.
(dwarf2out_early_finish): Likewise.
(dwarf2out_finish): Remove DW_AT_stmt_list from early generated
type units.

From-SVN: r262551

6 years agotree-ssa-loop-ivcanon.c (tree_unroll_loops_completely_1): Rework father_bb setting...
Richard Biener [Wed, 11 Jul 2018 07:04:59 +0000 (07:04 +0000)]
tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely_1): Rework father_bb setting in a way to avoid propagating constants multiple times...

2018-07-10  Richard Biener  <rguenther@suse.de>

* tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely_1):
Rework father_bb setting in a way to avoid propagating constants
multiple times on a loop body.

From-SVN: r262550

6 years agoDaily bump.
GCC Administrator [Wed, 11 Jul 2018 00:16:58 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r262549

6 years agoPR debug/86459 - Fix -gsplit-dwarf -g3 gcc_assert
Mark Wielaard [Tue, 10 Jul 2018 22:44:30 +0000 (22:44 +0000)]
PR debug/86459 - Fix -gsplit-dwarf -g3 gcc_assert

There was a typo in the output_macinfo_op gcc_assert.
The function is called dwarf_FORM, not dwarf_form.
Add the provided testcase from the bug to test -gsplit-dwarf -g3.

gcc/ChangeLog:

PR debug/86459
* dwarf2out.c (output_macinfo_op): Fix dwarf_FORM typo in gcc_assert.

gcc/testsuite/ChangeLog:

PR debug/86459
* gcc.dg/pr86459.c: New test.

From-SVN: r262545

6 years agoPR testsuite/86461 - test case gcc.c-torture/execute/builtins/strlen-3.c fails
Martin Sebor [Tue, 10 Jul 2018 20:21:38 +0000 (20:21 +0000)]
PR testsuite/86461 - test case gcc.c-torture/execute/builtins/strlen-3.c fails

gcc/testsuite/ChangeLog:
* gcc.c-torture/execute/builtins/strlen-3.c: Adjust.

From-SVN: r262543

6 years agoChange dg-warning to db-bogus in a test-case (PR testsuite/86445).
Martin Liska [Tue, 10 Jul 2018 14:50:28 +0000 (16:50 +0200)]
Change dg-warning to db-bogus in a test-case (PR testsuite/86445).

2018-07-10  Martin Liska  <mliska@suse.cz>

        PR testsuite/86445
* gcc.dg/pr84100.c: Change it back to dg-bogus.

From-SVN: r262540

6 years agohash-map.h (hash_map::iterator::operator*): Return references to key and value.
Richard Biener [Tue, 10 Jul 2018 13:02:34 +0000 (13:02 +0000)]
hash-map.h (hash_map::iterator::operator*): Return references to key and value.

2018-07-10  Richard Biener  <rguenther@suse.de>

* hash-map.h (hash_map::iterator::operator*): Return
references to key and value.

From-SVN: r262539

6 years agore PR sanitizer/86406 ([UBSAN] -fcompare-debug failure with -fsanitize=undefined)
Jakub Jelinek [Tue, 10 Jul 2018 08:04:14 +0000 (10:04 +0200)]
re PR sanitizer/86406 ([UBSAN] -fcompare-debug failure with -fsanitize=undefined)

PR sanitizer/86406
* cp-gimplify.c (cp_maybe_instrument_return): Skip trailing
DEBUG_BEGIN_STMTs.

* g++.dg/ubsan/pr86406.C: New test.

From-SVN: r262536

6 years agore PR fortran/86421 (OpenMP declare simd linear ref in module causes gfortran to...
Jakub Jelinek [Tue, 10 Jul 2018 07:27:37 +0000 (09:27 +0200)]
re PR fortran/86421 (OpenMP declare simd linear ref in module causes gfortran to bail out)

PR fortran/86421
* module.c (omp_declare_simd_clauses): Add LINEAR with _REF, _VAL and
_UVAL suffixes.
(mio_omp_declare_simd): Save and restore ref, val and uval modifiers
on linear clauses.  Initialize n->where to gfc_current_locus.

* gfortran.dg/vect/pr86421.f90: New test.

From-SVN: r262535

6 years agore PR c++/86443 (ICEs on #pragma omp distribute parallel for with class iterators)
Jakub Jelinek [Tue, 10 Jul 2018 07:12:37 +0000 (09:12 +0200)]
re PR c++/86443 (ICEs on #pragma omp distribute parallel for with class iterators)

PR c++/86443
* gimplify.c (find_combined_omp_for): Add DATA argument, in addition
to finding the inner OMP_FOR/OMP_SIMD stmt find non-trivial wrappers,
BLOCKs with BLOCK_VARs, OMP_PARALLEL in between, OMP_FOR in between.
(gimplify_omp_for): For composite loops, move outer
OMP_{DISTRIBUTE,TASKLOOP,FOR,PARALLEL} right around innermost
OMP_FOR/OMP_SIMD if there are any non-trivial wrappers.  For class
iterators add any needed clauses.  Allow OMP_FOR_ORIG_DECLS to contain
TREE_LIST for both the original class iterator and the "last" helper
var.  Gimplify OMP_FOR_PRE_BODY before the outermost composite
loop, remember has_decl_expr from outer composite loops for the
innermost OMP_SIMD in TREE_PRIVATE bit on OMP_FOR_INIT.
gcc/c-family/
* c-omp.c (c_omp_check_loop_iv_r, c_omp_check_loop_iv): Allow declv
to contain TREE_LIST for both the original class iterator and the
"last" helper var.
gcc/cp/
* semantics.c (handle_omp_for_class_iterator): Remove lastp argument,
instead of setting *lastp turn orig_declv elt into a TREE_LIST.
(finish_omp_for): Adjust handle_omp_for_class_iterator caller.
* pt.c (tsubst_omp_for_iterator): Allow OMP_FOR_ORIG_DECLS to contain
TREE_LIST for both the original class iterator and the "last" helper
var.
libgomp/
* testsuite/libgomp.c++/for-15.C: New test.

From-SVN: r262534

6 years agocompiler: fix double evaluation with interface field expression
Ian Lance Taylor [Tue, 10 Jul 2018 00:55:28 +0000 (00:55 +0000)]
compiler: fix double evaluation with interface field expression

    In Interface_field_reference_expression, the interface expression
    is used in two places, so a temporary variable is used. Previously,
    we used a Set_and_use_temporary_expression, which, when evaluated
    twice, causes double evaluation of the underlying expression. Fix
    by setting the temporary once and use Temporary_reference_expression
    instead.

    Fixes golang/go#26248.

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

From-SVN: r262533

6 years agoDaily bump.
GCC Administrator [Tue, 10 Jul 2018 00:16:45 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r262532

6 years agoPR tree-optimization/86415 - strlen() not folded for substrings within constant arrays
Martin Sebor [Tue, 10 Jul 2018 00:02:36 +0000 (00:02 +0000)]
PR tree-optimization/86415 - strlen() not folded for substrings within constant arrays

gcc/testsuite/ChangeLog:

* gcc.dg/strlenopt-53.c: New test.

From-SVN: r262528

6 years agoPR middle-end/77357 - strlen of constant strings not folded
Martin Sebor [Mon, 9 Jul 2018 20:33:48 +0000 (20:33 +0000)]
PR middle-end/77357 - strlen of constant strings not folded

gcc/ChangeLog:

PR middle-end/77357
PR middle-end/86428
* builtins.c (c_strlen): Avoid out-of-bounds warnings when
accessing implicitly initialized array elements.
* expr.c (string_constant): Handle string initializers of
character arrays within aggregates.
* gimple-fold.c (fold_array_ctor_reference): Add argument.
Store element offset.  As a special case, handle zero size.
(fold_nonarray_ctor_reference): Same.
(fold_ctor_reference): Add argument.  Store subobject offset.
* gimple-fold.h (fold_ctor_reference): Add argument.

gcc/testsuite/ChangeLog:

PR middle-end/77357
* gcc.dg/strlenopt-49.c: New test.
* gcc.dg/strlenopt-50.c: New test.
* gcc.dg/strlenopt-51.c: New test.
* gcc.dg/strlenopt-52.c: New test.

From-SVN: r262522

6 years agoImprove code generation for pdp11 target.
Paul Koning [Mon, 9 Jul 2018 14:00:52 +0000 (10:00 -0400)]
Improve code generation for pdp11 target.

* config/pdp11/pdp11.c (pdp11_addr_cost): New function.
(pdp11_insn_cost): New function.
(pdp11_md_asm_adjust): New function.
(TARGET_INVALID_WITHIN_DOLOOP): Define.
(pdp11_rtx_costs): Update to match machine better.
(output_addr_const_pdp11): Correct format mismatch warnings.
* config/pdp11/pdp11.h (SLOW_BYTE_ACCESS): Correct definition.
* config/pdp11/pdp11.md: General change to add base_cost and/or
length attributes for use by new pdp11_insn_cost function.
(MIN_BRANCH): Correct definition.
(MIN_SOB): Ditto.
(doloop_end): Use standard pattern name for looping pattern.
(doloop_end_nocc): New.
(movsf): Add another constraint alternative.
(zero_extendqihi2): Add constraint alternatives for not in place
extend.
(zero_extendhisi2): Remove.
(shift patterns): Add CC handling variants.
(bswaphi2): New.
(bswapsi2): New.
(rothi3): New.
(define_peephole2): New peephole to recognize mov that sets CC for
subsequent test.

From-SVN: r262519

6 years agoFix overflow handling in sparc.c:sparc_fold_builtin
Rainer Orth [Mon, 9 Jul 2018 12:44:19 +0000 (12:44 +0000)]
Fix overflow handling in sparc.c:sparc_fold_builtin

* config/sparc/sparc.c (sparc_fold_builtin) <SPARC_BUILTIN_PDIST,
SPARC_BUILTIN_PDISTN>: Adapt for signature change of wi::neg,
wi::add.

From-SVN: r262518

6 years agore PR c/86420 (nextafter(0x1p-1022,0) is constant folded)
Jakub Jelinek [Mon, 9 Jul 2018 10:56:47 +0000 (12:56 +0200)]
re PR c/86420 (nextafter(0x1p-1022,0) is constant folded)

PR c/86420
* real.c (real_nextafter): Return true if result is denormal.

* gcc.dg/nextafter-1.c (TEST): Adjust the tests that expect denormals
to be returned and when first argument is not 0, so that they don't do
anything for NEED_EXC or NEED_ERRNO.

From-SVN: r262517

6 years ago[testsuite] Use relative line numbers in gcc.dg/guality
Tom de Vries [Mon, 9 Jul 2018 10:37:15 +0000 (10:37 +0000)]
[testsuite] Use relative line numbers in gcc.dg/guality

Use relative line number where obvious: either the relative line number is
'.', '.-1' or '.+1', or adjacent to another obvious case.

2018-07-09  Tom de Vries  <tdevries@suse.de>

* gcc.dg/guality/asm-1.c: Use relative line numbers where obvious.
* gcc.dg/guality/bswaptest.c: Same.
* gcc.dg/guality/clztest.c: Same.
* gcc.dg/guality/csttest.c: Same.
* gcc.dg/guality/ctztest.c: Same.
* gcc.dg/guality/drap.c: Same.
* gcc.dg/guality/nrv-1.c: Same.
* gcc.dg/guality/pr41353-1.c: Same.
* gcc.dg/guality/pr41353-2.c: Same.
* gcc.dg/guality/pr41404-1.c: Same.
* gcc.dg/guality/pr43051-1.c: Same.
* gcc.dg/guality/pr43077-1.c: Same.
* gcc.dg/guality/pr43177.c: Same.
* gcc.dg/guality/pr43329-1.c: Same.
* gcc.dg/guality/pr43479.c: Same.
* gcc.dg/guality/pr43593.c: Same.
* gcc.dg/guality/pr45003-1.c: Same.
* gcc.dg/guality/pr45003-2.c: Same.
* gcc.dg/guality/pr45003-3.c: Same.
* gcc.dg/guality/pr48437.c: Same.
* gcc.dg/guality/pr48466.c: Same.
* gcc.dg/guality/pr49888.c: Same.
* gcc.dg/guality/pr54200.c: Same.
* gcc.dg/guality/pr54519-1.c: Same.
* gcc.dg/guality/pr54519-2.c: Same.
* gcc.dg/guality/pr54519-3.c: Same.
* gcc.dg/guality/pr54519-4.c: Same.
* gcc.dg/guality/pr54519-5.c: Same.
* gcc.dg/guality/pr54519-6.c: Same.
* gcc.dg/guality/pr54551.c: Same.
* gcc.dg/guality/pr54693-2.c: Same.
* gcc.dg/guality/pr54693.c: Same.
* gcc.dg/guality/pr54796.c: Same.
* gcc.dg/guality/pr54970.c: Same.
* gcc.dg/guality/pr67192.c: Same.
* gcc.dg/guality/pr69947.c: Same.
* gcc.dg/guality/pr78726.c: Same.
* gcc.dg/guality/rotatetest.c: Same.
* gcc.dg/guality/sra-1.c: Same.
* gcc.dg/guality/vla-2.c: Same.

From-SVN: r262516

6 years agoAdd missing Optimization attribute.
Martin Liska [Mon, 9 Jul 2018 08:22:24 +0000 (10:22 +0200)]
Add missing Optimization attribute.

2018-07-09  Martin Liska  <mliska@suse.cz>

* common.opt: Add back wrongly removed attribute.

From-SVN: r262513

6 years agodecl.c (grokdeclarator): Use rich_location::add_range in three more places; include...
Paolo Carlini [Mon, 9 Jul 2018 07:59:22 +0000 (07:59 +0000)]
decl.c (grokdeclarator): Use rich_location::add_range in three more places; include gcc-rich-location.h.

/cp
2018-07-09  Paolo Carlini  <paolo.carlini@oracle.com>

* decl.c (grokdeclarator): Use rich_location::add_range in three
more places; include gcc-rich-location.h.

/testsuite
2018-07-09  Paolo Carlini  <paolo.carlini@oracle.com>

* g++.dg/diagnostic/long-short.C: New.
* g++.dg/diagnostic/signed-unsigned.C: Likewise.
* g++.dg/diagnostic/virtual-friend.C: Likewise.
* g++.old-deja/g++.brendan/crash11.C: Adjust.

From-SVN: r262512

6 years agore PR debug/86413 (gcc.dg/guality/pr48437.c fail)
Richard Biener [Mon, 9 Jul 2018 07:25:14 +0000 (07:25 +0000)]
re PR debug/86413 (gcc.dg/guality/pr48437.c fail)

2018-07-09  Richard Biener  <rguenther@suse.de>

PR debug/86413
* dwarf2out.c (gen_block_die): For an early generated DIE
always output high/low PC attributes.

From-SVN: r262511

6 years ago[debug] Handle debug references to skipped params
Tom de Vries [Mon, 9 Jul 2018 07:17:45 +0000 (07:17 +0000)]
[debug] Handle debug references to skipped params

When compiling guality/vla-1.c with -O3 -g, vla a in f1 is optimized away, but
f1 still contains a debug expression describing the upper bound of the vla
(D.1914):
...
     __attribute__((noinline))
     f1 (intD.6 iD.1900)
     {
       <bb 2>
       saved_stack.1_2 = __builtin_stack_save ();
       # DEBUG BEGIN_STMT
       # DEBUG D#3 => i_1(D) + 1
       # DEBUG D#2 => (long intD.8) D#3
       # DEBUG D#1 => D#2 + -1
       # DEBUG D.1914 => (sizetype) D#1
...

Then f1 is cloned to a version f1.constprop with no parameters, eliminating
parameter i, and 'DEBUG D#3 => i_1(D) + 1' turns into 'D#3 => NULL'.

This patch fixes that by defining debug expressions for default defs of
eliminated parameters in remap_ssa_name:
...
     __attribute__((noinline))
     f1.constprop ()
     {
       intD.6 iD.1949;

       <bb 3>
       # DEBUG D#8 s=> iD.1900
       # DEBUG iD.1949 => D#8

       <bb 2>
+      # DEBUG D#6 s=> iD.1949
       saved_stack.1_1 = __builtin_stack_save ();
       # DEBUG BEGIN_STMT
-      # DEBUG D#3 => NULL
+      # DEBUG D#3 => D#6 + 1
       # DEBUG D#2 => (long intD.8) D#3
       # DEBUG D#1 => D#2 + -1
       # DEBUG D.1951 => (sizetype) D#1
...

Bootstrapped and reg-tested on x86_64.

2018-07-09  Tom de Vries  <tdevries@suse.de>

* cfgexpand.c (expand_debug_source_expr): Handle VAR_DECL.
* tree-inline.c (remap_ssa_name): Handle default def ssa_name mapping
onto VAR_DECL with abstract origin.

* gcc.dg/vla-1.c: New test.

From-SVN: r262510

6 years agoDaily bump.
GCC Administrator [Mon, 9 Jul 2018 00:16:53 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r262509

6 years agoDaily bump.
GCC Administrator [Sun, 8 Jul 2018 00:16:49 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r262505

6 years agoRISC-V: Finish Ada port.
Jim Wilson [Sat, 7 Jul 2018 15:59:27 +0000 (15:59 +0000)]
RISC-V: Finish Ada port.

gcc/
* config/riscv/riscv.c (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): New.

From-SVN: r262501

6 years agoFix sigsegv on -fdump-tree-all-enumerate_locals
Tom de Vries [Sat, 7 Jul 2018 11:08:27 +0000 (11:08 +0000)]
Fix sigsegv on -fdump-tree-all-enumerate_locals

2018-07-07  Tom de Vries  <tdevries@suse.de>

* tree-dfa.c (dump_enumerated_decls): Handle cfun->cfg == NULL.

* gcc.misc-tests/options.exp (check_for_all_options): Clean up dump
files.
(get_dump_flags): New proc.
(toplevel): Test all dump flags.

From-SVN: r262500

6 years agoc-ada-spec.c (to_ada_name): Remove index parameter.
Eric Botcazou [Sat, 7 Jul 2018 10:46:10 +0000 (10:46 +0000)]
c-ada-spec.c (to_ada_name): Remove index parameter.

* c-ada-spec.c (to_ada_name): Remove index parameter.
(pp_ada_tree_identifier): Likewise.
(dump_ada_macros): Adjust call to to_ada_name.
(struct overloaded_name_hash): Delete.
(struct overloaded_name_hasher): Likewise.
(overloaded_names): Likewise.
(compute_overloading_index): Likewise.
(dump_ada_decl_name): Do not call compute_overloading_index and
adjust calls to pp_ada_tree_identifier.
(dump_ada_double_name): Adjust calls to pp_ada_tree_identifier.
(dump_ada_import): Add spc parameter and switch to aspect syntax.
(dump_ada_function_declaration): Adjust call to pp_ada_tree_identifier.
(dump_ada_enum_type): Remove type and display_convention parameters.
Adjust calls to pp_ada_tree_identifier.
(dump_ada_node): Likewise and for dump_ada_structure.
(dump_nested_type) <ENUMERAL_TYPE>: Adjust call to dump_ada_enum_type
and tidy up.
<RECORD_TYPE>: Adjust call to dump_ada_structure and switch to aspect
syntax.
(print_constructor): Adjust call to pp_ada_tree_identifier.
(print_destructor): Likewise.
(dump_ada_declaration): Switch to aspect syntax.
(dump_ada_structure): Likewise and tidy up.  Replace display_convention
parameter with nested parameter.
(dump_ads): Emit pragma Ada_2012 in lieu of pragma Ada_2005.
(dump_ada_specs): Do not delete overloaded_names table.

From-SVN: r262499

6 years agodecl.c (gnat_to_gnu_entity): Add GNAT_DECL local variable and use it throughout.
Eric Botcazou [Sat, 7 Jul 2018 10:36:54 +0000 (10:36 +0000)]
decl.c (gnat_to_gnu_entity): Add GNAT_DECL local variable and use it throughout.

* gcc-interface/decl.c (gnat_to_gnu_entity): Add GNAT_DECL local
variable and use it throughout.
<E_Variable>: If the nominal subtype of the object is unconstrained,
compute the Ada size separately and put in on the padding type if the
size is not fixed.
<E_Record_Type>: Minor tweak.
* gcc-interface/misc.c (gnat_type_max_size): Rename max_size_unit
into max_size_unit throughout.

From-SVN: r262498

6 years agogigi.h (add_decl_expr): Adjust prototype.
Eric Botcazou [Sat, 7 Jul 2018 10:20:12 +0000 (10:20 +0000)]
gigi.h (add_decl_expr): Adjust prototype.

* gcc-interface/gigi.h (add_decl_expr): Adjust prototype.
* gcc-interface/decl.c (gnat_to_gnu_entity): Remove useless test.
* gcc-interface/trans.c (add_stmt_with_node): Remove exceptions.
(add_decl_expr): Change type of second parameter and rename it.
(renaming_from_instantiation_p): New function moved from...
(set_expr_location_from_node): Test for exceptions here and add one
for actual subtypes built for unconstrained composite actuals.
* gcc-interface/utils.c (renaming_from_instantiation_p): ...here.

From-SVN: r262497

6 years agotrans.c (lvalue_required_p): Remove ALIASED parameter and adjust recursive calls.
Eric Botcazou [Sat, 7 Jul 2018 10:10:29 +0000 (10:10 +0000)]
trans.c (lvalue_required_p): Remove ALIASED parameter and adjust recursive calls.

* gcc-interface/trans.c (lvalue_required_p): Remove ALIASED parameter
and adjust recursive calls.
(Identifier_to_gnu): Adjust calls to lvalue_required_p.
(gnat_to_gnu): Likewise.

From-SVN: r262496

6 years agodecl.c (gnat_to_gnu_param): Minor tweak.
Eric Botcazou [Sat, 7 Jul 2018 10:06:08 +0000 (10:06 +0000)]
decl.c (gnat_to_gnu_param): Minor tweak.

* gcc-interface/decl.c (gnat_to_gnu_param): Minor tweak.
(gnat_to_gnu_subprog_type): New pure_flag local variable.  Set it for
a pure Ada function with a by-ref In parameter.  Propagate it onto the
function type by means of the TYPE_QUAL_RESTRICT flag.
* gcc-interface/utils.c (finish_subprog_decl): Set DECL_PURE_P if the
function type has the TYPE_QUAL_RESTRICT flag set.

From-SVN: r262495

6 years agotree-vrp.c (vrp_int_const_binop): Change overflow type to overflow_type.
Aldy Hernandez [Sat, 7 Jul 2018 08:49:04 +0000 (08:49 +0000)]
tree-vrp.c (vrp_int_const_binop): Change overflow type to overflow_type.

* tree-vrp.c (vrp_int_const_binop): Change overflow type to
overflow_type.
(combine_bound): Use wide-int overflow calculation instead of
rolling our own.
* calls.c (maybe_warn_alloc_args_overflow): Change overflow type to
overflow_type.
* fold-const.c (int_const_binop_2): Same.
(extract_muldiv_1): Same.
(fold_div_compare): Same.
(fold_abs_const): Same.
* match.pd: Same.
* poly-int.h (add): Same.
(sub): Same.
(neg): Same.
(mul): Same.
* predict.c (predict_iv_comparison): Same.
* profile-count.c (slow_safe_scale_64bit): Same.
* simplify-rtx.c (simplify_const_binary_operation): Same.
* tree-chrec.c (tree_fold_binomial): Same.
* tree-data-ref.c (split_constant_offset_1): Same.
* tree-if-conv.c (idx_within_array_bound): Same.
* tree-scalar-evolution.c (iv_can_overflow_p): Same.
* tree-ssa-phiopt.c (minmax_replacement): Same.
* tree-vect-loop.c (is_nonwrapping_integer_induction): Same.
* tree-vect-stmts.c (vect_truncate_gather_scatter_offset): Same.
* vr-values.c (vr_values::adjust_range_with_scev): Same.
* wide-int.cc (wi::add_large): Same.
(wi::mul_internal): Same.
(wi::sub_large): Same.
(wi::divmod_internal): Same.
* wide-int.h: Change overflow type to overflow_type for neg, add,
mul, smul, umul, div_trunc, div_floor, div_ceil, div_round,
mod_trunc, mod_ceil, mod_round, add_large, sub_large,
mul_internal, divmod_internal.
(overflow_type): New enum.
(accumulate_overflow): New.

cp/
* decl.c (build_enumerator): Change overflow type to overflow_type.
* init.c (build_new_1): Same.

From-SVN: r262494

6 years agore PR target/84711 (AArch32 big-endian fails when taking subreg of a vector mode...
Jakub Jelinek [Sat, 7 Jul 2018 07:47:10 +0000 (09:47 +0200)]
re PR target/84711 (AArch32 big-endian fails when taking subreg of a vector mode to a scalar mode.)

PR target/84711
* gcc.dg/vect/pr84711.c: Remove unnecessary sse
dg-require-effective-target.  Add -msse not just on i386-*, but
on all i?86-* and x86_64-*.

From-SVN: r262493

6 years agoDaily bump.
GCC Administrator [Sat, 7 Jul 2018 00:16:18 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r262492

6 years agotree-ssa-phiopt.c (cond_removal_in_popcount_pattern): New.
Kugan Vivekanandarajah [Fri, 6 Jul 2018 22:15:48 +0000 (22:15 +0000)]
tree-ssa-phiopt.c (cond_removal_in_popcount_pattern): New.

gcc/ChangeLog:

2018-07-06  Kugan Vivekanandarajah  <kugan.vivekanandarajah@linaro.org>

* tree-ssa-phiopt.c (cond_removal_in_popcount_pattern): New.
(tree_ssa_phiopt_worker): Call cond_removal_in_popcount_pattern.

gcc/testsuite/ChangeLog:

2018-07-06  Kugan Vivekanandarajah  <kugan.vivekanandarajah@linaro.org>

* gcc.dg/tree-ssa/phi-opt-16.c: New test.
* gcc.dg/tree-ssa/phi-opt-17.c: New test.
* gcc.dg/tree-ssa/phi-opt-18.c: New test.
* gcc.dg/tree-ssa/phi-opt-19.c: New test.
* gcc.dg/tree-ssa/popcount3.c: New test.

From-SVN: r262488

6 years agotree-ssa-loop-niter.c (number_of_iterations_popcount): If popcount argument is checke...
Kugan Vivekanandarajah [Fri, 6 Jul 2018 22:12:52 +0000 (22:12 +0000)]
tree-ssa-loop-niter.c (number_of_iterations_popcount): If popcount argument is checked for zero before entering loop, avoid checking again.

gcc/ChangeLog:

2018-07-06  Kugan Vivekanandarajah  <kuganv@linaro.org>

* tree-ssa-loop-niter.c (number_of_iterations_popcount): If popcount
argument is checked for zero before entering loop, avoid checking again.

From-SVN: r262487

6 years agogimplify.h (generic_expr_could_trap_p): Set as global function.
Kugan Vivekanandarajah [Fri, 6 Jul 2018 22:10:20 +0000 (22:10 +0000)]
gimplify.h (generic_expr_could_trap_p): Set as global function.

gcc/ChangeLog:

2018-07-06  Kugan Vivekanandarajah  <kuganv@linaro.org>

* gimplify.h (generic_expr_could_trap_p): Set as global function.
* gimplify.h (generic_expr_could_trap_p): Likwise.
* tree-scalar-evolution.c (expression_expensive_p): Handle COND_EXPR.

gcc/testsuite/ChangeLog:

2018-07-06  Kugan Vivekanandarajah  <kuganv@linaro.org>

* gcc.dg/tree-ssa/pr64183.c: Disable final value replacement
to preserve the test.
* gcc.target/i386/pr85073.c: Likewise.

From-SVN: r262486

6 years agore PR tree-optimization/86401 (The "For constants M and N, if M == (1LL << cst) ...
Jakub Jelinek [Fri, 6 Jul 2018 21:42:41 +0000 (23:42 +0200)]
re PR tree-optimization/86401 (The "For constants M and N, if M == (1LL << cst) - 1 && (N & M) == M,..." opts are only in fold-const.c and in RTL)

PR tree-optimization/86401
* fold-const.c (fold_binary_loc) <case BIT_AND_EXPR>: Move the
((A & N) + B) & M -> (A + B) & M etc. optimization into ...
(fold_bit_and_mask): ... here.  New helper function for match.pd.
* fold-const.h (fold_bit_and_mask): Declare.
* match.pd (((A & N) + B) & M -> (A + B) & M): New optimization.

* gcc.dg/tree-ssa/pr86401-1.c: New test.
* gcc.dg/tree-ssa/pr86401-2.c: New test.
* c-c++-common/rotate-9.c: New test.

From-SVN: r262485

6 years agore PR target/86324 (testsuite test divkc3-1.c FAILs when compiling with -mabi=ieeelon...
Peter Bergner [Fri, 6 Jul 2018 21:05:48 +0000 (21:05 +0000)]
re PR target/86324 (testsuite test divkc3-1.c FAILs when compiling with -mabi=ieeelongdouble)

gcc/
PR target/86324
* target.def (translate_mode_attribute): New hook.
* targhooks.h (default_translate_mode_attribute): Declare.
* targhooks.c (default_translate_mode_attribute): New function.
* doc/tm.texi.in (TARGET_TRANSLATE_MODE_ATTRIBUTE): New hook.
* doc/tm.texi: Regenerate.
* config/rs6000/rs6000.c (TARGET_TRANSLATE_MODE_ATTRIBUTE): Define.
(rs6000_translate_mode_attribute): New function.

gcc/c-family/
PR target/86324
* c-attribs.c (handle_mode_attribute): Call new translate_mode_attribute
target hook.

gcc/testsuite/
PR target/86324
gcc.target/powerpc/pr86324-1.c: New test.
gcc.target/powerpc/pr86324-2.c: Likewise.

From-SVN: r262484

6 years agoRISC-V: Initial riscv linux Ada port.
Jim Wilson [Fri, 6 Jul 2018 17:28:28 +0000 (17:28 +0000)]
RISC-V: Initial riscv linux Ada port.

* Makefile.rtl: Add riscv*-linux* support.
* libgnarl/s-linux__riscv.ads: New.
* libgnat/system-linux-riscv.ads: New.

From-SVN: r262482

6 years agoMakefile patches from initial RISC-V cross/native build.
Jim Wilson [Fri, 6 Jul 2018 17:07:37 +0000 (17:07 +0000)]
Makefile patches from initial RISC-V cross/native build.

* Make-generated.in (treeprs.ads): Use $(GNATMAKE) instead of gnatmake.
(einfo.h, sinfo.h, stamp-snames, stamp-nmake): Likewise.
* gcc-interface/Makefile.in (xoscons): Likewise.

From-SVN: r262481

6 years agofunctions.h (__gnu_debug::__check_string): Move...
François Dumont [Fri, 6 Jul 2018 17:02:33 +0000 (17:02 +0000)]
functions.h (__gnu_debug::__check_string): Move...

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

* include/debug/functions.h (__gnu_debug::__check_string): Move...
* include/debug/string (__gnu_debug::__check_string): ... here.
(_GLIBCXX_DEBUG_VERIFY_STR_COND_AT): New.
(__glibcxx_check_string_n_constructor): New.
(__gnu_debug::basic_string<>(const _CharT*, size_type, const _Alloc&)):
Use latter.
(__glibcxx_check_string_constructor): New.
(__gnu_debug::basic_string<>(const _CharT*, const _Alloc&)):
Use latter.
* testsuite/21_strings/basic_string/debug/1_neg.cc: New.
* testsuite/21_strings/basic_string/debug/2_neg.cc: New.

From-SVN: r262480

6 years agoUpdate internal documentation to describe that DONE and FAIL
Paul Koning [Fri, 6 Jul 2018 16:39:50 +0000 (12:39 -0400)]
Update internal documentation to describe that DONE and FAIL
also apply to define_split and define_peephole2.

* doc/md.texi (define_split): Document DONE and FAIL.
(define_peephole2): Ditto.

From-SVN: r262479

6 years agoPR libstdc++/84928 use std::move in <numeric> algorithms
Jonathan Wakely [Fri, 6 Jul 2018 14:16:13 +0000 (15:16 +0100)]
PR libstdc++/84928 use std::move in <numeric> algorithms

P0616R0 altered the effects of the <numeric> algorithms to use std::move
on the accumulator values (resolving LWG 2055). This implements the
change for C++2a, but retains the previous behaviour for older
standards.

* include/bits/stl_numeric.h (_GLIBCXX_MOVE_IF_20): Define macro to
conditionally move, according to __cplusplus value.
(accumulate, inner_product, partial_sum, adjacent_difference): Use
_GLIBCXX_MOVE_IF_20.
* testsuite/26_numerics/accumulate/lwg2055.cc: New test.
* testsuite/26_numerics/adjacent_difference/lwg2055.cc: New test.
* testsuite/26_numerics/inner_product/lwg2055.cc: New test.
* testsuite/26_numerics/partial_sum/lwg2055.cc: New test.

From-SVN: r262477

6 years agoSimplify linker script patterns for std::exception_ptr
Jonathan Wakely [Fri, 6 Jul 2018 12:52:41 +0000 (13:52 +0100)]
Simplify linker script patterns for std::exception_ptr

* config/abi/pre/gnu.ver: Use wildcards to combine related patterns.

From-SVN: r262475

6 years agoP0935R0 Eradicating unnecessarily explicit default constructors
Jonathan Wakely [Fri, 6 Jul 2018 12:39:02 +0000 (13:39 +0100)]
P0935R0 Eradicating unnecessarily explicit default constructors

This is the last remaining piece of P0935R0. This adds a default
constructor to each of the streambuf and stream types in <sstream> so
that default construction does not use the 'explicit' constructor that
has a single, defaulted argument.

P0935R0 Eradicating unnecessarily explicit default constructors
* config/abi/pre/gnu.ver: Tighten existing patterns and export new
default constructor symbols.
* include/std/sstream (basic_stringbuf, basic_istringstream)
(basic_ostringstream, basic_stringstream): Remove default arguments
from explicit constructors taking ios_base::openmode and add separate
non-explicit default constructors.
* testsuite/27_io/basic_istringstream/cons/default.cc: New.
* testsuite/27_io/basic_ostringstream/cons/default.cc: New.
* testsuite/27_io/basic_stringstream/cons/default.cc: New.
* testsuite/27_io/basic_stringbuf/cons/char/default.cc: New.
* testsuite/27_io/basic_stringbuf/cons/wchar_t/default.cc: New.

From-SVN: r262474

6 years agoRequire sse for testcase on i686.
Tamar Christina [Fri, 6 Jul 2018 10:44:35 +0000 (10:44 +0000)]
Require sse for testcase on i686.

PR target/84711
* gcc.dg/vect/pr84711.c: Add -msse for i686 targets.

From-SVN: r262472

6 years ago* include/std/variant (__accepted_index): Use void_t.
Jonathan Wakely [Fri, 6 Jul 2018 10:20:38 +0000 (11:20 +0100)]
* include/std/variant (__accepted_index): Use void_t.

From-SVN: r262471

6 years agoFix -Wpedantic issue with testcase on AArch64.
Tamar Christina [Fri, 6 Jul 2018 09:14:30 +0000 (09:14 +0000)]
Fix -Wpedantic issue with testcase on AArch64.

2018-07-06  Tamar Christina  <tamar.christina@arm.com>

* gcc.target/aarch64/struct_cpy.c: Remove ;.

From-SVN: r262470

6 years agoUpdate config.sub
Sebastian Huber [Fri, 6 Jul 2018 06:22:08 +0000 (06:22 +0000)]
Update config.sub

* config.sub: Sync with upstream version 2018-07-03.

From-SVN: r262469

6 years agoRTEMS/Ada: Change system configuration
Sebastian Huber [Fri, 6 Jul 2018 06:02:00 +0000 (06:02 +0000)]
RTEMS/Ada: Change system configuration

The previous system configuration led to undefined references to
__gnat_raise_nodefer_with_msg().

gcc/ada
* libgnat/system-rtems.ads (Frontend_Exceptions): Set to False.
(ZCX_By_Default): Set to True.

From-SVN: r262467

6 years agoUpdate config.guess and config.sub
Sebastian Huber [Fri, 6 Jul 2018 05:57:35 +0000 (05:57 +0000)]
Update config.guess and config.sub

* config.guess: Sync with upstream version 2018-06-26.
* config.sub: Sync with upstream version 2018-07-02.

From-SVN: r262466

6 years agoasm-2.c (REGISTER): Override for v850 too.
Jeff Law [Fri, 6 Jul 2018 04:17:46 +0000 (22:17 -0600)]
asm-2.c (REGISTER): Override for v850 too.

* gcc.dg/tree-ssa/asm-2.c (REGISTER): Override for v850 too.

2018-07-05  Fritz Reese  <fritzoreese@gmail.com>

From-SVN: r262465

6 years agore PR tree-optimization/86010 (redundant memset with smaller size not eliminated)
Jeff Law [Fri, 6 Jul 2018 03:43:42 +0000 (21:43 -0600)]
re PR tree-optimization/86010 (redundant memset with smaller size not eliminated)

PR tree-optimization/86010
* tree-ssa-dse.c (compute_trims): More aggressively trim at
both the head and tail of mem* and str* calls.

From-SVN: r262464

6 years agoRISC-V: Add support for riscv-*-*.
Jim Wilson [Fri, 6 Jul 2018 03:14:47 +0000 (03:14 +0000)]
RISC-V: Add support for riscv-*-*.

* config.gcc (riscv*-*-*): When setting xlen, handle riscv-*.

From-SVN: r262463

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

From-SVN: r262462

6 years agoaarch64-simd.md: correct flags text for MIN_EXPR replacement.
Indu Bhagat [Thu, 5 Jul 2018 23:07:40 +0000 (23:07 +0000)]
aarch64-simd.md: correct flags text for MIN_EXPR replacement.

2018-07-05  Indu Bhagat  <indu.bhagat@oracle.com>

        * config/aarch64/aarch64-simd.md: correct flags text for
        MIN_EXPR replacement.

From-SVN: r262458

6 years agoPR libstdc++/85831 define move constructors and operators for exceptions
Jonathan Wakely [Thu, 5 Jul 2018 21:29:51 +0000 (22:29 +0100)]
PR libstdc++/85831 define move constructors and operators for exceptions

PR libstdc++/85831
* config/abi/pre/gnu.ver: Export move constructors and move
assignment operators for std::logic_error and std::runtime_error.
* include/std/stdexcept: Use _GLIBCXX_NOTHROW instead of
_GLIBCXX_USE_NOEXCEPT.
(logic_error, runtime_error): Declare move constructors and move
assignment operators. When not declared already, define copy
constructors and copy assignment operators as explicit-defaulted.
(domain_error, invalid_argument, length_error, out_of_range)
(overflow_error, underflow_error): Define move constructors and move
assignment operators as explicitly-defaulted.
* libsupc++/exception.h (exception): Likewise.
* src/c++11/cow-stdexcept.cc (logic_error, runtime_error): Define
move constructors and move assignment operators as defaulted.
* testsuite/19_diagnostics/stdexcept.cc: Check that constructors and
assignment operators are defined.

From-SVN: r262456

6 years agoAdd missing '|' as wrong patch was applied.
Jeff Law [Thu, 5 Jul 2018 20:28:01 +0000 (14:28 -0600)]
Add missing '|' as wrong patch was applied.

From-SVN: r262453

6 years agodfp.m4 (enable_decimal_float): Enable for x86_64*-*-gnu* to catch x86_64 kFreeBSD...
James Clarke [Thu, 5 Jul 2018 19:23:29 +0000 (19:23 +0000)]
dfp.m4 (enable_decimal_float): Enable for x86_64*-*-gnu* to catch x86_64 kFreeBSD and Hurd.

config/
* dfp.m4 (enable_decimal_float): Enable for x86_64*-*-gnu* to
catch x86_64 kFreeBSD and Hurd.

gcc/
* configure: Regenerated.

libdecnumber/
* configure: Regenerated.

libgcc/
* configure: Regenerated.

From-SVN: r262452

6 years agolibtool.m4: Sort output of 'find' to enable deterministic builds.
Bernhard M. Wiedemann [Thu, 5 Jul 2018 19:13:45 +0000 (19:13 +0000)]
libtool.m4: Sort output of 'find' to enable deterministic builds.

        * libtool.m4: Sort output of 'find' to enable deterministic builds.
* ltmain.sh: Likewise.

From-SVN: r262451

6 years agoAdd xfail-if to some tests that fail with COW strings
Jonathan Wakely [Thu, 5 Jul 2018 17:03:14 +0000 (18:03 +0100)]
Add xfail-if to some tests that fail with COW strings

These tests fail when run with -D_GLIBCXX_USE_CXX11_ABI=0

* testsuite/21_strings/basic_string/cons/char/deduction.cc: XFAIL for
COW strings.
* testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
Likewise.
* testsuite/21_strings/basic_string/requirements/
explicit_instantiation/debug.cc: Likewise.

From-SVN: r262448

6 years agoPR libstdc++/58265 add noexcept to basic_string::assign(basic_string&&)
Jonathan Wakely [Thu, 5 Jul 2018 17:03:05 +0000 (18:03 +0100)]
PR libstdc++/58265 add noexcept to basic_string::assign(basic_string&&)

PR libstdc++/58265
* include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
(basic_string::assign(basic_string&&)): Add conditional noexcept
depending on the allocator's is_always_equal property (LWG 2063).
* testsuite/21_strings/basic_string/modifiers/assign/char/
move_assign.cc: Check for non-throwing exception specification.
* testsuite/21_strings/basic_string/modifiers/assign/wchar_t/
move_assign.cc: Likewise.

From-SVN: r262447

6 years agore PR fortran/86408 (bogus error: ABSTRACT INTERFACE must not have an assumed charact...
Paul Thomas [Thu, 5 Jul 2018 16:27:38 +0000 (16:27 +0000)]
re PR fortran/86408 (bogus error: ABSTRACT INTERFACE must not have an assumed character length result (F2003: C418))

2018-07-05  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/86408
* resolve.c.c (resolve_contained_fntype): Reference to C418 is
in F2008 and not F2003.
(resolve_function): Ditto in error message. Also, exclude
deferred character length results from the error.

2018-07-05  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/86408
* gfortran.dg/deferred_character_20.f90: New test.

From-SVN: r262445

6 years agoPR libstdc++/58265 implement LWG 2063 for COW strings
Jonathan Wakely [Thu, 5 Jul 2018 15:56:06 +0000 (16:56 +0100)]
PR libstdc++/58265 implement LWG 2063 for COW strings

For COW strings the default constructor does not allocate when
_GLIBCXX_FULLY_DYNAMIC_STRING == 0, so can be noexcept. The move
constructor and swap do not allocate when the allocators are equal, so
add conditional noexcept using allocator_traits::is_always_equal.

PR libstdc++/58265
* include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
[_GLIBCXX_FULLY_DYNAMIC_STRING==0] (basic_string::basic_string()):
Add GLIBCXX_NOEXCEPT.
(basic_string::operator=(basic_string&&)): Add _GLIBCXX_NOEXCEPT_IF
to depend on the allocator's is_always_equal property (LWG 2063).
(basic_string::swap(basic_string&)): Likewise.
* include/bits/basic_string.tcc [!_GLIBCXX_USE_CXX11_ABI]
(basic_string::swap(basic_string&)): Likewise.
* testsuite/21_strings/basic_string/allocator/char/move_assign.cc:
Check is_nothrow_move_assignable.
* testsuite/21_strings/basic_string/allocator/wchar_t/move_assign.cc:
Check is_nothrow_move_assignable.
* testsuite/21_strings/basic_string/cons/char/
noexcept_move_construct.cc: Likewise.
* testsuite/21_strings/basic_string/cons/wchar_t/
noexcept_move_construct.cc: Likewise.

From-SVN: r262443

6 years agore PR fortran/83183 (Out of memory with option -finit-derived)
Fritz Reese [Thu, 5 Jul 2018 15:39:27 +0000 (15:39 +0000)]
re PR fortran/83183 (Out of memory with option -finit-derived)

2018-07-05  Fritz Reese  <fritzoreese@gmail.com>

    gcc/fortran/ChangeLog:

PR fortran/83183
PR fortran/86325
* expr.c (class_allocatable, class_pointer, comp_allocatable,
comp_pointer): New helpers.
(component_initializer): Generate EXPR_NULL for allocatable or pointer
components. Do not generate initializers for components within BT_CLASS.
Do not assign to comp->initializer.
(gfc_generate_initializer): Use new helpers; move code to generate
EXPR_NULL for class allocatable components into component_initializer().

    gcc/testsuite/ChangeLog:

PR fortran/83183
PR fortran/86325
* gfortran.dg/init_flag_18.f90: New testcase.
* gfortran.dg/init_flag_19.f03: New testcase.

From-SVN: r262442

6 years agors6000-c.c: Map ALTIVEC_BUILTIN_VEC_UNPACKH for float argument to VSX_BUILTIN_DOUBLEH...
Carl Love [Thu, 5 Jul 2018 14:48:51 +0000 (14:48 +0000)]
rs6000-c.c: Map ALTIVEC_BUILTIN_VEC_UNPACKH for float argument to VSX_BUILTIN_DOUBLEH_V4SF.

gcc/ChangeLog:

2018-07-05  Carl Love  <cel@us.ibm.com>

* config/rs6000/rs6000-c.c: Map ALTIVEC_BUILTIN_VEC_UNPACKH for
float argument to VSX_BUILTIN_DOUBLEH_V4SF.
Map ALTIVEC_BUILTIN_VEC_UNPACKL for float argument to
VSX_BUILTIN_DOUBLEL_V4SF.

gcc/testsuite/ChangeLog:

2018-07-05  Carl Love  <cel@us.ibm.com>
* gcc.target/altivec-1-runnable.c: New test file.
* gcc.target/altivec-2-runnable.c: New test file.
* gcc.target/vsx-7.c (main2): Change expected expected instruction
for tests.

From-SVN: r262439

6 years agoPR tree-optimization/86400 - set<string>::set<char (*)[2]) constructor does not work...
Martin Sebor [Thu, 5 Jul 2018 14:36:09 +0000 (14:36 +0000)]
PR tree-optimization/86400 - set<string>::set<char (*)[2]) constructor does not work with array argument

gcc/ChangeLog:
* tree-ssa-strlen.c (maybe_set_strlen_range): Use type size rather
than its domain to compute its the upper bound of a char array.

gcc/testsuite/ChangeLog:
* gcc.dg/strlenopt-47.c: New test.
* gcc.dg/strlenopt-48.c: New test.

From-SVN: r262438

6 years agoReplace NO_IMPLICIT_EXTERN_C with SYSTEM_IMPLICIT_EXTERN_C.
Nathan Sidwell [Thu, 5 Jul 2018 13:11:44 +0000 (13:11 +0000)]
Replace NO_IMPLICIT_EXTERN_C with SYSTEM_IMPLICIT_EXTERN_C.

gcc/
Replace NO_IMPLICIT_EXTERN_C with SYSTEM_IMPLICIT_EXTERN_C.
* doc/cpp.texi: Update comment.
* doc/tm.texi: Rebuilt.
* doc/tm.texi.in (NO_IMPLICIT_EXTERN_C): Replace with ...
(SYSTEM_IMPLICIT_EXTERN_C): ... this, opposite sense.
* doc/extend.texi (Backwards Compatibility): Clarify it is system
headers affected by extern "C".
* system.h: Poison NO_IMPLICIT_EXTERN_C.
* config/alpha/alpha.h, config/arm/uclinux-elf.h,
config/bfin/elf.h, config/cris/cris.h, config/darwin.h,
config/dragonfly.h, config/freebsd.h, config/gnu-user.h,
config/i386/cygming.h, config/i386/djgpp.h, config/i386/nto.h,
config/ia64/hpux.h, config/lm32/lm32.h, config/lm32/uclinux-elf.h,
config/lynx.h, config/mips/elf.h, config/mmix/mmix.h,
config/netbsd.h, config/pa/pa-hpux.h, config/powerpcspe/sysv4.h,
config/riscv/elf.h, config/rs6000/sysv4.h, config/rtems.h,
config/s390/tpf.h, config/sh/newlib.h, config/sol2.h,
config/sparc/openbsd64.h, config/sparc/sp-elf.h,
config/sparc/sp64-elf.h, config/spu/spu.h,
config/stormy16/stormy16.h, config/v850/v850.h,
config/visium/visium.h, config/vx-common.h, config/xtensa/elf.h: Don't
define NO_IMPLICIT_EXTERN_C.
* config/rs6000/aix.h: Set SYSTEM_IMPLICIT_EXTERN_C.

gcc/c-family/
* c-lex.c (fe_file_change): Check SYSTEM_IMPLICIT_EXTERN_C not
NO_IMPLICIT_EXTERN_C.

gcc/cp/
* cp/decl.c (decls_match): Check SYSTEM_IMPLICIT_EXTERN_C not
NO_IMPLICIT_EXTERN_C.
* cp/parser.c (cp_parser_parameter_declaration_clause): Likewise.

From-SVN: r262437

6 years agoFix can_change_mode_class for big-endian on Arm
Tamar Christina [Thu, 5 Jul 2018 10:37:36 +0000 (10:37 +0000)]
Fix can_change_mode_class for big-endian on Arm

gcc/

PR target/84711
* config/arm/arm.c (arm_can_change_mode_class): Use GET_MODE_UNIT_SIZE
instead of GET_MODE_SIZE when comparing Units.

gcc/testsuite/

PR target/84711
* gcc.target/arm/big-endian-subreg.c: New.

From-SVN: r262436

6 years agoCorrect subreg no-op handling for big-endian vec_select.
Tamar Christina [Thu, 5 Jul 2018 10:35:00 +0000 (10:35 +0000)]
Correct subreg no-op handling for big-endian vec_select.

gcc/

PR target/84711
* rtlanal.c (set_noop_p): Constrain on mode change,
include hard-reg-set.h

gcc/testuite/

PR target/84711
* gcc.dg/vect/pr84711.c: New.

From-SVN: r262435

6 years agoSimplify movmem code by always doing overlapping copies when larger than 8 bytes...
Tamar Christina [Thu, 5 Jul 2018 10:31:04 +0000 (10:31 +0000)]
Simplify movmem code by always doing overlapping copies when larger than 8 bytes on AArch64.

This changes the movmem code in AArch64 that does copy for data between 4 and 7
bytes to use the smallest possible mode capable of copying the remaining bytes in one
go and then overlapping the reads if needed.

This means that if we're copying 5 bytes we would issue an SImode and QImode
load instead of two SImode loads.

This does smaller memory accesses but also gives the mid-end a chance to realise
that it can CSE the loads in certain circumstances. e.g. when you have something
like

return foo;

where foo is a struct. This would be transformed by the mid-end into SSA form as

D.XXXX = foo;

return D.XXXX;

This movmem routine will handle the first copy, but it's usually not needed,
the mid-end would do SImode and QImode stores into X0 for the 5 bytes example
but without the first copies being in the same mode, it doesn't know it doesn't
need the stores at all.

From-SVN: r262434

6 years agoRevert
Jakub Jelinek [Thu, 5 Jul 2018 09:47:05 +0000 (11:47 +0200)]
Revert
2018-07-04  Maxim Ostapenko  <m.ostapenko@samsung.com>

PR sanitizer/84250
* config/gnu-user.h (LIBASAN_EARLY_SPEC): Pass -lstdc++ for static
libasan.
* gcc.c: Do not pass LIBUBSAN_SPEC if ASan is enabled with UBSan.

* Makefile.am: Reorder libs.
* Makefile.in: Regenerate.
* asan/Makefile.am: Define DCAN_SANITIZE_UB=1, add dependancy from
libsanitizer_ubsan.la.
* asan/Makefile.in: Regenerate.
* ubsan/Makefile.am: Define new libsanitizer_ubsan.la library.
* ubsan/Makefile.in: Regenerate.

From-SVN: r262433

6 years ago[testsuite] Remove 'note:' from scan-tree-dump directives
Christophe Lyon [Thu, 5 Jul 2018 09:10:55 +0000 (09:10 +0000)]
[testsuite] Remove 'note:' from scan-tree-dump directives

2018-07-05  Christophe Lyon  <christophe.lyon@linaro.org>

* c-c++-common/unroll-1.c: Remove 'note:' in matching string.
* c-c++-common/unroll-2.c: Likewise.
* g++.dg/cdce3.C: Likewise.
* g++.dg/ext/unroll-1.C: Likewise.
* g++.dg/ext/unroll-2.C: Likewise.
* g++.dg/ext/unroll-3.C: Likewise.
* gcc.dg/cdce1.c: Likewise.
* gcc.dg/cdce2.c: Likewise.
* gcc.dg/gomp/pr68128-1.c: Likewise.
* gcc.dg/vect/pr46032.c: Likewise.
* gcc.dg/vect/vect-cond-10.c: Likewise.
* gcc.dg/vect/vect-cond-8.c: Likewise.
* gcc.dg/vect/vect-cond-9.c: Likewise.
* gcc.dg/vect/vect-mask-load-1.c: Likewise.
* gcc.dg/vect/vect-mask-loadstore-1.c: Likewise.
* gcc.target/i386/avx-cvt-2.c: Likewise.
* gcc.target/i386/avx-cvt-3.c: Likewise.
* gcc.target/i386/avx2-cvt-2.c: Likewise.
* gcc.target/i386/avx2-gather-2.c: Likewise.
* gcc.target/i386/avx2-gather-6.c: Likewise.
* gcc.target/i386/avx512f-gather-2.c: Likewise.
* gcc.target/i386/sse2-cvt-2.c: Likewise.
* gfortran.dg/directive_unroll_1.f90: Likewise.
* gfortran.dg/directive_unroll_2.f90: Likewise.
* gnat.dg/unroll2.adb: Likewise.
* gnat.dg/unroll3.adb: Likewise.

From-SVN: r262432

6 years ago[testsuite] Simplify dg-final
Tom de Vries [Thu, 5 Jul 2018 08:19:15 +0000 (08:19 +0000)]
[testsuite] Simplify dg-final

2018-07-05  Tom de Vries  <tdevries@suse.de>

* lib/gcc-dg.exp (dg-final): Simplify tcl code.

From-SVN: r262431

6 years agoFix my yesterday ChangeLog entry.
François Dumont [Thu, 5 Jul 2018 04:57:52 +0000 (04:57 +0000)]
Fix my yesterday ChangeLog entry.

From-SVN: r262429

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

From-SVN: r262428

6 years agoP0646R1 Improving the Return Value of Erase-Like Algorithms I
Jonathan Wakely [Wed, 4 Jul 2018 20:15:01 +0000 (21:15 +0100)]
P0646R1 Improving the Return Value of Erase-Like Algorithms I

In C++2a the remove, remove_if and unique members of std::list and
std::forward_list have been changed to return the number of elements
removed. This is an ABI change for the remove members and the
non-template unique members, so an abi-tag is used to give those symbols
new mangled names in C++2a mode. For the function templates the return
type is part of the mangled name so no abi-tag is needed.

* include/bits/forward_list.h (__cpp_lib_list_remove_return_type):
Define.
(forward_list::__remove_return_type): Define typedef as size_type or
void, according to __cplusplus value.
(_GLIBCXX_FWDLIST_REMOVE_RETURN_TYPE_TAG): Define macro as abi-tag or
empty, according to __cplusplus value.
(forward_list::remove, forward_list::unique): Use typedef and macro
to change return type and add abi-tag for C++2a.
(forward_list::remove_if<Pred>, forward_list::unique<BinPred>): Use
typedef to change return type for C++2a.
* include/bits/forward_list.tcc (_GLIBCXX20_ONLY): Define macro.
(forward_list::remove, forward_list::remove_if<Pred>)
(forward_list::unique<BinPred>): Return number of removed elements
for C++2a.
* include/bits/list.tcc (_GLIBCXX20_ONLY): Define macro.
(list::remove, list::unique, list::remove_if<Predicate>)
(list::unique<BinaryPredicate>): Return number of removed elements
for C++2a.
* include/bits/stl_list.h (__cpp_lib_list_remove_return_type): Define.
(list::__remove_return_type): Define typedef as size_type or
void, according to __cplusplus value.
(_GLIBCXX_LIST_REMOVE_RETURN_TYPE_TAG): Define macro as abi-tag or
empty, according to __cplusplus value.
(list::remove, list::unique): Use typedef and macro to change return
type and add abi-tag for C++2a.
(list::remove_if<Predicate>, list::unique<BinaryPredicate>): Use
typedef to change return type for C++2a.
* include/std/version (__cpp_lib_list_remove_return_type): Define.
* testsuite/23_containers/forward_list/operations/
remove_cxx20_return.cc: New.
* testsuite/23_containers/forward_list/operations/
unique_cxx20_return.cc: New.

From-SVN: r262423

6 years agore PR sanitizer/84250 (Symbol collision when using both Address and Undefined Behavio...
Maxim Ostapenko [Wed, 4 Jul 2018 19:49:06 +0000 (19:49 +0000)]
re PR sanitizer/84250 (Symbol collision when using both Address and Undefined Behavior sanitizers (-fsanitize=address,undefined))

gcc/

2018-07-04  Maxim Ostapenko  <m.ostapenko@samsung.com>

PR sanitizer/84250
* config/gnu-user.h (LIBASAN_EARLY_SPEC): Pass -lstdc++ for static
libasan.
* gcc.c: Do not pass LIBUBSAN_SPEC if ASan is enabled with UBSan.

libsanitizer/

2018-07-04  Maxim Ostapenko  <m.ostapenko@samsung.com>

PR sanitizer/84250
* Makefile.am: Reorder libs.
* Makefile.in: Regenerate.
* asan/Makefile.am: Define DCAN_SANITIZE_UB=1, add dependancy from
libsanitizer_ubsan.la.
* asan/Makefile.in: Regenerate.
* ubsan/Makefile.am: Define new libsanitizer_ubsan.la library.
* ubsan/Makefile.in: Regenerate.

From-SVN: r262421

6 years agore PR c++/86398 (is_trivially_constructible always returns true even when is_construc...
Ville Voutilainen [Wed, 4 Jul 2018 19:21:38 +0000 (22:21 +0300)]
re PR c++/86398 (is_trivially_constructible always returns true even when is_constructible returns false)

PR c++/86398

gcc/cp/

PR c++/86398
* method.c (is_trivially_xible): Return false
if is_xible_helper returns a NULL_TREE.

testsuite/

PR c++/86398
* g++.dg/ext/is_trivially_constructible1.C: Add new tests.

From-SVN: r262420

6 years agore PR tree-optimization/86274 (SEGFAULT when logging std::to_string(NAN))
Martin Sebor [Wed, 4 Jul 2018 18:58:51 +0000 (18:58 +0000)]
re PR tree-optimization/86274 (SEGFAULT when logging std::to_string(NAN))

gcc/testsuite/ChangeLog:

PR tree-optimization/86274
* gcc.dg/tree-ssa/builtin-sprintf-9.c: Fix typo.

From-SVN: r262419

6 years agoP0458R2 Checking for Existence of an Element in Associative Containers
Jonathan Wakely [Wed, 4 Jul 2018 18:16:26 +0000 (19:16 +0100)]
P0458R2 Checking for Existence of an Element in Associative Containers

* include/bits/stl_map.h (map::contains): Add for C++2a.
* include/bits/stl_multimap.h (multimap::contains): Likewise.
* include/bits/stl_multiset.h (multiset::contains): Likewise.
* include/bits/stl_set.h (set::contains): Likewise.
* include/bits/stl_tree.h (__has_is_transparent_t): Define alias.
(_Rb_tree::_M_find_tr, _Rb_tree::_M_count_tr)
(_Rb_tree::_M_lower_bound_tr, _Rb_tree::_M_upper_bound_tr)
(_Rb_tree::_M_equal_range_tr): Use __has_is_transparent_t.
* include/bits/unordered_map.h (unordered_map::contains)
(unordered_multimap::contains): Add for C++2a.
* include/bits/unordered_set.h (unordered_set::contains)
(unordered_multiset::contains): Likewise.
* testsuite/23_containers/map/operations/contains.cc: New.
* testsuite/23_containers/multimap/operations/contains.cc: New.
* testsuite/23_containers/multiset/operations/contains.cc: New.
* testsuite/23_containers/set/operations/contains.cc: New.
* testsuite/23_containers/unordered_map/operations/contains.cc: New.
* testsuite/23_containers/unordered_multimap/operations/contains.cc:
New.
* testsuite/23_containers/unordered_multiset/operations/contains.cc:
New.
* testsuite/23_containers/unordered_set/operations/contains.cc: New.

From-SVN: r262418

6 years agore PR libstdc++/86272 (__gnu_debug::string uses undefined __glibcxx_check_insert_range2)
François Dumont [Wed, 4 Jul 2018 18:13:11 +0000 (18:13 +0000)]
re PR libstdc++/86272 (__gnu_debug::string uses undefined __glibcxx_check_insert_range2)

2018-07-04  François Dumont  <fdumont@gcc.gnu.org>

PR libstdc++/86272
* include/debug/string
(__gnu_debug::basic_string<>::insert<_Ite>(const_iterator, _Ite, _Ite)):
Use __glibcxx_check_insert_range.
* 21_strings/basic_string/cons/char/1.cc: Adapt test to use
__gnu_debug::string when _GLIBCXX_DEBUG.
* 21_strings/basic_string/init-list.cc: Likewise.
* 21_strings/basic_string/modifiers/insert/char/1.cc: Likewise.
* 21_strings/basic_string/modifiers/insert/char/2.cc: Likewise.
* 21_strings/basic_string/modifiers/insert/char/83328.cc: Likewise.
* 21_strings/basic_string/types/1.cc: Likewise.

From-SVN: r262417

6 years agore PR fortran/82009 ([F08] ICE with block construct)
Jerry DeLisle [Wed, 4 Jul 2018 18:08:16 +0000 (18:08 +0000)]
re PR fortran/82009 ([F08] ICE with block construct)

2018-07-04  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

PR fortran/82009
* trans-decl.c (gfc_process_block_locals): Delete assert and set
saved_local_decls = NULL_TREE.

* gfortran.dg/block_16.f08. New test.

From-SVN: r262416

6 years agoDefine "random_device" effective target
Jonathan Wakely [Wed, 4 Jul 2018 16:56:21 +0000 (17:56 +0100)]
Define "random_device" effective target

Currently only matches targets where _GLIBCXX_USE_RANDOM_TR1 is defined,
which means /dev/random and /dev/urandom are usable.

* testsuite/25_algorithms/make_heap/complexity.cc: Require effective
target for std::random_device.
* testsuite/26_numerics/random/random_device/cons/default.cc:
Likewise.
* testsuite/experimental/algorithm/sample-2.cc: Likewise.
* testsuite/experimental/algorithm/shuffle.cc: Likewise.
* testsuite/experimental/random/randint.cc: Likewise.
* testsuite/lib/libstdc++.exp
(check_effective_target_random_device): New proc.

From-SVN: r262415

6 years agoFix std::__rotl and std::__rotr
Jonathan Wakely [Wed, 4 Jul 2018 14:31:56 +0000 (15:31 +0100)]
Fix std::__rotl and std::__rotr

2018-07-04  Jonathan Wakely  <jwakely@redhat.com>
    Jakub Jelinek  <jakub@redhat.com>

* include/std/bit (__rotl, __rotr): Fix for non-power of two sizes.

Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
From-SVN: r262414

6 years agore PR middle-end/86380 (incorrect comparison in function choose_multiplier)
Eric Botcazou [Wed, 4 Jul 2018 12:56:48 +0000 (12:56 +0000)]
re PR middle-end/86380 (incorrect comparison in function choose_multiplier)

PR middle-end/86380
* expmed.c (choose_multiplier): Fix incorrect comparison with mask.

From-SVN: r262401

6 years agoRemove spurious $HOME include from BRIG FE Makefile
Martin Jambor [Wed, 4 Jul 2018 12:08:16 +0000 (14:08 +0200)]
Remove spurious $HOME include from BRIG FE Makefile

2018-07-04  Martin Jambor  <mjambor@suse.cz>

PR hsa/86371
* Make-lang.in (BRIGINCLUDES): Remove erroneous include path in $HOME.

From-SVN: r262398

6 years agotree-vrp.c (extract_range_from_binary_expr_1): Initialze neg_*_op* variables.
Aldy Hernandez [Wed, 4 Jul 2018 09:03:35 +0000 (09:03 +0000)]
tree-vrp.c (extract_range_from_binary_expr_1): Initialze neg_*_op* variables.

       * tree-vrp.c (extract_range_from_binary_expr_1): Initialze
       neg_*_op* variables.

From-SVN: r262380

6 years agoPR libstdc++/86398 fix std::is_trivially_constructible regression
Jonathan Wakely [Wed, 4 Jul 2018 09:03:18 +0000 (10:03 +0100)]
PR libstdc++/86398 fix std::is_trivially_constructible regression

The intrinsic doesn't check for allowed conversions between scalar
types, so restore the std::is_constructible check.

Also make some trivial whitespace changes.

PR libstdc++/86398
* include/std/type_traits (is_trivially_constructible): Check
is_constructible before __is_trivially_constructible.
* testsuite/20_util/is_trivially_constructible/value.cc: Add more
tests, including negative cases.
* testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Use
zero for dg-error lineno.
* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
Likewise.

From-SVN: r262379

6 years agoOptimize std::rotl and std::rotr, add test for std::popcount
Jonathan Wakely [Wed, 4 Jul 2018 08:07:23 +0000 (09:07 +0100)]
Optimize std::rotl and std::rotr, add test for std::popcount

* include/std/bit (__rotl, __rotr): Avoid branch.
(_If_is_unsigned_integer): Use remove_cv_t.
* testsuite/26_numerics/bit/bitops.count/popcount.cc: New.

From-SVN: r262378

6 years agossa-dom-thread-7.c: Adjust test because aarch64 has a slightly different IL that...
Aldy Hernandez [Wed, 4 Jul 2018 08:04:55 +0000 (08:04 +0000)]
ssa-dom-thread-7.c: Adjust test because aarch64 has a slightly different IL that provides more...

* gcc.dg/tree-ssa/ssa-dom-thread-7.c: Adjust test because aarch64
has a slightly different IL that provides more threading
opportunities.

From-SVN: r262377

6 years agoFix bootstrap on ia64 with old GCC version.
Martin Liska [Wed, 4 Jul 2018 07:53:05 +0000 (09:53 +0200)]
Fix bootstrap on ia64 with old GCC version.

2018-07-04  Martin Liska  <mliska@suse.cz>

* tree-switch-conversion.c: Define
        max_ratio_for_speed and max_ratio_for_size constants.

From-SVN: r262376