gcc.git
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

4 years ago[Ada] AI12-0001: Independence and Representation clauses for atomic objects
Eric Botcazou [Mon, 16 Dec 2019 10:34:33 +0000 (10:34 +0000)]
[Ada] AI12-0001: Independence and Representation clauses for atomic objects

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

gcc/ada/

* gcc-interface/decl.c (gnat_to_gnu_entity): Adjust calls to
validate_size.
(gnat_to_gnu_component_type): Likewise.
(gnat_to_gnu_field): Likewise and pass string for error messages.
(components_need_strict_alignment): Remove test on Is_Aliased and
add test for the independence of the component.
(validate_size): Add S1 and S2 string parameters and use them to
give better error messages for fields.  Tweak a couple of messages.
* einfo.ads (Has_Independent_Components): Document more cases.
(Is_Independent): Likewise.
(Strict_Alignment): Document new semantics.
* exp_ch9.adb (Install_Private_Data_Declarations): Also set the
Is_Independent flag along with Is_Aliased on the renaming
entity.
* freeze.adb (Size_Known): Remove always-false test and add test
for the strict-alignment on the record type.  Remove redundant
tests and add test for the strict-alignment on the component
type.
(Check_Strict_Alignment): Set the flag if the type is by-ref and
remove now redundant conditions.  Set the flag on an array type
if it has aliased components.  In the record type case, do not
set type for C_Pass_By_Copy convention.
(Freeze_Array_Type): Move code checking for conflicts between
representation aspects and clauses to before specific handling
of packed array types. Give a warnind instead of an error for a
conflict with pragma Pack.  Do not test Has_Pragma_Pack for the
specific handling of packed array types.
(Freeze_Record_Type): Move error checking of representation
clause to...
(Freeze_Entity): ...here after Check_Strict_Alignment is called.
* sem_aggr.adb (Array_Aggr_Subtype): Also set the Is_Independent
flag along with Is_Aliased on the Itype.
* sem_ch13.adb (Check_Record_Representation_Clause): Do not set
the RM size for a strict-alignment type.
* sem_ch3.adb (Add_Interface_Tag_Components): Also set the
Is_Independent flag along with Is_Aliased on the tag.
(Add_Interface_Tag_Components): Likewise on the offset.
(Analyze_Component_Declaration): Likewise on the component.
(Analyze_Object_Declaration): Likewise on the object.
(Constrain_Array): Likewise on the array.
(Record_Type_Declaration: Likewise on the tag.
(Array_Type_Declaration): Also set the
Has_Independent_Components flag along with
Has_Aliased_Components on the array.
(Copy_Array_Base_Type_Attributes): Copy
Has_Independent_Components.
(Copy_Array_Subtype_Attributes): Copy Is_Atomic, Is_Independent
and Is_Volatile_Full_Access.
(Analyze_Iterator_Specification): Set Is_Independent on the loop
variable according to Independent_Components on the array.
* sem_ch5.adb: Likewise.
* sem_ch6.adb (Process_Formals): Also set the Is_Independent
flag along with Is_Aliased on the formal.

gcc/testsuite/

* gnat.dg/specs/clause_on_volatile.ads,
gnat.dg/specs/size_clause3.ads: Update expected diagnostics.

From-SVN: r279430

4 years ago[Ada] Fully propagate representation aspects through renaming
Eric Botcazou [Mon, 16 Dec 2019 10:34:27 +0000 (10:34 +0000)]
[Ada] Fully propagate representation aspects through renaming

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

gcc/ada/

* sem_ch8.adb (Analyze_Object_Renaming): Set Atomic, Independent
and Volatile_Full_Access aspects on the entity of the renaming
the same way as the Volatile aspect is set.
* sem_util.ads (Is_Atomic_Object_Entity): Move declaration to...
(Is_Independent_Object): New function.
(Is_Volatile_Full_Access_Object): Likewise.
* sem_util.adb (Is_Atomic_Object_Entity): ...here.
(Prefix_Has_Atomic_Components): Minor tweak.
(Is_Atomic_Object): Test Is_Atomic on the Etype uniformly.
(Is_Atomic_Or_VFA_Object): Call Is_Volatile_Full_Access_Object.
(Is_Independent_Object): New predicate.
(Is_Subcomponent_Of_Atomic_Object): Remove redundant test.
(Is_Volatile_Full_Access_Object): New predicate.
(Is_Volatile_Prefix): Rename into...
(Prefix_Has_Volatile_Components): ... and call
Is_Volatile_Object.
(Object_Has_Volatile_Components): Delete.
(Is_Volatile_Object): Simplify.
* gcc-interface/trans.c (node_is_volatile_full_access): Adjust
comment.

From-SVN: r279429

4 years ago[Ada] Syntax error on improperly indented imported subprogram
Bob Duff [Mon, 16 Dec 2019 10:34:22 +0000 (10:34 +0000)]
[Ada] Syntax error on improperly indented imported subprogram

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

gcc/ada/

* par.adb: Add Scopes function to do range checking on the scope
stack.  Call Scopes all over the parser.  Add
SIS_Aspect_Import_Seen flag.
* par-ch6.adb (P_Subprogram): Initialize SIS_Aspect_Import_Seen
to False at the start, and check it at the end.
* par-ch13.adb (Get_Aspect_Specifications): Set
SIS_Aspect_Import_Seen to True when appropriate.
* par-ch10.adb, par-ch12.adb, par-ch2.adb, par-ch3.adb,
par-ch5.adb, par-ch7.adb, par-ch9.adb, par-endh.adb,
par-util.adb: Call Scopes.

From-SVN: r279428

4 years ago[Ada] Fix couple of oversights in the implementation of AI12-0128
Eric Botcazou [Mon, 16 Dec 2019 10:34:17 +0000 (10:34 +0000)]
[Ada] Fix couple of oversights in the implementation of AI12-0128

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

gcc/ada/

* sem_prag.adb (Atomic_Components): Remove local variable and
fix consistency issues.  Call Component_Type on the Etype of E.
(Independent_Components): Remove local variable.
* sem_util.adb (Is_Subcomponent_Of_Atomic_Object): Properly deal
with prefixes that are access values.
* gcc-interface/trans.c (atomic_acces_t): New enumeral type.
(node_is_atomic) <N_Indexed_Component>: Test the prefix.
(node_has_volatile_full_access): Rename into...
(node_is_volatile_full_access): ...this.
(node_is_component): New predicare.
(gnat_strip_type_conversion): Delete.
(outer_atomic_access_required_p): Likewise.
(atomic_access_required_p): Rename into...
(get_atomic_access): ...this.  Implement the 3 different semantics
of Atomic and Volatile_Full_Access.
(simple_atomic_access_required_p): New predicate.
(Call_to_gnu): Remove outer_atomic_access parameter and change the
type of atomic_access parameter to atomic_acces_t.  Replace call to
atomic_access_required_p with simple_atomic_access_required_p for
the in direction and call get_atomic_access for the out direction
instead of [outer_]atomic_access_required_p.
(lhs_or_actual_p): Constify local variables.
(present_in_lhs_or_actual_p): Likewise.
(gnat_to_gnu) <N_Identifier>: Replace call to atomic_access_required_p
with simple_atomic_access_required_p.
<N_Explicit_Dereference>: Likewise.
<N_Indexed_Component>: Likewise.
<N_Selected_Component>: Likewise.
<N_Assignment_Statement>: Call get_atomic_access for the name instead
of [outer_]atomic_access_required_p.  Adjust call to Call_to_gnu.
<N_Function_Call>: Adjust call to Call_to_gnu.
(get_controlling_type): Fix typo in comment.

From-SVN: r279427

4 years ago[Ada] Export the Ada version through the C interface
Eric Botcazou [Mon, 16 Dec 2019 10:34:12 +0000 (10:34 +0000)]
[Ada] Export the Ada version through the C interface

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

gcc/ada/

* fe.h (Ada_Version_Type): New typedef.
(Ada_Version): Declare.
* opt.ads (Ada_Version_Type): Add Convention C and WARNING line.
(Ada_Version): Add WARNING line.
(Exception_Mechanism_Type): Likewise.

From-SVN: r279426

4 years ago[Ada] Minor reformatting and U.S. spelling adjustment
Gary Dismukes [Mon, 16 Dec 2019 10:34:08 +0000 (10:34 +0000)]
[Ada] Minor reformatting and U.S. spelling adjustment

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

gcc/ada/

* checks.adb, sem_util.adb: Minor reformatting and U.S. spelling
adjustment.

From-SVN: r279425

4 years ago[Ada] Better error message for "is null" subunit
Bob Duff [Mon, 16 Dec 2019 10:34:03 +0000 (10:34 +0000)]
[Ada] Better error message for "is null" subunit

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

gcc/ada/

* sem_ch10.adb (Analyze_Subunit): Give an error if the subunit
is not a proper body. This hides the confusing "duplicate body"
message that was previously given.

From-SVN: r279424

4 years ago[Ada] Expand renamings of subcomponents of an atomic or VFA object
Eric Botcazou [Mon, 16 Dec 2019 10:33:59 +0000 (10:33 +0000)]
[Ada] Expand renamings of subcomponents of an atomic or VFA object

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

gcc/ada/

* exp_ch8.adb (Expand_N_Object_Renaming_Declaration): Document
third special case of renamings requiring special handling.
(Evaluation_Required): Return true for an atomic or VFA prefix.

From-SVN: r279423

4 years ago[Ada] Crash on conversion in branch of if-expression
Ed Schonberg [Mon, 16 Dec 2019 10:33:54 +0000 (10:33 +0000)]
[Ada] Crash on conversion in branch of if-expression

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

gcc/ada/

* checks.adb (Apply_Float_Conversion_Check): Use node of type
conversion and not its parent, when inserting the declaration
for the temporary that hold the result of the conversion.
Previously the declaration was inserted above the parent of the
conversion, apparently as a small optimization for the
subsequent traversal in Insert_Actions.  Unfortunately a similar
optimization takes place in Insert_Actions, assuming that the
insertion point must be above the expression that creates the
actions to insert.  This is not correct in the presence of
conditional expressions (i.e.  since Ada2012), where the
insertion must be in the list of actions attached to the current
alternative.

From-SVN: r279422

4 years ago[Ada] Bad warning: Size in Compile_Time_Error in nested instance
Bob Duff [Mon, 16 Dec 2019 10:33:50 +0000 (10:33 +0000)]
[Ada] Bad warning: Size in Compile_Time_Error in nested instance

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

gcc/ada/

* sem_attr.adb (Analyze_Attribute): Use Known_RM_Size. But we
still need Size_Known_At_Compile_Time, because when the size
really is known, sometimes only one or the other of these is
True.

From-SVN: r279421

4 years ago[Ada] Small consistency fix for Volatile_Full_Access objects
Eric Botcazou [Mon, 16 Dec 2019 10:33:45 +0000 (10:33 +0000)]
[Ada] Small consistency fix for Volatile_Full_Access objects

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

gcc/ada/

* sem_util.adb (Is_Atomic_Or_VFA_Object): Also return true for
components whose type is Volatile_Full_Access or which are
subject to the aspect/pragma individually.
* sem_util.ads (Is_Atomic_Object_Entity): Small comment fix.

From-SVN: r279420

4 years ago[Ada] Do not issue restriction violations on ignored ghost code
Yannick Moy [Mon, 16 Dec 2019 10:33:41 +0000 (10:33 +0000)]
[Ada] Do not issue restriction violations on ignored ghost code

2019-12-16  Yannick Moy  <moy@adacore.com>

gcc/ada/

* exp_ch6.adb: Fix comment.
* sem_res.adb (Resolve_Call): Do not check No_Recursion
restriction or indirectly No_Secondary_Stack restriction, when
inside an ignored ghost subprogram.

From-SVN: r279419

4 years ago[Ada] AI12-0208 Support for Ada.Numerics.Big_Numbers.Big_Integers and Big_Reals
Arnaud Charlet [Mon, 16 Dec 2019 10:33:36 +0000 (10:33 +0000)]
[Ada] AI12-0208 Support for Ada.Numerics.Big_Numbers.Big_Integers and Big_Reals

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

gcc/ada/

* impunit.adb: Add a-nbnbin, a-nbnbre, a-nubinu to Ada 2020
units.
* Makefile.rtl: Enable new file.
* libgnat/a-nbnbin.adb, libgnat/a-nbnbin.ads,
libgnat/a-nbnbre.adb, libgnat/a-nbnbre.ads,
libgnat/a-nubinu.ads: New files. Provide default standalone
implementation of Ada.Numerics.Big_Numbers.Big_* based on
System.Generic_Bignum.
* libgnat/a-nbnbin__gmp.adb: Alternate implementation of
Ada.Numerics.Big_Numbers.Big_Integers based on GMP. Not enabled
for now.
* libgnat/s-bignum.ads, libgnat/s-bignum.adb: Now a simple
wrapper on top of s-genbig.ads.
* libgnat/s-genbig.ads, libgnat/s-genbig.adb: New files, making
s-bignum generic for reuse in Ada.Numerics.Big_Numbers.

From-SVN: r279418

4 years ago[Ada] Correct documentation of -gnatw_C switch
Bob Duff [Mon, 16 Dec 2019 10:33:31 +0000 (10:33 +0000)]
[Ada] Correct documentation of -gnatw_C switch

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

gcc/ada/

* doc/gnat_ugn/building_executable_programs_with_gnat.rst:
Correct documentation of -gnatw_C switch
* gnat_ugn.texi: Regenerate.

From-SVN: r279417

4 years ago[Ada] Reword the impact of -minimal on the debugger
Joel Brobecker [Mon, 16 Dec 2019 10:33:27 +0000 (10:33 +0000)]
[Ada] Reword the impact of -minimal on the debugger

2019-12-16  Joel Brobecker  <brobecker@adacore.com>

gcc/ada/

* doc/gnat_ugn/building_executable_programs_with_gnat.rst
(_Switches_for_gnatbind): Reword the section explaining the
impact of -minimal on debugging.
* gnat_ugn.texi: Regenerate.

From-SVN: r279416

4 years ago[Ada] Typo fixes and minor reformatting
Gary Dismukes [Mon, 16 Dec 2019 10:33:22 +0000 (10:33 +0000)]
[Ada] Typo fixes and minor reformatting

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

gcc/ada/

* libgnat/g-exptty.adb, libgnat/g-exptty.ads: Typo fixes and
minor reformatting.

From-SVN: r279415

4 years ago[Ada] Implement RM C.6(19) clause entirely in the front-end
Eric Botcazou [Mon, 16 Dec 2019 10:33:17 +0000 (10:33 +0000)]
[Ada] Implement RM C.6(19) clause entirely in the front-end

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

gcc/ada/

* exp_ch6.adb (Requires_Atomic_Or_Volatile_Copy): New predicate.
(Expand_Actuals): Use it to decide whether to add call by copy
code as per the RM C.6(19) clause.
* fe.h (Is_Atomic_Object): Remove.
(Is_Volatile_Object): Likewise.
* sem_util.ads (Is_Atomic_Object): Remove WARNING note.
(Is_Volatile_Object): Likewise.
* gcc-interface/trans.c (atomic_or_volatile_copy_required_p): Delete.
(Call_to_gnu): Do not implement the  RM C.6(19) clause.

From-SVN: r279414

4 years ago[Ada] Validate_Access_Subprogram_Instance: check if not null types match
Ghjuvan Lacambre [Mon, 16 Dec 2019 10:33:13 +0000 (10:33 +0000)]
[Ada] Validate_Access_Subprogram_Instance: check if not null types match

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

gcc/ada/

* sem_ch12.adb (Validate_Access_Subprogram_Instance): Add
Can_Never_Be_Null checks.

From-SVN: r279413

4 years ago[Ada] Implement new legality rules introduced in C.6(13) by AI12-0128
Eric Botcazou [Mon, 16 Dec 2019 10:33:08 +0000 (10:33 +0000)]
[Ada] Implement new legality rules introduced in C.6(13) by AI12-0128

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

gcc/ada/

* doc/gnat_rm/implementation_defined_pragmas.rst (VFA): Document
extension of the no-aliasing rule to any subcomponent.
* freeze.adb (Freeze_Object_Declaration): Small comment tweak.
(Freeze_Record_Type): Do not deal with delayed aspect
specifications for components here but...
(Freeze_Entity): ...here instead.
* sem_ch12.adb (Instantiate_Object): Improve wording of errors
given for legality rules in C.6(12) and implement the new rule
in C.6(13).
* sem_res.adb (Resolve_Actuals): Likewise.
* sem_prag.adb (Check_Atomic_VFA): New procedure implementing
the new legality rules in C.6(13).
(Process_Atomic_Independent_Shared_Volatile): Call
Check_Atomic_VFA to check the legality rules.  Factor out code
marking types into...
(Mark_Type): ...this new procedure.
(Check_VFA_Conflicts): Do not check the legality rules here.
(Pragma_Atomic_Components): Call Check_Atomic_VFA on component
type.
* sem_util.ads (Is_Subcomponent_Of_Atomic_Object): Declare.
* sem_util.adb (Is_Subcomponent_Of_Atomic_Object): New
predicate.
* gnat_rm.texi: Regenerate.

From-SVN: r279412

4 years agoFix PR92950: Wrong code emitted for movv1qi
Andreas Krebbel [Mon, 16 Dec 2019 08:03:28 +0000 (08:03 +0000)]
Fix PR92950: Wrong code emitted for movv1qi

The backend emits 16 bit memory loads for single element character
vector.  As a result the character will not be right justified in the
GPR.

gcc/ChangeLog:

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

PR target/92950
* config/s390/vector.md ("mov<mode>" for V_8): Replace lh, lhy,
and lhrl with llc.

gcc/testsuite/ChangeLog:

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

PR target/92950
* gcc.target/s390/vector/pr92950.c: New test.

From-SVN: r279410

4 years agoAdd a couple int128_t bit-field testcases.
Andrew Pinski [Mon, 16 Dec 2019 03:43:19 +0000 (03:43 +0000)]
Add a couple int128_t bit-field testcases.

2019-12-15  Andrew Pinski  <apinski@marvell.com>

        * gcc.c-torture/compile/bitfield-1.c: New test.
        * gcc.c-torture/compile/bitfield-endian-1.c: New test.
        * gcc.c-torture/compile/bitfield-endian-2.c: New test.

From-SVN: r279409

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

From-SVN: r279408

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

From-SVN: r279402

4 years agore PR preprocessor/92919 (invalid memory access in wide_str_to_charconst when running...
Jakub Jelinek [Sat, 14 Dec 2019 22:18:53 +0000 (23:18 +0100)]
re PR preprocessor/92919 (invalid memory access in wide_str_to_charconst when running ucn2.C testcase (caught by hwasan))

PR preprocessor/92919
* charset.c (wide_str_to_charconst): If str contains just the
NUL terminator, punt quietly.

From-SVN: r279399

4 years agoextend.texi (attribute access): Correct typos.
Martin Sebor [Sat, 14 Dec 2019 17:31:54 +0000 (17:31 +0000)]
extend.texi (attribute access): Correct typos.

gcc/ChangeLog:

* doc/extend.texi (attribute access): Correct typos.

From-SVN: r279398

4 years agore PR ipa/92357 (ICE in IPA pass fnsummary in openmp offload)
Jakub Jelinek [Sat, 14 Dec 2019 11:19:07 +0000 (12:19 +0100)]
re PR ipa/92357 (ICE in IPA pass fnsummary in openmp offload)

PR ipa/92357
* ipa-fnsummary.c (ipa_fn_summary_write): Use
lto_symtab_encoder_iterator with lsei_start_function_in_partition and
lsei_next_function_in_partition instead of walking all cgraph nodes
in encoder.

From-SVN: r279395

4 years agore PR tree-optimization/92930 (GCC incorrectly optimizes away __builtin_apply() calls)
Jakub Jelinek [Sat, 14 Dec 2019 11:18:30 +0000 (12:18 +0100)]
re PR tree-optimization/92930 (GCC incorrectly optimizes away __builtin_apply() calls)

PR tree-optimization/92930
* ipa-pure-const.c (special_builtin_state): Don't handle
BUILT_IN_APPLY.  Formatting fixes.
(check_call): Formatting fixes.

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

From-SVN: r279394

4 years ago[Darwin, PPC] Use Darwin9 bundle header for Rosetta builds.
Iain Sandoe [Sat, 14 Dec 2019 08:25:02 +0000 (08:25 +0000)]
[Darwin, PPC] Use Darwin9 bundle header for Rosetta builds.

On Darwin10 it's possible to make a 32b PPC build using the
'Rosetta' emulator.  However, these builds need to make use of
Darwin9 crts (for exes, dylibs and bundles).  This adds the
change to cater for bundles.

gcc/ChangeLog:

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

* config/darwin.h (DARWIN_EXTRA_SPECS): Add new
bundle spec. (DARWIN_BUNDLE1_SPEC): New.
(STARTFILE_SPEC): Use darwin bundle spec.
* config/rs6000/darwin.h (DARWIN_BUNDLE1_SPEC): New.
(DARWIN_DYLIB1_SPEC): Delete duplicate.

From-SVN: r279393