gcc.git
4 years agocomment tweak
Jason Merrill [Thu, 19 Dec 2019 14:32:43 +0000 (09:32 -0500)]
comment tweak

From-SVN: r279579

4 years agoPR c++/52320 - EH cleanups for partially constructed arrays.
Jason Merrill [Thu, 19 Dec 2019 14:07:22 +0000 (09:07 -0500)]
PR c++/52320 - EH cleanups for partially constructed arrays.

This testcase wasn't fixed by the 66139 patch; split_nonconstant_init_1 was
failing to add a cleanup for an array member of a class (e.g. e1) that will
run if initializing a later member (e.g. e2) throws.

* typeck2.c (split_nonconstant_init_1): Add nested parm.
Add cleanup for whole array if true.

From-SVN: r279577

4 years agoPR c++/66139 - EH cleanups for partially constructed aggregates.
Jason Merrill [Thu, 19 Dec 2019 14:06:45 +0000 (09:06 -0500)]
PR c++/66139 - EH cleanups for partially constructed aggregates.

There were several overlapping PRs about failure to clean up fully
constructed subobjects when an exception is thrown during aggregate
initialization of a temporary.  I fixed this for non-temporaries in the
context of 57510, but that fix didn't handle temporaries.  So this patch
does split_nonconstant_init at gimplification time, which is much smaller
than alternatives I tried.

PR c++/57510
* cp-gimplify.c (cp_gimplify_init_expr): Use split_nonconstant_init.
* typeck2.c (split_nonconstant_init): Handle non-variable dest.
(split_nonconstant_init_1): Clear TREE_SIDE_EFFECTS.
* tree.c (is_local_temp): New.

From-SVN: r279576

4 years agoAdd changelog for commit r279573 (added myself to write-after-approval)
Stam Markianos-Wright [Thu, 19 Dec 2019 14:03:16 +0000 (14:03 +0000)]
Add changelog for commit r279573 (added myself to write-after-approval)

2019-12-19  Stam Markianos-Wright  <stam.markianos-wright@arm.com>

* MAINTAINERS (write_after_approval): Add myself.

From-SVN: r279575

4 years agoImplement sub-dword add/sub on amdgcn
Andrew Stubbs [Thu, 19 Dec 2019 13:59:05 +0000 (13:59 +0000)]
Implement sub-dword add/sub on amdgcn

2019-12-19  Andrew Stubbs  <ams@codesourcery.com>

gcc/
* config/gcn/gcn-valu.md (addv64si3<exec_clobber>): Rename to ...
(add<mode>3<exec_clobber>): ... this, and use VEC_ALL1REG_INT_MODE.
(addv64si3_dup<exec_clobber>): Rename to ...
(add<mode>3_dup<exec_clobber>): ... this, and use VEC_ALL1REG_INT_MODE.
(subv64si3<exec_clobber>): Rename to ...
(sub<mode>3<exec_clobber>): ... this, and use VEC_ALL1REG_INT_MODE.

From-SVN: r279574

4 years agoAdd myself to MAINTAINERS
Stam Markianos-Wright [Thu, 19 Dec 2019 13:39:52 +0000 (13:39 +0000)]
Add myself to MAINTAINERS

From-SVN: r279573

4 years ago[AArch64] Reject invalid subregs involving partial SVE modes
Richard Sandiford [Thu, 19 Dec 2019 13:36:16 +0000 (13:36 +0000)]
[AArch64] Reject invalid subregs involving partial SVE modes

When adding partial SVE modes, I'd remembered to handle reloads
in a similar way to full big-endian SVE vectors, but forgot the
just-as-important mode-change rules.

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

gcc/
* config/aarch64/aarch64.c (aarch64_can_change_mode_class):
Don't allow changes between partial SVE modes and other kinds
of mode.  Don't allow changes between two partial SVE modes
if they have different container or element sizes.

gcc/testsuite/
* gcc.target/aarch64/sve/mixed_size_8.c: New test.

From-SVN: r279572

4 years ago[AArch64] Handle arguments and return types with partial SVE modes
Richard Sandiford [Thu, 19 Dec 2019 13:25:22 +0000 (13:25 +0000)]
[AArch64] Handle arguments and return types with partial SVE modes

Partial SVE modes can be picked up and used by the vector_size(N)
attribute.[*] This means that we need to cope with arguments and return
values with partial SVE modes, which previously triggered asserts like:

  /* Generic vectors that map to SVE modes with -msve-vector-bits=N are
     passed by reference, not by value.  */
  gcc_assert (!aarch64_sve_mode_p (mode));

The ABI for these types is fixed from pre-SVE days, and must in any case
be the same for all -msve-vector-bits=N values.  All we need to do is
ensure that the vectors are passed and returned in the traditional way.

[*] Advanced SIMD always wins for 64-bit and 128-bit vectors though.

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

gcc/
* config/aarch64/aarch64.c (aarch64_function_value_1): New function,
split out from...
(aarch64_function_value): ...here.  Handle partial SVE modes by
pretending that they have the associated/traditional integer mode,
then wrap the result in the real mode.
(aarch64_layout_arg): Take an orig_mode argument and pass it to
aarch64_function_arg_alignment.  Handle partial SVE modes analogously
to aarch64_function_value.
(aarch64_function_arg): Update call accordingly.
(aarch64_function_arg_advance): Likewise.

gcc/testsuite/
* gcc.target/aarch64/sve/pcs/gnu_vectors_3.c: New test.

From-SVN: r279571

4 years agoRevert accidental commit
Richard Sandiford [Thu, 19 Dec 2019 13:24:04 +0000 (13:24 +0000)]
Revert accidental commit

From-SVN: r279570

4 years agoDon't mangle attributes that have a space in their name
Richard Sandiford [Thu, 19 Dec 2019 13:21:54 +0000 (13:21 +0000)]
Don't mangle attributes that have a space in their name

The SVE port needs to maintain a different type identity for
GNU vectors and "SVE vectors" even during LTO, since the types
use different ABIs.  The easiest way of doing that seemed to be
to use type attributes.  However, these type attributes shouldn't
be user-facing; they're just a convenient way of representing the
types internally in GCC.

There are already several internal-only attributes, such as "fn spec"
and "omp declare simd".  They're distinguished from normal user-facing
attributes by having a space in their name, which means that it isn't
possible to write them directly in C or C++.

Taking the same approach mostly works well for SVE.  The only snag
I've hit so far is that the new attribute needs to (and only exists to)
affect type identity.  This means that it would normally get included
in mangled names, to distinguish it from types without the attribute.

However, the SVE ABI specifies a separate mangling for SVE vector types,
rather than using an attribute mangling + a normal vector mangling.
So we need some way of suppressing the attribute mangling for this case.

There are currently no other target-independent or target-specific
internal-only attributes that affect type identity, so this patch goes
for the simplest fix of skipping mangling for attributes whose names
contain a space.  Other options I thought about were:

(1) Also make sure that targetm.mangled_type returns nonnull.

(2) Check directly for the target-specific name.

(3) Add a new target hook.

(4) Add new information to attribute_spec.  This would be very invasive
    at this stage, but maybe we should consider replacing all the boolean
    fields with flags?  That should make the tables slightly easier to
    read and would make adding new flags much simpler in future.

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

gcc/cp/
* mangle.c (write_CV_qualifiers_for_type): Don't mangle attributes
that contain a space.

From-SVN: r279569

4 years agore PR fortran/92977 (ICE in gfc_trans_omp_atomic, at fortran/trans-openmp.c:3526)
Jakub Jelinek [Thu, 19 Dec 2019 10:08:06 +0000 (11:08 +0100)]
re PR fortran/92977 (ICE in gfc_trans_omp_atomic, at fortran/trans-openmp.c:3526)

PR fortran/92977
* frontend-passes.c (call_external_blas): Use || instead of |.

From-SVN: r279567

4 years agoFix symver attribute with LTO
Jan Hubicka [Thu, 19 Dec 2019 10:03:48 +0000 (11:03 +0100)]
Fix symver attribute with LTO

* cgraph.c (cgraph_node_cannot_be_local_p_1): Prevent targets of
symver attributes to be localized.
* ipa-visibility.c (cgraph_externally_visible_p,
varpool_node::externally_visible_p): Likewise.
* symtab.c (symtab_node::verify_base): Check visibility of symbol
versions.

* lto-common.c (read_cgraph_and_symbols): Work around binutils
PR25424

Co-Authored-By: Xi Ruoyao <xry111@mengyan1223.wang>
From-SVN: r279566

4 years agoipa: duplicate ipa_size_summary for cloned nodes
Jan Hubicka [Thu, 19 Dec 2019 08:20:09 +0000 (09:20 +0100)]
ipa: duplicate ipa_size_summary for cloned nodes

* ipa-fnsummary.h (ipa_size_summary): Remove copy consturctor.
(ipa_size_summary_t): Add duplicate method; move to heap.
* ipa-fnsumary.c (ipa_fn_summary_alloc): Fix allocation.

From-SVN: r279563

4 years agoHandle aggregate pass-through for self-recursive call (PR ipa/92794)
Feng Xue [Thu, 19 Dec 2019 02:54:40 +0000 (02:54 +0000)]
Handle aggregate pass-through for self-recursive call (PR ipa/92794)

2019-12-19  Feng Xue  <fxue@os.amperecomputing.com>

        PR ipa/92794
        * ipa-cp.c (self_recursive_agg_pass_through_p): New function.
        (intersect_with_plats): Use error_mark_node as place holder
        when aggregate jump function is simple pass-through for
        self-recursive call.
        (intersect_with_agg_replacements): Likewise.
        (intersect_aggregates_with_edge): Likewise.
        (find_aggregate_values_for_callers_subset): Likewise.

2019-12-19  Feng Xue  <fxue@os.amperecomputing.com>

        PR ipa/92794
        * gcc.dg/ipa/92794.c: New test.

From-SVN: r279561

4 years agoDaily bump.
GCC Administrator [Thu, 19 Dec 2019 00:16:15 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r279560

4 years agoPR c++/91165 follow-on tweak
Jason Merrill [Thu, 19 Dec 2019 00:10:47 +0000 (19:10 -0500)]
PR c++/91165 follow-on tweak

I talked in the PR about possibly stripping the location from the args in
the hash table, since if we use the cache the locations would be wrong, but
didn't actually do anything about that.  Then I noticed that there's already
unshare_expr_without_location...

* constexpr.c (cxx_eval_call_expression): Use
unshare_expr_without_location.

From-SVN: r279557

4 years agoAdd diagnostic_metadata and CWE support
David Malcolm [Wed, 18 Dec 2019 23:58:49 +0000 (23:58 +0000)]
Add diagnostic_metadata and CWE support

This patch adds support for associating a diagnostic message with an
optional diagnostic_metadata object, so that plugins can add extra data
to their diagnostics (e.g. mapping a diagnostic to a taxonomy or coding
standard such as from CERT or MISRA).

Currently this only supports associating a CWE identifier with a
diagnostic (which is what I'm using for the warnings in the analyzer
patch kit), but adding a diagnostic_metadata class allows for future
growth in this area without an explosion of further "warning_at"
overloads for all of the different kinds of custom data that a plugin
might want to add.

This version of the patch renames the overly-general
-fdiagnostics-show-metadata to -fdiagnostics-show-cwe and adds test
coverage for it via a plugin.

It also adds a note to the documentation that no GCC diagnostics
currently use this; it's a feature for plugins (and, at some point,
I hope, the analyzer).

gcc/ChangeLog:
* common.opt (fdiagnostics-show-cwe): Add.
* diagnostic-core.h (class diagnostic_metadata): New forward decl.
(warning_at): Add overload taking a const diagnostic_metadata &.
(emit_diagnostic_valist): Add overload taking a
const diagnostic_metadata *.
* diagnostic-format-json.cc: Include "diagnostic-metadata.h".
(json_from_metadata): New function.
(json_end_diagnostic): Call it to add "metadata" child for
diagnostics with metadata.
(diagnostic_output_format_init): Clear context->show_cwe.
* diagnostic-metadata.h: New file.
* diagnostic.c: Include "diagnostic-metadata.h".
(diagnostic_impl): Add const diagnostic_metadata * param.
(diagnostic_n_impl): Likewise.
(diagnostic_initialize): Initialize context->show_cwe.
(diagnostic_set_info_translated): Initialize diagnostic->metadata.
(get_cwe_url): New function.
(print_any_cwe): New function.
(diagnostic_report_diagnostic): Call print_any_cwe if the
diagnostic has non-NULL metadata.
(emit_diagnostic): Pass NULL as the metadata in the call to
diagnostic_impl.
(emit_diagnostic_valist): Likewise.
(emit_diagnostic_valist): New overload taking a
const diagnostic_metadata *.
(inform): Pass NULL as the metadata in the call to
diagnostic_impl.
(inform_n): Likewise for diagnostic_n_impl.
(warning): Likewise.
(warning_at): Likewise.  Add overload that takes a
const diagnostic_metadata &.
(warning_n): Pass NULL as the metadata in the call to
diagnostic_n_impl.
(pedwarn): Likewise for diagnostic_impl.
(permerror): Likewise.
(error): Likewise.
(error_n): Likewise.
(error_at): Likewise.
(sorry): Likewise.
(sorry_at): Likewise.
(fatal_error): Likewise.
(internal_error): Likewise.
(internal_error_no_backtrace): Likewise.
* diagnostic.h (diagnostic_info::metadata): New field.
(diagnostic_context::show_cwe): New field.
* doc/invoke.texi (-fno-diagnostics-show-cwe): New option.
* opts.c (common_handle_option): Handle OPT_fdiagnostics_show_cwe.
* toplev.c (general_init): Initialize global_dc->show_cwe.

gcc/testsuite/ChangeLog:
* gcc.dg/plugin/diagnostic-test-metadata.c: New test.
* gcc.dg/plugin/diagnostic_plugin_test_metadata.c: New test plugin.
* gcc.dg/plugin/plugin.exp (plugin_test_list): Add them.

From-SVN: r279556

4 years agore PR fortran/92977 (ICE in gfc_trans_omp_atomic, at fortran/trans-openmp.c:3526)
Jakub Jelinek [Wed, 18 Dec 2019 23:33:54 +0000 (00:33 +0100)]
re PR fortran/92977 (ICE in gfc_trans_omp_atomic, at fortran/trans-openmp.c:3526)

PR fortran/92977
* frontend-passes.c (in_omp_atomic): New variable.
(cfe_expr_0, matmul_to_var_expr, matmul_temp_args,
inline_matmul_assign, call_external_blas): Don't optimize in
EXEC_OMP_ATOMIC.
(optimize_namespace): Clear in_omp_atomic.
(gfc_code_walker): Set in_omp_atomic for EXEC_OMP_ATOMIC, save/restore
it around.

* gfortran.dg/gomp/pr92977.f90: New test.

From-SVN: r279554

4 years agore PR middle-end/86416 ([OpenMP] Offloading - better lto1 error message if mode not...
Jakub Jelinek [Wed, 18 Dec 2019 23:27:28 +0000 (00:27 +0100)]
re PR middle-end/86416 ([OpenMP] Offloading - better lto1 error message if mode not supported on offloading target)

PR middle-end/86416
* testsuite/libgomp.c/pr86416-1.c (main): Use L suffixes rather than
q or none.
* testsuite/libgomp.c/pr86416-2.c (main): Use Q suffixes rather than
L or none.

From-SVN: r279552

4 years agoAdd OpenACC 2.6's no_create
Julian Brown [Wed, 18 Dec 2019 23:10:08 +0000 (23:10 +0000)]
Add OpenACC 2.6's no_create

The clause makes any device code use the local memory address for each
of the variables specified unless the given variable is already present
on the current device.

2019-12-19  Julian Brown  <julian@codesourcery.com>
            Maciej W. Rozycki  <macro@codesourcery.com>
            Tobias Burnus  <tobias@codesourcery.com>
            Thomas Schwinge  <thomas@codesourcery.com>

        gcc/
        * omp-low.c (lower_omp_target): Support GOMP_MAP_NO_ALLOC.
        * tree-pretty-print.c (dump_omp_clause): Likewise.

        gcc/c-family/
        * c-pragma.h (pragma_omp_clause): Add
        PRAGMA_OACC_CLAUSE_NO_CREATE.

        gcc/c/
        * c-parser.c (c_parser_omp_clause_name): Support no_create.
        (c_parser_oacc_data_clause): Likewise.
        (c_parser_oacc_all_clauses): Likewise.
        (OACC_DATA_CLAUSE_MASK, OACC_KERNELS_CLAUSE_MASK)
        (OACC_PARALLEL_CLAUSE_MASK, OACC_SERIAL_CLAUSE_MASK): Add
        PRAGMA_OACC_CLAUSE_NO_CREATE.
        * c-typeck.c (handle_omp_array_sections): Support
        GOMP_MAP_NO_ALLOC.

        gcc/cp/
        * parser.c (cp_parser_omp_clause_name): Support no_create.
        (cp_parser_oacc_data_clause): Likewise.
        (cp_parser_oacc_all_clauses): Likewise.
        (OACC_DATA_CLAUSE_MASK, OACC_KERNELS_CLAUSE_MASK)
        (OACC_PARALLEL_CLAUSE_MASK): Add PRAGMA_OACC_CLAUSE_NO_CREATE.
        * semantics.c (handle_omp_array_sections): Support no_create.

        gcc/fortran/
        * gfortran.h (gfc_omp_map_op): Add OMP_MAP_NO_ALLOC.
        * openmp.c (omp_mask2): Add OMP_CLAUSE_NO_CREATE.
        (gfc_match_omp_clauses): Support no_create.
        (OACC_PARALLEL_CLAUSES, OACC_KERNELS_CLAUSES)
        (OACC_DATA_CLAUSES): Add OMP_CLAUSE_NO_CREATE.
        * trans-openmp.c (gfc_trans_omp_clauses_1): Support
        OMP_MAP_NO_ALLOC.

        gcc/testsuite/
        * gfortran.dg/goacc/common-block-1.f90: Add no_create-clause tests.
        * gfortran.dg/goacc/common-block-1.f90: Likewise.
        * gfortran.dg/goacc/data-clauses.f95: Likewise.
        * gfortran.dg/goacc/data-tree.f95: Likewise.
        * gfortran.dg/goacc/kernels-tree.f95: Likewise.
        * gfortran.dg/goacc/parallel-tree.f95: Likewise.

        include/
        * gomp-constants.h (gomp_map_kind): Support GOMP_MAP_NO_ALLOC.

        libgomp/
        * target.c (gomp_map_vars_async): Support GOMP_MAP_NO_ALLOC.
        * testsuite/libgomp.oacc-c-c++-common/no_create-1.c: New test.
        * testsuite/libgomp.oacc-c-c++-common/no_create-2.c: New test.
        * testsuite/libgomp.oacc-c-c++-common/no_create-3.c: New test.
        * testsuite/libgomp.oacc-c-c++-common/no_create-4.c: New test.
        * testsuite/libgomp.oacc-c-c++-common/no_create-5.c: New test.
        * testsuite/libgomp.oacc-fortran/no_create-1.f90: New test.
        * testsuite/libgomp.oacc-fortran/no_create-2.f90: New test.
        * testsuite/libgomp.oacc-fortran/no_create-3.F90: New test.

Reviewed-by: Thomas Schwinge <thomas@codesourcery.com>
Co-Authored-By: Maciej W. Rozycki <macro@codesourcery.com>
Co-Authored-By: Thomas Schwinge <thomas@codesourcery.com>
Co-Authored-By: Tobias Burnus <tobias@codesourcery.com>
From-SVN: r279551

4 years ago* ira.c (ira): Use simple LRA algorithm when not optimizing.
Eric Botcazou [Wed, 18 Dec 2019 23:03:23 +0000 (23:03 +0000)]
* ira.c (ira): Use simple LRA algorithm when not optimizing.

From-SVN: r279550

4 years agotypeck.c (cxx_sizeof_or_alignof_type): Add location_t parameter and use it throughout.
Paolo Carlini [Wed, 18 Dec 2019 19:23:01 +0000 (19:23 +0000)]
typeck.c (cxx_sizeof_or_alignof_type): Add location_t parameter and use it throughout.

/gcc/cp
2019-12-18  Paolo Carlini  <paolo.carlini@oracle.com>

* typeck.c (cxx_sizeof_or_alignof_type): Add location_t parameter
and use it throughout.
(cxx_sizeof_expr): Likewise.
(cxx_alignof_expr): Likewise.
(cxx_sizeof_or_alignof_expr): Likewise.
(cxx_alignas_expr): Update call.
* decl.c (fold_sizeof_expr): Likewise.
* pt.c (tsubst_copy): Likewise.
(tsubst_copy_and_build): Likewise.
* except.c (build_throw): Add location_t parameter and use it.
(expand_end_catch_block): Update call.
* parser.c (cp_parser_unary_expression): Update
cxx_sizeof_or_alignof_type and cxx_sizeof_or_alignof_expr calls,
pass the compound location.
(cp_parser_throw_expression): Likewise pass the combined location
to build_throw.
* cp-tree.h: Update declarations.

* semantics.c (finish_handler_parms): Use DECL_SOURCE_LOCATION.
* decl2.c (check_classfn): Likewise.

* except.c (is_admissible_throw_operand_or_catch_parameter):
Exploit cp_expr_loc_or_input_loc in one place.

* except.c (create_try_catch_expr): Remove, unused.

/libcc1
2019-12-18  Paolo Carlini  <paolo.carlini@oracle.com>

* libcp1plugin.cc (plugin_build_unary_expr): Update build_throw
and cxx_sizeof_or_alignof_expr calls.
(plugin_build_unary_type_expr): Likewise for
cxx_sizeof_or_alignof_type.

/gcc/testsuite
2019-12-18  Paolo Carlini  <paolo.carlini@oracle.com>

* g++.dg/diagnostic/alignof2.C: New.
* g++.dg/diagnostic/alignof3.C: Likewise.
* g++.dg/diagnostic/incomplete-type-1.C: Likewise.
* g++.dg/warn/Wcatch-value-3b.C: Likewise.
* g++.dg/cpp0x/alignof3.C: Check location(s) too.
* g++.dg/cpp1z/decomp-bitfield1.C: Likewise.
* g++.dg/cpp1z/has-unique-obj-representations2.C: Likewise.
* g++.dg/expr/sizeof3.C: Likewise.
* g++.dg/ext/flexary6.C: Likewise.
* g++.dg/ext/vla4.C: Likewise.
* g++.dg/template/sizeof11.C: Likewise.
* g++.dg/warn/Wcatch-value-1.C: Likewise.
* g++.dg/warn/Wcatch-value-2.C: Likewise.
* g++.dg/warn/Wcatch-value-3.C: Likewise.
* g++.old-deja/g++.brendan/sizeof1.C: Likewise.
* g++.old-deja/g++.brendan/sizeof3.C: Likewise.
* g++.old-deja/g++.brendan/sizeof4.C: Likewise.
* g++.old-deja/g++.eh/ctor1.C: Likewise.
* g++.old-deja/g++.jason/ambig1.C: Likewise.
* g++.old-deja/g++.other/sizeof4.C: Likewise.

From-SVN: r279543

4 years agoFix POWER dfp test case target tests.
Peter Bergner [Wed, 18 Dec 2019 18:46:05 +0000 (18:46 +0000)]
Fix POWER dfp test case target tests.

PR bootstrap/92661
* gcc.target/powerpc/pr92661.c: New test.
* gcc.target/powerpc/dfp-dd.c: Add dg-require-effective-target hard_dfp.
Remove unneeded powerpc_fprs test.
* gcc.target/powerpc/dfp-td.c: Likewise.
* gcc.target/powerpc/dfp-dd-2.c: Add dg-require-effective-target dfp.
* gcc.target/powerpc/dfp-td-2.c: Likewise.
* gcc.target/powerpc/dfp-td-3.c: Likewise.
* gcc.target/powerpc/dfp/dfp.exp: Remove rs6000-*-* and
powerpc*-*-darwin* target tests.  Add check_effective_target_dfp test.
* gcc.target/powerpc/dfp/dtstsfi-0.c: Remove unneeded target test.
Remove unneeded dg-skip-if.
* gcc.target/powerpc/dfp/dtstsfi-1.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-10.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-11.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-12.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-13.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-14.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-15.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-16.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-17.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-18.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-19.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-2.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-20.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-21.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-22.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-23.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-24.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-25.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-26.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-27.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-28.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-29.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-3.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-30.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-31.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-32.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-33.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-34.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-35.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-36.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-37.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-38.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-39.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-4.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-40.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-41.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-42.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-43.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-44.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-45.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-46.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-47.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-48.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-49.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-5.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-50.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-51.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-52.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-53.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-54.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-55.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-56.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-57.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-58.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-59.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-6.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-60.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-61.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-62.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-63.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-64.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-65.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-66.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-67.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-68.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-69.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-7.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-70.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-71.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-72.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-73.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-74.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-75.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-76.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-77.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-78.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-79.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-8.c: Likewise.
* gcc.target/powerpc/dfp/dtstsfi-9.c: Likewise.

From-SVN: r279542

4 years agoDrop unused member from cpp_string_location_reader (PR preprocessor/92982)
David Malcolm [Wed, 18 Dec 2019 17:26:01 +0000 (17:26 +0000)]
Drop unused member from cpp_string_location_reader (PR preprocessor/92982)

libcpp/ChangeLog:
PR preprocessor/92982
* charset.c
(cpp_string_location_reader::cpp_string_location_reader): Delete
initialization of m_line_table.
* include/cpplib.h (cpp_string_location_reader::m_line_table):
Delete unused member.

From-SVN: r279541

4 years ago[OpenACC] Refactor 'goacc_enter_data' so that it can be called from 'goacc_insert_poi...
Thomas Schwinge [Wed, 18 Dec 2019 17:02:37 +0000 (18:02 +0100)]
[OpenACC] Refactor 'goacc_enter_data' so that it can be called from 'goacc_insert_pointer', "present" case, and simplify

No functional changes.

libgomp/
* oacc-mem.c (goacc_enter_data): Refactor, so that it can be
called...
(goacc_insert_pointer): ... from here, "present" case.
(goacc_insert_pointer): Inline function into...
(GOACC_enter_exit_data): ... here, and simplify.

From-SVN: r279540

4 years ago[OpenACC] Refactor 'goacc_enter_data' so that it can be called from 'goacc_insert_poi...
Thomas Schwinge [Wed, 18 Dec 2019 17:02:27 +0000 (18:02 +0100)]
[OpenACC] Refactor 'goacc_enter_data' so that it can be called from 'goacc_insert_pointer', "not present" case

No functional changes.

libgomp/
* oacc-mem.c (goacc_enter_data): Refactor, so that it can be
called...
(goacc_insert_pointer): ... from here, "not present" case.

From-SVN: r279539

4 years ago[OpenACC] Refactor 'goacc_remove_pointer' interface
Thomas Schwinge [Wed, 18 Dec 2019 17:02:18 +0000 (18:02 +0100)]
[OpenACC] Refactor 'goacc_remove_pointer' interface

No functional changes.

libgomp/
* oacc-mem.c (goacc_remove_pointer): Refactor interface.  Adjust
all users.

From-SVN: r279538

4 years ago[OpenACC] Refactor 'GOACC_enter_exit_data' to call 'goacc_enter_data', 'goacc_exit_data'
Thomas Schwinge [Wed, 18 Dec 2019 17:02:10 +0000 (18:02 +0100)]
[OpenACC] Refactor 'GOACC_enter_exit_data' to call 'goacc_enter_data', 'goacc_exit_data'

No functional changes.

libgomp/
* oacc-mem.c (GOACC_enter_exit_data): Refactor code to call
'goacc_enter_data', 'goacc_exit_data'.

From-SVN: r279537

4 years ago[OpenACC] Refactor 'delete_copyout' into 'goacc_exit_data'
Thomas Schwinge [Wed, 18 Dec 2019 17:02:00 +0000 (18:02 +0100)]
[OpenACC] Refactor 'delete_copyout' into 'goacc_exit_data'

Change 'FLAG_COPYOUT', 'FLAG_FINALIZE' into the usual map kind.

No functional changes.

libgomp/
* oacc-mem.c (delete_copyout): Refactor into...
(goacc_exit_data): ... this.  Adjust all users.

From-SVN: r279536

4 years ago[OpenACC] Refactor 'present_create_copy' into 'goacc_enter_data'
Thomas Schwinge [Wed, 18 Dec 2019 17:01:51 +0000 (18:01 +0100)]
[OpenACC] Refactor 'present_create_copy' into 'goacc_enter_data'

Every caller passes in 'FLAG_PRESENT', 'FLAG_CREATE'.  Change the remaining
'FLAG_COPY' into the usual map kind.

No functional changes.

libgomp/
* oacc-mem.c (present_create_copy): Refactor into...
(goacc_enter_data): ... this.  Adjust all users.

From-SVN: r279535

4 years agoAssert in 'libgomp/target.c:gomp_unmap_vars_internal' that we're not unmapping 'tgt...
Thomas Schwinge [Wed, 18 Dec 2019 17:01:33 +0000 (18:01 +0100)]
Assert in 'libgomp/target.c:gomp_unmap_vars_internal' that we're not unmapping 'tgt' while it's still in use

libgomp/
* target.c (gomp_unmap_vars_internal): Add a safeguard to
'gomp_remove_var'.

From-SVN: r279534

4 years ago[OpenACC] In 'libgomp/target.c:gomp_to_device_kind_p', handle 'GOMP_MAP_FORCE_FROM...
Thomas Schwinge [Wed, 18 Dec 2019 17:01:22 +0000 (18:01 +0100)]
[OpenACC] In 'libgomp/target.c:gomp_to_device_kind_p', handle 'GOMP_MAP_FORCE_FROM' like 'GOMP_MAP_FROM'

Fix oversight from r254194 "Coalesce host to device transfers in libgomp".

libgomp/
* target.c (gomp_to_device_kind_p): Handle 'GOMP_MAP_FORCE_FROM'
like 'GOMP_MAP_FROM'.

From-SVN: r279533

4 years ago[PR92726, PR92970, PR92984] [OpenACC] Clarify 'acc_delete' etc. for 'NULL'-in, non...
Thomas Schwinge [Wed, 18 Dec 2019 17:01:11 +0000 (18:01 +0100)]
[PR92726, PR92970, PR92984] [OpenACC] Clarify 'acc_delete' etc. for 'NULL'-in, non-present data, or size zero

PR92970 "OpenACC 2.5: 'acc_delete' etc. on non-present data is a no-op" is an
actual bug fix, and the other ones are fall-out, currently undefined behavior.

libgomp/
PR libgomp/92726
PR libgomp/92970
PR libgomp/92984
* oacc-mem.c (delete_copyout): No-op behavior if 'lookup_host'
fails.
(GOACC_enter_exit_data): Simplify accordingly.
* testsuite/libgomp.oacc-c-c++-common/pr92970-1.c: New file,
subsuming...
* testsuite/libgomp.oacc-c-c++-common/lib-17.c: ... this file...
* testsuite/libgomp.oacc-c-c++-common/lib-18.c: ..., and this
file.
* testsuite/libgomp.oacc-c-c++-common/pr92984-1.c: New file,
subsuming...
* testsuite/libgomp.oacc-c-c++-common/lib-21.c: ... this file...
* testsuite/libgomp.oacc-c-c++-common/lib-29.c: ..., and this
file.
* testsuite/libgomp.oacc-c-c++-common/pr92726-1.c: New file,
subsuming...
* testsuite/libgomp.oacc-c-c++-common/lib-28.c: ... this file.

From-SVN: r279532

4 years ago[OpenACC] Elaborate/simplify 'exit data' 'finalize' handling
Thomas Schwinge [Wed, 18 Dec 2019 17:00:51 +0000 (18:00 +0100)]
[OpenACC] Elaborate/simplify 'exit data' 'finalize' handling

No functional changes.

gcc/
* gimplify.c (gimplify_omp_target_update): Elaborate 'exit data'
'finalize' handling.
gcc/testsuite/
* c-c++-common/goacc/finalize-1.c: Extend.
* gfortran.dg/goacc/finalize-1.f: Likewise.
libgomp/
* oacc-mem.c (GOACC_enter_exit_data): Simplify 'exit data'
'finalize' handling.

From-SVN: r279531

4 years ago[PR92848] [OpenACC] Use 'GOMP_MAP_VARS_ENTER_DATA' for dynamic data lifetimes
Thomas Schwinge [Wed, 18 Dec 2019 17:00:39 +0000 (18:00 +0100)]
[PR92848] [OpenACC] Use 'GOMP_MAP_VARS_ENTER_DATA' for dynamic data lifetimes

libgomp/
PR libgomp/92848
* oacc-mem.c (acc_map_data, present_create_copy)
(goacc_insert_pointer): Use 'GOMP_MAP_VARS_ENTER_DATA'.
(acc_unmap_data, delete_copyout, goacc_remove_pointer): Adjust.
* testsuite/libgomp.oacc-c-c++-common/lib-50.c: Remove.
* testsuite/libgomp.oacc-c-c++-common/pr92848-1-d-a.c: New file
* testsuite/libgomp.oacc-c-c++-common/pr92848-1-d-p.c: Likewise.
* testsuite/libgomp.oacc-c-c++-common/pr92848-1-r-a.c: Likewise.
* testsuite/libgomp.oacc-c-c++-common/pr92848-1-r-p.c: Likewise.
* testsuite/libgomp.oacc-c-c++-common/subset-subarray-mappings-1-r-p.c:
Remove "XFAIL"s.

From-SVN: r279530

4 years agoMake 'libgomp/target.c:gomp_unmap_tgt' 'static' again
Thomas Schwinge [Wed, 18 Dec 2019 17:00:28 +0000 (18:00 +0100)]
Make 'libgomp/target.c:gomp_unmap_tgt' 'static' again

This got changed to 'attribute_hidden' in r271128, but it's not actually used
outside of 'libgomp/target.c'.

libgomp/
* target.c (gomp_unmap_tgt): Make it 'static'.
* libgomp.h (gomp_unmap_tgt): Remove.

From-SVN: r279529

4 years agoPR 86416 – improve lto1 diagnostic if a mode does not exist
Tobias Burnus [Wed, 18 Dec 2019 16:51:08 +0000 (17:51 +0100)]
PR 86416 – improve lto1 diagnostic if a mode does not exist

        PR middle-end/86416
        *  Makefile.in (CFLAGS-lto-streamer-in.o): Pass target_noncanonical on.
        * lto-streamer-in.c (lto_input_mode_table): Improve unsupported-mode
        diagnostic.

        PR middle-end/86416
        * testsuite/libgomp.c/pr86416-1.c: New.
        * testsuite/libgomp.c/pr86416-2.c: New.

From-SVN: r279528

4 years agore PR fortran/70853 (ICE on pointing to null, in gfc_add_block_to_block, at fortran...
Harald Anlauf [Wed, 18 Dec 2019 16:34:06 +0000 (16:34 +0000)]
re PR fortran/70853 (ICE on pointing to null, in gfc_add_block_to_block, at fortran/trans.c:1599)

2019-12-18  Harald Anlauf  <anlauf@gmx.de>

PR fortran/70853
* trans-expr.c (gfc_trans_pointer_assignment): Reject bounds
remapping if pointer target is NULL().

PR fortran/70853
* gfortran.dg/pr70853.f90: New test.

From-SVN: r279527

4 years ago[AArch64] Fixup core tunings
Wilco Dijkstra [Wed, 18 Dec 2019 16:11:52 +0000 (16:11 +0000)]
[AArch64] Fixup core tunings

Several tuning settings in cores.def are not consistent.
Set the tuning for Cortex-A76AE and Cortex-A77 to neoversen1 so
it is the same as for Cortex-A76 and Neoverse N1.
Set the tuning for Neoverse E1 to cortexa73 so it's the same as for
Cortex-A65. Set the scheduler for Cortex-A65 and Cortex-A65AE to
cortexa53.

    gcc/
* config/aarch64/aarch64-cores.def:
("cortex-a76ae"): Use neoversen1 tuning.
("cortex-a77"): Likewise.
("cortex-a65"): Use cortexa53 scheduler.
("cortex-a65ae"): Likewise.
("neoverse-e1"): Use cortexa73 tuning.

From-SVN: r279526

4 years agoIPA-CP: Remove bogus static keyword (PR 92971)
Martin Jambor [Wed, 18 Dec 2019 16:08:09 +0000 (17:08 +0100)]
IPA-CP: Remove bogus static keyword (PR 92971)

2019-12-18  Martin Jambor  <mjambor@suse.cz>

PR ipa/92971
* ipa-cp.c (cgraph_edge_brings_all_agg_vals_for_node): Fix
          definition of values, release memory on exit.

testsuite/
* gcc.dg/ipa/ipcp-agg-12.c: New test.

From-SVN: r279525

4 years ago* config/avr/avr-mcus.def: Typo.
Georg-Johann Lay [Wed, 18 Dec 2019 16:02:00 +0000 (16:02 +0000)]
* config/avr/avr-mcus.def: Typo.

From-SVN: r279524

4 years agoipa-param-manipulation.h (get_original_index): Declare.
Jan Hubicka [Wed, 18 Dec 2019 13:21:51 +0000 (14:21 +0100)]
ipa-param-manipulation.h (get_original_index): Declare.

* ipa-param-manipulation.h (get_original_index): Declare.
* ipa-param-manipulation.c (ipa_param_adjustments::get_original_index):
New member function.
* ipa-prop.c (ipcp_get_parm_bits): New function.
* ipa-prop.h (ipcp_get_parm_bits): Declare.
* tree-ssa-ccp.c: Include cgraph.h, alloc-pool.h, symbol-summary.h,
ipa-utils.h and ipa-prop.h
(get_default_value): Use ipcp_get_parm_bits.

* gcc.dg/ipa/ipa-bit-cp.c: New testcase.
* gcc.dg/ipa/ipa-bit-cp-1.c: New testcase.
* gcc.dg/ipa/ipa-bit-cp-2.c: New testcase.

Co-Authored-By: Martin Jambor <mjambor@suse.cz>
From-SVN: r279523

4 years agoPR c++/12333 - X::~X() with implicit this->.
Jason Merrill [Wed, 18 Dec 2019 12:44:34 +0000 (07:44 -0500)]
PR c++/12333 - X::~X() with implicit this->.

this->X::~X() is handled by finish_class_member_access_expr and its
lookup_destructor subroutine; let's use it in cp_parser_lookup_name for the
case where this-> is implicit.

I tried replacing the other destructor code here with just the call to
lookup_destructor, but that regressed handling of naming the destructor
outside a non-static member function.

* parser.c (cp_parser_lookup_name): Use lookup_destructor.
* typeck.c (lookup_destructor): No longer static.

From-SVN: r279522

4 years agoFix vect/pr65947-8.c testcase for amdgcn.
Andrew Stubbs [Wed, 18 Dec 2019 11:47:26 +0000 (11:47 +0000)]
Fix vect/pr65947-8.c testcase for amdgcn.

2019-12-18  Andrew Stubbs  <ams@codesourcery.com>

gcc/testsuite/
* gcc.dg/vect/pr65947-8.c: Change pass conditions for amdgcn.

From-SVN: r279521

4 years agore PR lto/92972 (gcc/lto-wrapper.c:443: identical branches ?)
Jakub Jelinek [Wed, 18 Dec 2019 11:15:43 +0000 (12:15 +0100)]
re PR lto/92972 (gcc/lto-wrapper.c:443: identical branches ?)

PR lto/92972
* lto-wrapper.c (merge_and_complain): Use just "-fno-pie" instead of
big ? "-fno-pie" : "-fno-pie".  Formatting fixes.  Fix comment typo.

From-SVN: r279520

4 years agotrans.c (Pragma_to_gnu): Push a diagnostics state for pragma Warnings (Off) before...
Eric Botcazou [Wed, 18 Dec 2019 09:51:14 +0000 (09:51 +0000)]
trans.c (Pragma_to_gnu): Push a diagnostics state for pragma Warnings (Off) before turning off all the...

* gcc-interface/trans.c (Pragma_to_gnu) <Pragma_Warnings>: Push a
diagnostics state for pragma Warnings (Off) before turning off all
the warnings and only pop it for pragma Warnings (On).

From-SVN: r279519

4 years ago[Ada] Missing accessibility check on access discriminants
Justin Squirek [Wed, 18 Dec 2019 07:16:22 +0000 (07:16 +0000)]
[Ada] Missing accessibility check on access discriminants

2019-12-18  Justin Squirek  <squirek@adacore.com>

gcc/ada/

* sem_ch6.adb (Analyze_Function_Return): Modify handling of
extended return statements to check accessibility of access
discriminants.
(Check_Aggregate_Accessibility): Removed.
(Check_Return_Obj_Accessibility): Added to centralize checking
of return aggregates and subtype indications in the case of an
extended return statement.

From-SVN: r279518

4 years ago[Ada] Fix uninitialized out parameter in s-regpat.adb
Arnaud Charlet [Wed, 18 Dec 2019 07:16:17 +0000 (07:16 +0000)]
[Ada] Fix uninitialized out parameter in s-regpat.adb

2019-12-18  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

* libgnat/s-regpat.adb (Parse_Literal, Parse_Piece): Ensure
Expr_Flags is always fully initialized.

From-SVN: r279517

4 years ago[Ada] Atomic aspect on formal generic params now supported in Ada 202x mode
Arnaud Charlet [Wed, 18 Dec 2019 07:16:12 +0000 (07:16 +0000)]
[Ada] Atomic aspect on formal generic params now supported in Ada 202x mode

2019-12-18  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

* libgnat/s-atopar.ads, libgnat/s-atopex.ads (Atomic_Type): Can
now be marked Atomic. This requires marking the unit Ada 202x.

From-SVN: r279516

4 years ago[Ada] Simplify Big_Integer and Big_Real interface
Arnaud Charlet [Wed, 18 Dec 2019 07:15:52 +0000 (07:15 +0000)]
[Ada] Simplify Big_Integer and Big_Real interface

2019-12-18  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

* libgnat/a-nbnbin.ads, libgnat/a-nbnbin.adb,
libgnat/a-nbnbre.ads, libgnat/a-nbnbre.adb: Replace
Optional_Big_* types by a simple check and exception raise in
Get_Bignum.
(Set_Bignum): Arg should be 'out' and not 'in out'.
(Invalid_Big_Integer, No_Big_Real): Removed.
(Is_Valid): Now convention Intrinsic.

From-SVN: r279515

4 years ago[Ada] Fix three-letter typos like "sss" in comments and docs
Piotr Trojanek [Wed, 18 Dec 2019 07:15:22 +0000 (07:15 +0000)]
[Ada] Fix three-letter typos like "sss" in comments and docs

2019-12-18  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

* doc/gnat_rm/implementation_defined_pragmas.rst,
doc/gnat_rm/obsolescent_features.rst,
doc/gnat_ugn/gnat_and_program_execution.rst, exp_attr.adb,
exp_ch9.adb, init.c, libgnat/s-valrea.adb, par-ch6.adb,
sem_attr.adb, sem_ch4.adb, sem_util.ads: Fix trivial typos.
* gnat_rm.texi, gnat_ugn.texi: Regenerate.

From-SVN: r279514

4 years ago[Ada] Missing accessibility actuals on calls to interface conversion functions
Gary Dismukes [Wed, 18 Dec 2019 07:14:59 +0000 (07:14 +0000)]
[Ada] Missing accessibility actuals on calls to interface conversion functions

2019-12-18  Gary Dismukes  <dismukes@adacore.com>

gcc/ada/

* sem_res.adb (Resolve_Type_Conversion): Add handling for access
types with designated operand and target types that are
referenced in places that have a limited view of an interface
type by retrieving the nonlimited view when it exists.  Add ???
comments related to missing limited_with_clause handling for
Target (in the non-access case).

From-SVN: r279513

4 years ago[Ada] AI12-0282: shared variable control aspects on formal types
Ed Schonberg [Wed, 18 Dec 2019 07:14:54 +0000 (07:14 +0000)]
[Ada] AI12-0282: shared variable control aspects on formal types

2019-12-18  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* par-ch12.adb (P_Formal_Derived_Type_Definition): In Ada_2020
the keyword WITH can indicate the start of aspect specifications
and not a private type extension.
* sem_ch12.adb (Analyze_Formal_Type): Indicate that it is a
first subtype.
(Instantiate_Type): New procedure
Check_Shared_Variable_Control_Aspects to verify matching rules
between formal and actual types. Note that an array type with
aspect Atomic_Components is considered compatible with an array
type whose component type is Atomic, even though the array types
do not carry the same aspect.
* sem_ch13.adb (Analyze_One_Aspect): Allow shared variable
control aspects to appear on formal types.
(Rep_Item_Too_Early): Exclude aspects on formal types.
* sem_prag.adb (Mark_Type): Handle properly pragmas that come
from aspects on formal types.
(Analyze_Pragma, case Atomic_Components): Handle formal types.

From-SVN: r279512

4 years ago[Ada] Minor housekeeping work in Create_Standard
Eric Botcazou [Wed, 18 Dec 2019 07:14:49 +0000 (07:14 +0000)]
[Ada] Minor housekeeping work in Create_Standard

2019-12-18  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* cstand.adb (Create_Standard): Remove duplicate line and
adjust.

From-SVN: r279511

4 years ago[Ada] Reserving switch d_K for known problem isssues detection
Javier Miranda [Wed, 18 Dec 2019 07:14:44 +0000 (07:14 +0000)]
[Ada] Reserving switch d_K for known problem isssues detection

2019-12-18  Javier Miranda  <miranda@adacore.com>

gcc/ada/

* debug.adb: Document -gnatd_K as a reserved switch for the
detection of known problem issues of previous releases.

From-SVN: r279510

4 years ago[Ada] Reject aspect specifications on number constants
Ghjuvan Lacambre [Wed, 18 Dec 2019 07:14:39 +0000 (07:14 +0000)]
[Ada] Reject aspect specifications on number constants

2019-12-18  Ghjuvan Lacambre  <lacambre@adacore.com>

gcc/ada/

* par-ch13.adb: Check if declarations allow aspect
specifications.

From-SVN: r279509

4 years ago[Ada] Einfo: fix typo in comment
Piotr Trojanek [Wed, 18 Dec 2019 07:14:28 +0000 (07:14 +0000)]
[Ada] Einfo: fix typo in comment

2019-12-18  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

* einfo.ads (Is_Ghost_Entity): Fix typo in comment.

From-SVN: r279508

4 years ago[Ada] Do not propagate Object_Size onto Size for composite types
Eric Botcazou [Wed, 18 Dec 2019 07:14:23 +0000 (07:14 +0000)]
[Ada] Do not propagate Object_Size onto Size for composite types

2019-12-18  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* layout.adb (Layout_Type): In the case of composite types, do
not copy the Esize onto the RM_Size if the latter is not set.
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>:
Also cap the alignment if an Object_Size clause has been
specified.  Pass VAR_DECL in the call to validate_size for the
Esize of a type.
(validate_size): Be prepared to give an error on an Object_Size
clause.

From-SVN: r279507

4 years ago[Ada] Document the introduction of the Object_Size attribute in Ada 2020
Eric Botcazou [Wed, 18 Dec 2019 07:14:18 +0000 (07:14 +0000)]
[Ada] Document the introduction of the Object_Size attribute in Ada 2020

2019-12-18  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* einfo.ads (Handling of Type'Size Value): Add references to the
introduction of Object_Size in Ada 2020.
* sem_eval.adb (Subtypes_Statically_Match): Likewise.

From-SVN: r279506

4 years ago[Ada] Wrong error on hidden must-override primitive
Bob Duff [Wed, 18 Dec 2019 07:14:13 +0000 (07:14 +0000)]
[Ada] Wrong error on hidden must-override primitive

2019-12-18  Bob Duff  <duff@adacore.com>

gcc/ada/

* sem_ch3.adb (Derive_Subprogram): Do not set the
Requires_Overriding flag in the above-mentioned case.

From-SVN: r279505

4 years ago[Ada] Bad "already use-visible" warning re: use in private part
Bob Duff [Wed, 18 Dec 2019 07:14:07 +0000 (07:14 +0000)]
[Ada] Bad "already use-visible" warning re: use in private part

2019-12-18  Bob Duff  <duff@adacore.com>

gcc/ada/

* sem_ch8.adb (Note_Redundant_Use): It was already checking for
a use clause in the visible part of the child. Add an additional
check for a use clause in the context clause of the child.

From-SVN: r279504

4 years agoDaily bump.
GCC Administrator [Wed, 18 Dec 2019 00:16:49 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r279483

4 years agoPR c++/61339 - add warning for mismatch between struct and class
Martin Sebor [Tue, 17 Dec 2019 23:53:07 +0000 (23:53 +0000)]
PR c++/61339 - add warning for mismatch between struct and class

gcc/c-family/ChangeLog:

PR c++/61339
* c.opt (-Wmismatched-tags, -Wredundant-tags): New options.

gcc/cp/ChangeLog:

PR c++/61339
* parser.c (cp_parser_maybe_warn_enum_key): New function.
(class_decl_loc_t): New class.
(cp_parser_elaborated_type_specifier): Call
cp_parser_maybe_warn_enum_key.
(cp_parser_class_head): Call cp_parser_check_class_key.
(cp_parser_check_class_key): Add arguments.  Call class_decl_loc_t::add.
(c_parse_file): Call class_decl_loc_t::diag_mismatched_tags.

gcc/testsuite/ChangeLog:

PR c++/61339
* g++.dg/warn/Wmismatched-tags.C: New test.
* g++.dg/warn/Wredundant-tags.C: New test.
* g++.dg/pch/Wmismatched-tags.C: New test.
* g++.dg/pch/Wmismatched-tags.Hs: New test header.

gcc/ChangeLog:

PR c++/61339
* doc/invoke.texi (-Wmismatched-tags, -Wredundant-tags): Document
new C++ options.

From-SVN: r279480

4 years agoGenerate PADDI to add large constants if -mcpu=future.
Michael Meissner [Tue, 17 Dec 2019 22:21:35 +0000 (22:21 +0000)]
Generate PADDI to add large constants if -mcpu=future.

2019-12-12  Michael Meissner  <meissner@linux.ibm.com>

* config/rs6000/predicates.md (add_operand): Allow eI constants.
* config/rs6000/rs6000.md (add<mode>3): Add alternative to
generate PADDI for 34-bit constants if -mcpu=future.

From-SVN: r279476

4 years agoUse PLI to load up 32-bit SImode constants if -mcpu=future.
Michael Meissner [Tue, 17 Dec 2019 22:16:40 +0000 (22:16 +0000)]
Use PLI to load up 32-bit SImode constants if -mcpu=future.

2019-12-17  Michael Meissner  <meissner@linux.ibm.com>

* config/rs6000/rs6000.md (movsi_internal1): Add alternative to
use PLI to load up 32-bit constants if -mcpu=future.

From-SVN: r279475

4 years agoUse PLI to load up large constants if -mcpu=future.
Michael Meissner [Tue, 17 Dec 2019 22:11:55 +0000 (22:11 +0000)]
Use PLI to load up large constants if -mcpu=future.

2019-12-17  Michael Meissner  <meissner@linux.ibm.com>

* config/rs6000/rs6000.c (num_insns_constant_gpr): Return 1 if the
constant can be loaded with PLI if -mcpu=future.
* config/rs6000/rs6000.md (movdi_internal64): Add alternative to
use PLI to load up 34-bit constants if -mcpu=future.

From-SVN: r279474

4 years agoPR c++/79592 - missing explanation of invalid constexpr.
Jason Merrill [Tue, 17 Dec 2019 21:46:40 +0000 (16:46 -0500)]
PR c++/79592 - missing explanation of invalid constexpr.

We changed months back to use the pre-generic form for constexpr evaluation,
but explain_invalid_constexpr_fn was still using DECL_SAVED_TREE.  This
mostly works, but misses some issues due to folding.  So with this patch we
save the pre-generic form of constexpr functions even when we know they
can't produce a constant result.

* constexpr.c (register_constexpr_fundef): Do store the body of a
template instantiation that is not potentially constant.
(explain_invalid_constexpr_fn): Look it up.
(cxx_eval_call_expression): Check fundef->result.

From-SVN: r279473

4 years agoPR c++/92576 - redeclaration of variable template.
Jason Merrill [Tue, 17 Dec 2019 21:46:11 +0000 (16:46 -0500)]
PR c++/92576 - redeclaration of variable template.

The variable templates patch way back when forgot to add handling here.  The
simplest answer seems to be recursing to the underlying declaration.

* decl.c (redeclaration_error_message): Recurse for variable
templates.

From-SVN: r279472

4 years ago* name-lookup.c (get_std_name_hint): Add std::byte.
Jason Merrill [Tue, 17 Dec 2019 21:45:19 +0000 (16:45 -0500)]
* name-lookup.c (get_std_name_hint): Add std::byte.

From-SVN: r279471

4 years agore PR c++/59655 (incorrect diagnostic on templatized function with lambda parameter)
Jakub Jelinek [Tue, 17 Dec 2019 21:40:14 +0000 (22:40 +0100)]
re PR c++/59655 (incorrect diagnostic on templatized function with lambda parameter)

PR c++/59655
* pt.c (push_tinst_level_loc): If limit_bad_template_recursion,
set TREE_NO_WARNING on tldcl.
* decl2.c (no_linkage_error): Treat templates with TREE_NO_WARNING
as defined during error recovery.

* g++.dg/cpp0x/diag3.C: New test.

From-SVN: r279470

4 years agore PR target/92841 (Optimize -fstack-protector-strong code generation a bit)
Jakub Jelinek [Tue, 17 Dec 2019 20:40:01 +0000 (21:40 +0100)]
re PR target/92841 (Optimize -fstack-protector-strong code generation a bit)

PR target/92841
* config/i386/i386.md (@stack_protect_set_1_<mode>,
@stack_protect_test_1_<mode>): Use output_asm_insn.
(*stack_protect_set_2_<mode>, *stack_protect_set_3): New define_insns
and corresponding define_peephole2s.

* gcc.target/i386/pr92841.c: New test.

From-SVN: r279468

4 years agoRevert "Fix vector testcases for amdgcn."
Andrew Stubbs [Tue, 17 Dec 2019 16:46:27 +0000 (16:46 +0000)]
Revert "Fix vector testcases for amdgcn."

Apologies everyone. :-(

From-SVN: r279466

4 years agoFix vector testcases for amdgcn.
Andrew Stubbs [Tue, 17 Dec 2019 16:37:09 +0000 (16:37 +0000)]
Fix vector testcases for amdgcn.

2019-12-17  Andrew Stubbs  <ams@codesourcery.com>

gcc/testsuite/
* gcc.dg/vect/pr65947-8.c: Change pass conditions for amdgcn.
* gcc.dg/vect/vect-multitypes-11.c: Ensure that main isn't vectorized.
* gcc.dg/vect/vect-multitypes-12.c: Likewise.

From-SVN: r279465

4 years agosymtab.c (symtab_node::get_partitioning_class): Aliases of external symbols are external.
Jan Hubicka [Tue, 17 Dec 2019 15:57:25 +0000 (16:57 +0100)]
symtab.c (symtab_node::get_partitioning_class): Aliases of external symbols are external.

* symtab.c (symtab_node::get_partitioning_class): Aliases of external
symbols are external.

From-SVN: r279464

4 years ago[ARM] Add support for -mpure-code in thumb-1 (v6m)
Christophe Lyon [Tue, 17 Dec 2019 15:43:07 +0000 (15:43 +0000)]
[ARM] Add support for -mpure-code in thumb-1 (v6m)

This patch extends support for -mpure-code to all thumb-1 processors,
by removing the need for MOVT.

Symbol addresses are built using upper8_15, upper0_7, lower8_15 and
lower0_7 relocations, and constants are built using sequences of
movs/adds and lsls instructions.

The extension of the *thumb1_movhf pattern uses always the same size
(6) although it can emit a shorter sequence when possible. This is
similar to what *arm32_movhf already does.

CASE_VECTOR_PC_RELATIVE is now false with -mpure-code, to avoid
generating invalid assembly code with differences from symbols from
two different sections (the difference cannot be computed by the
assembler).

Tests pr45701-[12].c needed a small adjustment to avoid matching
upper8_15 when looking for the r8 register.

Test no-literal-pool.c is augmented with __fp16, so it now uses
-mfp16-format=ieee.

Test thumb1-Os-mult.c generates an inline code sequence with
-mpure-code and computes the multiplication by using a sequence of
add/shift rather than using the multiply instruction, so we skip it in
presence of -mpure-code.

With -mcpu=cortex-m0, the pure-code/no-literal-pool.c fails because
code like:
static char *p = "Hello World";
char *
testchar ()
{
  return p + 4;
}

generates 2 indirections (I removed non-essential directives/code)
          .section        .rodata
  .LC0:
  .ascii  "Hello World\000"
  .data
  p:
  .word   .LC0
  .section        .rodata
  .LC2:
  .word   p
  .section .text,"0x20000006",%progbits
  testchar:
  push    {r7, lr}
  add     r7, sp, #0
  movs    r3, #:upper8_15:#.LC2
  lsls    r3, #8
  adds    r3, #:upper0_7:#.LC2
  lsls    r3, #8
  adds    r3, #:lower8_15:#.LC2
  lsls    r3, #8
  adds    r3, #:lower0_7:#.LC2
  ldr     r3, [r3]
  ldr     r3, [r3]
  adds    r3, r3, #4
  movs    r0, r3
  mov     sp, r7
  @ sp needed
  pop     {r7, pc}

By contrast, when using -mcpu=cortex-m4, the code looks like:
        .section        .rodata
.LC0:
.ascii  "Hello World\000"
.data
p:
.word   .LC0
testchar:
push    {r7}
add     r7, sp, #0
movw    r3, #:lower16:p
movt    r3, #:upper16:p
ldr     r3, [r3]
adds    r3, r3, #4
mov     r0, r3
mov     sp, r7
pop     {r7}
bx      lr

I haven't found yet how to make code for cortex-m0 apply upper/lower
relocations to "p" instead of .LC2. The current code looks functional,
but could be improved.

2019-10-18  Christophe Lyon  <christophe.lyon@linaro.org>

gcc/
* config/arm/arm-protos.h (thumb1_gen_const_int): Add new prototype.
* config/arm/arm.c (arm_option_check_internal): Remove restriction
on MOVT for -mpure-code.
(thumb1_gen_const_int): New function.
(thumb1_legitimate_address_p): Support -mpure-code.
(thumb1_rtx_costs): Likewise.
(thumb1_size_rtx_costs): Likewise.
(arm_thumb1_mi_thunk): Likewise.
* config/arm/arm.h (CASE_VECTOR_PC_RELATIVE): Likewise.
* config/arm/thumb1.md (thumb1_movsi_symbol_ref): New.
(*thumb1_movhf): Support -mpure-code.

gcc/testsuite/
* gcc.target/arm/pr45701-1.c: Adjust for -mpure-code.
* gcc.target/arm/pr45701-2.c: Likewise.
* gcc.target/arm/pure-code/no-literal-pool.c: Add tests for
__fp16.
* gcc.target/arm/pure-code/pure-code.exp: Remove thumb2 and movt
conditions.
* gcc.target/arm/thumb1-Os-mult.c: Skip if -mpure-code is used.

From-SVN: r279463

4 years agoAdd myself to write after approval.
Mihail Ionescu [Tue, 17 Dec 2019 14:19:22 +0000 (14:19 +0000)]
Add myself to write after approval.

2019-12-17  Mihail Ionescu  <mihail.ionescu@arm.com>

* MAINTAINERS (write_after_approval): Add myself.

From-SVN: r279461

4 years agoAdd pointer to PR92772
Andrew Stubbs [Tue, 17 Dec 2019 13:01:36 +0000 (13:01 +0000)]
Add pointer to PR92772

2019-12-17  Andrew Stubbs  <ams@codesourcery.com>

* tree-vect-loop.c (vect_create_epilog_for_reduction): Mention pr92772
in the comments.

From-SVN: r279460

4 years agoAdd extract_last for amdgcn
Andrew Stubbs [Tue, 17 Dec 2019 13:01:25 +0000 (13:01 +0000)]
Add extract_last for amdgcn

2019-12-17  Andrew Stubbs  <ams@codesourcery.com>

gcc/
* config/gcn/gcn-valu.md (extract_last_<mode>): New expander.
(fold_extract_last_<mode>): New expander.

gcc/testsuite/
* lib/target-supports.exp
(check_effective_target_vect_fold_extract_last): Add amdgcn.

From-SVN: r279459

4 years agoAdd clz and ctz for amdgcn
Andrew Stubbs [Tue, 17 Dec 2019 13:01:16 +0000 (13:01 +0000)]
Add clz and ctz for amdgcn

2019-12-17  Andrew Stubbs  <ams@codesourcery.com>

gcc/
* config/gcn/gcn.h (CLZ_DEFINED_VALUE_AT_ZERO): Define.
(CTZ_DEFINED_VALUE_AT_ZERO): Define.
* config/gcn/gcn.md (s_mnemonic): Add clz and ctz.
(expander): Likewise.
(countzeros): New code iterator.
(<expander>si2): New insn pattern.
(<expander>di2): New insn pattern.

From-SVN: r279458

4 years agolibgomp/openacc.f90 – clean-up public/private attributes
Tobias Burnus [Tue, 17 Dec 2019 11:19:32 +0000 (11:19 +0000)]
libgomp/openacc.f90 – clean-up public/private attributes

        * config/accel/openacc.f90 (module openacc_kinds): Use 'PUBLIC' to mark
        all symbols as public except for the 'use …, only' imported symbol,
        which is private.
        (module openacc): Default to 'PRIVATE' to exclude openacc_internal; mark
        all symbols from module openacc_kinds as PUBLIC
        * openacc.f90: Add comment with crossref to that file and openmp_lib.h;
        fix comment typo.
        * openacc_lib.h (acc_device_gcn): Add this PARAMETER.

From-SVN: r279456

4 years agore PR target/92962 (Documentation: x86 Options - znver2 missing RDPID and WBNOINVD)
Jakub Jelinek [Tue, 17 Dec 2019 09:23:59 +0000 (10:23 +0100)]
re PR target/92962 (Documentation: x86 Options - znver2 missing RDPID and WBNOINVD)

PR target/92962
* common/config/i386/i386-common.c (processor_alias_table): Formatting
fixes.
* doc/invoke.texi (bdver3, bdver4, znver1): Add missing closing paren.
(znver2): Likewise.  Add RDPID and WBNOINVD, remove spurious comma
before CLWB.

From-SVN: r279455

4 years agoAdd abs pattern to handle {si,di} mode abs to avoid pmax/cmove conversion.
Hongyu Wang [Tue, 17 Dec 2019 01:50:35 +0000 (01:50 +0000)]
Add abs pattern to handle {si,di} mode abs to avoid pmax/cmove conversion.

2019-12-17  Hongyu Wang  <hongyu.wang@intel.com>

gcc/
PR target/92651
* config/i386/i386.h (TARGET_EXPAND_ABS): New macro.
* config/i386/x86-tune.def (X86_TUNE_EXPAND_ABS): New.
* config/i386/i386.md (abs<SWI48x>2): New define_expand.

gcc/testsuite
* gcc.target/i386/pr92651.c: New testcase.

From-SVN: r279452

4 years agoUse add for a = a + b and a = b + a when possible.
H.J. Lu [Tue, 17 Dec 2019 01:29:09 +0000 (17:29 -0800)]
Use add for a = a + b and a = b + a when possible.

Since except for Bonnell,

01 fb                   add    %edi,%ebx

is faster and shorter than

8d 1c 1f                lea    (%rdi,%rbx,1),%ebx

we should use add for a = a + b and a = b + a when possible if not
optimizing for Bonnell.

Tested on x86-64.

2019-12-17  H.J. Lu  <hjl.tools@gmail.com>

gcc/

PR target/92807
* config/i386/i386.c (ix86_lea_outperforms): Check !TARGET_BONNELL.
(ix86_avoid_lea_for_addr): When not optimizing for Bonnell, use add
for a = a + b and a = b + a.

gcc/testsuite/

PR target/92807
* gcc.target/i386/pr92807-1.c: New test.

From-SVN: r279451

4 years agoDaily bump.
GCC Administrator [Tue, 17 Dec 2019 00:16:12 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r279450

4 years agoPR c++/91165 - verify_gimple ICE with cached constexpr.
Jason Merrill [Mon, 16 Dec 2019 23:25:08 +0000 (18:25 -0500)]
PR c++/91165 - verify_gimple ICE with cached constexpr.

It seems we need to unshare even non-CONSTRUCTOR expressions that we are
going to stick in the constexpr_call_table, so we don't end up sharing the
same e.g. ADDR_EXPR between two different functions.  I now think I
understand why unsharing CONSTRUCTOR arguments was improving memory
performance: separating the arguments from the caller function allows the
caller function to be GC'd better.  But it occurs to me that we don't need
to unshare until we decide that we're evaluating and caching this call, so
we can avoid the CONSTRUCTOR unshare/free pair for tentative arguments.
Freeing the tentative TREE_VEC still seems worth doing, so free_bindings
isn't going away entirely.

* constexpr.c (cxx_bind_parameters_in_call): Don't unshare.
(cxx_eval_call_expression): Unshare all args if we're caching.

From-SVN: r279447

4 years agoPR middle-end/92952 - gfortran.dg/lto/pr87689 FAILs at -O2
Martin Sebor [Mon, 16 Dec 2019 22:24:15 +0000 (22:24 +0000)]
PR middle-end/92952 - gfortran.dg/lto/pr87689 FAILs at -O2

gcc/ChangeLog:
* builtins.c (compute_objsize): Adjust offset by the array low bound.

From-SVN: r279445

4 years agoAdd pp_write_text_as_html_like_dot_to_stream
David Malcolm [Mon, 16 Dec 2019 17:07:45 +0000 (17:07 +0000)]
Add pp_write_text_as_html_like_dot_to_stream

gcc/ChangeLog:
* pretty-print.c (pp_write_text_as_html_like_dot_to_stream): New
function.
* pretty-print.h (pp_write_text_as_html_like_dot_to_stream): New decl.

From-SVN: r279444

4 years agors6000: Use symbolic names for the CR fields in more cases
Segher Boessenkool [Mon, 16 Dec 2019 16:06:17 +0000 (17:06 +0100)]
rs6000: Use symbolic names for the CR fields in more cases

It turns out we still used hardcoded register numbers for the CR fields
in some cases, and they now use the wrong numbers since we renumbered
most of the registers.  So let's use the symbolic names, instead.

* config/rs6000/rs6000.md (movsi_to_cr_one): Use CR0_REGNO instead of
hardcoding the (old, expired) register number.
(*mtcrfsi): Ditto.

From-SVN: r279443

4 years agoMSP430: Add new msp430-elfbare target
Jozef Lawrynowicz [Mon, 16 Dec 2019 11:02:10 +0000 (11:02 +0000)]
MSP430: Add new msp430-elfbare target

contrib/ChangeLog:

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

* config-list.mk: Add msp430-elfbare.

gcc/ChangeLog:

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

* config.gcc: s/msp430*-*-*/msp430-*-*.
Handle msp430-*-elfbare.
* config/msp430/msp430-devices.c (TARGET_SUBDIR): Define.
(_MSPMKSTR): Define.
(__MSPMKSTR): Define.
(rest_of_devices_path): Use TARGET_SUBDIR value in string.
* config/msp430/msp430.c (msp430_option_override): Error if
-fuse-cxa-atexit is used when it has been disabled at configure time.
* config/msp430/t-msp430: Define TARGET_SUBDIR when building
msp430-devices.o.
* doc/install.texi: Document msp430-*-elf and msp430-*-elfbare.
* doc/invoke.texi: Update documentation about which path devices.csv is
searched for.

gcc/testsuite/ChangeLog:

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

* g++.dg/init/dso_handle1.C: Require cxa_atexit support.
* g++.dg/init/dso_handle2.C: Likewise.
* g++.dg/other/cxa-atexit1.C: Likewise.
* gcc.target/msp430/msp430.exp: Update csv-using-installed.c test to
handle msp430-elfbare configuration.

libgcc/ChangeLog:

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

* config.host: s/msp430*-*-elf/msp430-*-elf*.
Override default "extra_parts" variable.
* configure: Regenerate.
* configure.ac: Disable TM clone registry by default for
msp430-elfbare.

From-SVN: r279442

4 years ago[Ada] Suppress unused warnings in the presence of errors
Bob Duff [Mon, 16 Dec 2019 10:35:31 +0000 (10:35 +0000)]
[Ada] Suppress unused warnings in the presence of errors

2019-12-16  Bob Duff  <duff@adacore.com>

gcc/ada/

* errout.adb (Handle_Serious_Error): Disable the above-mentioned
warnings.

From-SVN: r279441

4 years ago[Ada] Minor: improve comments
Bob Duff [Mon, 16 Dec 2019 10:35:24 +0000 (10:35 +0000)]
[Ada] Minor: improve comments

2019-12-16  Bob Duff  <duff@adacore.com>

gcc/ada/

* errout.adb, errout.ads: Improve comments.

From-SVN: r279440

4 years ago[Ada] Minor comment fix
Bob Duff [Mon, 16 Dec 2019 10:35:17 +0000 (10:35 +0000)]
[Ada] Minor comment fix

2019-12-16  Bob Duff  <duff@adacore.com>

gcc/ada/

* sem_util.ads: Minor comment fix.

From-SVN: r279439

4 years ago[Ada] Check for "size for" in Special_Msg_Delete
Bob Duff [Mon, 16 Dec 2019 10:35:09 +0000 (10:35 +0000)]
[Ada] Check for "size for" in Special_Msg_Delete

2019-12-16  Bob Duff  <duff@adacore.com>

gcc/ada/

* errout.ads, errout.adb (Is_Size_Too_Small_Message): Check for
"size for" instead of "size for& too small, minimum allowed is
^".

From-SVN: r279438

4 years ago[Ada] Do not set a bogus Esize on subtype built for Component_Size clause
Eric Botcazou [Mon, 16 Dec 2019 10:35:05 +0000 (10:35 +0000)]
[Ada] Do not set a bogus Esize on subtype built for Component_Size clause

2019-12-16  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* sem_ch13.adb (Analyze_Attribute_Definition_Clause): Set only
the RM_Size on the subtype built for a Component_Size clause
when the component type is a biased integer type.

From-SVN: r279437

4 years ago[Ada] Fix warning on _REENTRANT
Arnaud Charlet [Mon, 16 Dec 2019 10:35:00 +0000 (10:35 +0000)]
[Ada] Fix warning on _REENTRANT

2019-12-16  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

* socket.c: Shutdown warning.

From-SVN: r279436

4 years ago[Ada] Mark Deallocator as Favor_Top_Level
Arnaud Charlet [Mon, 16 Dec 2019 10:34:56 +0000 (10:34 +0000)]
[Ada] Mark Deallocator as Favor_Top_Level

2019-12-16  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

* libgnarl/s-tataat.ads (Deallocator): Mark as Favor_Top_Level.

From-SVN: r279435

4 years ago[Ada] AI12-0234/321 atomic operations
Arnaud Charlet [Mon, 16 Dec 2019 10:34:51 +0000 (10:34 +0000)]
[Ada] AI12-0234/321 atomic operations

2019-12-16  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

* libgnat/s-aotase.adb, libgnat/s-aotase.ads,
libgnat/s-atoope.ads, libgnat/s-atopar.adb,
libgnat/s-atopar.ads, libgnat/s-atopex.adb,
libgnat/s-atopex.ads: New files.
* libgnat/s-atopri.ads: Add new intrinsics.
* Makefile.rtl: Add new runtime files.
* impunit.adb: Add new units to Ada 2020 list.

From-SVN: r279434

4 years ago[Ada] Remove new strict-alignment check added by AI12-0001
Eric Botcazou [Mon, 16 Dec 2019 10:34:47 +0000 (10:34 +0000)]
[Ada] Remove new strict-alignment check added by AI12-0001

2019-12-16  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* freeze.adb (Check_Strict_Alignment): Remove new check on
Has_Aliased_Components for array types.

From-SVN: r279433

4 years ago[Ada] Crash on constrained container in generalized indexing operation
Ed Schonberg [Mon, 16 Dec 2019 10:34:42 +0000 (10:34 +0000)]
[Ada] Crash on constrained container in generalized indexing operation

2019-12-16  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* sem_ch4.adb (Try_Container_Indexing): In the case of a derived
container type, use the base type to look for candidate indexing
operations, because the object may be a constrained subtype or
itype with no explicit declaration.  Candidate indexing
operations are found in the same scope and list of declarations
as the declaration of the base type.

From-SVN: r279432

4 years ago[Ada] Prototype implementastion of Ada2020 Map-reduce construct
Ed Schonberg [Mon, 16 Dec 2019 10:34:37 +0000 (10:34 +0000)]
[Ada] Prototype implementastion of Ada2020 Map-reduce construct

2019-12-16  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* scng.adb (Scan): In Ada2020, a left-bracket indicates the
start of an homogenous aggregate.
* par-ch4.adb (P_Reduction_Attribute_Reference): New procedure.
(P_Aggregate): Recognize Ada2020 bracket-delimited aggregates.
(P_Primary): Ditto.
* par-util.adb (Comma_Present): Return false on a right bracket
in Ada2020, indicating the end of an aggregate.
* snames.ads-tmpl: Introduce Name_Reduce and Attribute Reduce.
* sinfo.ads, sinfo.adb (Is_Homogeneous_Aggregate): New flag on
aggregates, to designate an Ada2020 array or container aggregate
that is bracket-delimited in the source.
* sem_attr.adb (Analyze_Attribute): For attribute Reduce, verify
that two arguments are present, and verify that the prefix is a
stream or an object that is iterable (array or contrainer).
(Resolve_Attribute): For attribute Reduce, resolve initial value
with the type of the context. Type-checking of element type of
prefix is performed after expansion.
* exp_attr.adb (Expand_N_Attribute_Reference): For attribute
Reduce, expand into a loop: a) If prefix is an aggregate with a
single iterated component association, use its iterator
specification to construct a loop, b) If prefix is a name, build
a loop using an element iterator loop.
* scans.ads: Add brackets tokens.

From-SVN: r279431