Commit Graph

177238 Commits

Author SHA1 Message Date
Arnaud Charlet 6e063ac388 [Ada] AI12-0226 Make objects more consistent
2020-06-08  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* sem_ch8.adb (Analyze_Object_Renaming): Simplify code by moving
	many special cases to Is_Object_Reference and removing others by
	only checking renamings coming from sources.
	* sem_util.adb (Is_Object_Reference): Update for AI12-0226 and
	add more regular handling of 'Priority. Remove special cases no
	longer needed now that we are only checking renamings coming
	from sources.
2020-06-08 03:50:56 -04:00
Claire Dross ae9293fb8e [Ada] Silence spurious warning on instances of formal vectors
2020-06-08  Claire Dross  <dross@adacore.com>

gcc/ada/

	* libgnat/a-cofove.adb (Insert_Space): The computation of Index
	generates a spurious compiler warning about a value not being in
	range for a statically dead branch.  Silence it using pragma
	Warnings.
2020-06-08 03:50:55 -04:00
Bob Duff d2f7fa08bd [Ada] gnatbind: Deterministic No_Entry_Calls_In_Elaboration_Code messages
2020-06-08  Bob Duff  <duff@adacore.com>

gcc/ada/

	* bindo-graphs.adb (function Add_Edge): Rename
	Add_Edge_With_Return to Add_Edge; we can tell it returns because
	it's a function, and overloading seems appropriate in this case.
	If Activates_Task=True, and we're not going to add a new edge
	because an existing Pred-->Succ edge already exists, then set
	Activates_Task to True on the preexisting edge.  This ensures
	that the message:

	info: use pragma Restrictions (No_Entry_Calls_In_Elaboration_Code)

	appears when appropriate, no matter in what order the edges
	happened to be processed.
	(procedure Add_Edge): Remove redundant assertions.
	(Activates_Task): Other kinds of edges can have
	Activates_Task=True.  For example, if we had a With_Edge and
	then an Invocation_Edge with Activates_Task=True, then the
	With_Edge has Activates_Task set to True.
	(Add_Edge_Kind_Check): New procedure to prevent other bugs of
	this nature. For example, if we were to sometimes call Add_Edge
	for a Spec_Before_Body_Edge followed by Add_Edge for a
	With_Edge, and sometimes in the other order, that would cause a
	similar bug to what we're fixing here.
	(Set_Is_Recorded_Edge): Val parameter is not used. Get rid of
	it.
	(Set_Activates_Task): New procedure to set the Activates_Task flag.
	* bindo-graphs.ads (Library_Graph_Edge_Kind): Reorder the
	enumeration literals to facilitate Add_Edge_Kind_Check.
	* ali.adb (Known_ALI_Lines): The comment about "still available"
	was wrong. Fix that by erasing the comment, and encoding the
	relevant information in real code. Take advantage of Ada's full
	coverage rules by removing "others =>".  Also DRY.
2020-06-08 03:50:54 -04:00
Ed Schonberg 2f7294f23e [Ada] Ada_2020: shared variable control aspects on formal derived types
2020-06-08  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* par-ch12.adb (P_Formal_Derived_Type_Definition): Handle
	properly formal derived types that include aspect
	specifications, so that the "with" keyword appears twice in the
	formal type declaration.
	* sem_ch13.adb (Has_Generic_Parent): Return true if the type
	itself is a generic formal.
2020-06-08 03:50:53 -04:00
Dmitriy Anisimkov 8472d81ea0 [Ada] Fix socket timeout correction for Windows Server 2019 case
2020-06-08  Dmitriy Anisimkov  <anisimko@adacore.com>

gcc/ada/

	* socket.c (__gnat_minus_500ms): Remove
	IsWindowsVersionOrGreater from condition.
2020-06-08 03:50:52 -04:00
Claire Dross 54c1fdb62b [Ada] Add Depends contracts to Delete procedures of formal containers
2020-06-08  Claire Dross  <dross@adacore.com>

gcc/ada/

	* libgnat/a-cfdlli.ads, libgnat/a-cfhama.ads,
	libgnat/a-cfhase.ads, libgnat/a-cforma.ads, libgnat/a-cforse.ads
	(Delete): Add Depends contract.
2020-06-08 03:50:52 -04:00
Arnaud Charlet 9490fd58a8 [Ada] AI12-0309 Missing checks for pragma Suppress
2020-06-08  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* snames.ads-tmpl (Name_Program_Error_Check,
	Name_Tasking_Check): New constants.
	* types.ads (Program_Error_Check, Tasking_Check): New constants.
	(All_Checks): Update accordingly.
2020-06-08 03:50:51 -04:00
GCC Administrator 53d461e4e0 Daily bump. 2020-06-08 00:16:23 +00:00
Iain Buclaw 0a2ee4099d d: Merge upstream dmd 73d8e2fec.
Renames the enum PROTKIND to Prot::Kind, updates all uses of the
original enum accordingly.

gcc/d/ChangeLog:

	* dmd/MERGE: Merge upstream dmd 73d8e2fec.
	* decl.cc (get_symbol_decl): Use new Prot::Kind enum.
	* modules.cc (get_internal_fn): Likewise.
2020-06-08 00:10:11 +02:00
Uros Bizjak f08995eefb i386: Improve expansion of __builtin_parity
GCC currently hides the shift and xor reduction inside a backend
specific UNSPEC PARITY, making it invisible to the RTL optimizers until
very late during compilation.  It is normally reasonable for the
middle-end to maintain wider mode representations for as long as possible
and split them later, but this only helps if the semantics are visible
at the RTL-level (to combine and other passes), but UNSPECs are black
boxes, so in this case splitting early (during RTL expansion) is a
better strategy.

It turns out that that popcount instruction on modern x86_64 processors
has (almost) made the integer parity flag in the x86 ALU completely
obsolete, especially as POPCOUNT's integer semantics are a much better
fit to RTL.  The one remaining case where these transistors are useful
is where __builtin_parity is immediately tested by a conditional branch,
and therefore the result is wanted in a flags register rather than as
an integer.  This case is captured by two peephole2 optimizations in
the attached patch.

2020-06-07  Roger Sayle  <roger@nextmovesoftware.com>

gcc/ChangeLog:

	* config/i386/i386.md (paritydi2, paritysi2): Expand reduction
	via shift and xor to an USPEC PARITY matching a parityhi2_cmp.
	(paritydi2_cmp, paritysi2_cmp): Delete these define_insn_and_split.
	(parityhi2, parityqi2): New expanders.
	(parityhi2_cmp): Implement set parity flag with xorb insn.
	(parityqi2_cmp): Implement set parity flag with testb insn.
	New peephole2s to use these insns (UNSPEC PARITY) when appropriate.

gcc/testsuite/ChangeLog:

	* gcc.target/i386/parity-3.c: New test.
	* gcc.target/i386/parity-4.c: Likewise.
	* gcc.target/i386/parity-5.c: Likewise.
	* gcc.target/i386/parity-6.c: Likewise.
	* gcc.target/i386/parity-7.c: Likewise.
	* gcc.target/i386/parity-8.c: Likewise.
	* gcc.target/i386/parity-9.c: Likewise.
2020-06-07 22:09:49 +02:00
Iain Buclaw fced594b31 d: Merge upstream dmd 108ca1bcd.
Renames OutBuffer::peekString to OutBuffer::peekChars, and
OutBuffer::extractString to OutBuffer::extractChars.  All callers have
been updated as appropriate.

Reviewed-on: https://github.com/dlang/dmd/pull/11247

gcc/d/ChangeLog:

	* dmd/MERGE: Merge upstream dmd 108ca1bcd.
	* d-diagnostic.cc (expand_d_format): Adjust to use extractChars().
	* d-frontend.cc (Loc::toChars): Likewise.
	* d-lang.cc (deps_write): Likewise.
	(d_parse_file): Likewise.
	* decl.cc (d_mangle_decl): Likewise.
	* intrinsics.cc (maybe_set_intrinsic): Likewise.
2020-06-07 19:44:20 +02:00
Iain Buclaw c3a2ba10b2 d: Merge upstream dmd b0df0e982
Adds a struct ParameterList to encapulate parameter and vararg
information in the front-end.

Reviewed-on: https://github.com/dlang/dmd/pull/11226

gcc/d/ChangeLog:

	* dmd/MERGE: Merge upstream dmd b0df0e982.
	* d-builtins.cc (build_frontend_type): Use VarArg for varargs_p.
	* d-codegen.cc (declaration_type): Call TypeFunction::create with
	argument VARARGnone.
	(parameter_type): Likewise.
	(d_build_call): Use new field names and member functions.
	* d-target.cc (Target::cppParameterType): Call TypeFunction::create
	with argument VARARGnone.
	* types.cc (TypeVisitor::visit (TypeFunction *): Use new field names
	and member functions.
2020-06-07 16:50:46 +02:00
Harald Anlauf 5aaccde3db PR fortran/95091 - Buffer overflows with submodules and long symbols
Add cast to fix bootstrap error with -Werror=sign-compare.

gcc/fortran/
	PR fortran/95091
	* class.c (gfc_hash_value): Add cast.
2020-06-07 16:43:12 +02:00
Iain Buclaw 761306fc5e d: Merge upstream dmd 1831b24ff.
Converts some global and param fields from pointers to value types.

Reviewed-on: https://github.com/dlang/dmd/pull/11245

gcc/d/ChangeLog:

	* dmd/MERGE: Merge upstream dmd 1831b24ff.
	* d-lang.cc (d_init_options): Remove initialization of updated fields.
	(d_handle_option): Adjust for new field types.
2020-06-07 16:39:39 +02:00
Harald Anlauf b342cfd648 PR fortran/95091 - Buffer overflows with submodules and long symbols
With submodules, name mangling results in long internal symbols.  This
requires adjustment of the sizes of temporaries to avoid buffer overflows.

2020-06-07  Harald Anlauf  <anlauf@gmx.de>

gcc/fortran/
	PR fortran/95091
	* class.c (get_unique_type_string, gfc_hash_value): Enlarge
	buffers, and check whether the strings returned by
	get_unique_type_string() fit.
2020-06-07 14:47:24 +02:00
Iain Buclaw d8930b1387 d: Merge upstream dmd cef1e7991.
Adds a DString type, a struct that has a compatible layout with D
strings.  Many parameters in the Global struct have been switched over
to this type, and users of these params have been adjust to use the
length or ptr field as appropriate.

gcc/d/ChangeLog:

	* dmd/MERGE: Merge upstream dmd cef1e7991.
	* d-lang.cc (d_parse_file): Adjust for new field types.
2020-06-07 14:16:33 +02:00
guojiufu 557a40f599 rs6000: allow cunroll to grow size according to -funroll-loop or -fpeel-loops
Previously, flag_unroll_loops was turned on at -O2 implicitly.  This
also turned on cunroll with allowance size increasing, and cunroll
will unroll/peel the loop even the loop is complex like code in PR95018.
With this patch, size growth for cunroll is allowed only for if -funroll-loops
or -fpeel-loops or -O3 is specified explicitly.

gcc/ChangeLog
2020-06-07  Jiufu Guo  <guojiufu@linux.ibm.com>

	PR target/95018
	* config/rs6000/rs6000.c (rs6000_option_override_internal):
	Override flag_cunroll_grow_size.
2020-06-07 17:35:01 +08:00
guojiufu 71489d8e75 Introduce flag_cunroll_grow_size for cunroll
Currently GIMPLE complete unroller(cunroll) is checking
flag_unroll_loops and flag_peel_loops to see if allow size growth.
Beside affects curnoll, flag_unroll_loops also controls RTL unroler.
To have more freedom to control cunroll and RTL unroller, this patch
introduces flag_cunroll_grow_size.  With this patch, we can control
cunroll and RTL unroller indepently.

gcc/ChangeLog
2020-06-07  Jiufu Guo  <guojiufu@linux.ibm.com>

	* common.opt (flag_cunroll_grow_size): New flag.
	* toplev.c (process_options): Set flag_cunroll_grow_size.
	* tree-ssa-loop-ivcanon.c (pass_complete_unroll::execute):
	Use flag_cunroll_grow_size.
2020-06-07 17:35:01 +08:00
Thomas Koenig 905ba62ec9 Added test case for a PR which has been fixed in the meantime.
gcc/testsuite/ChangeLog:

	PR tree-optimization/50439
	* gfortran.dg/loop_interchange_2.f: New test.
2020-06-07 10:45:10 +02:00
GCC Administrator 8f94b078cc Daily bump. 2020-06-07 00:16:19 +00:00
Jan Hubicka eca7a60bd2 Fix ICE in ODR enum streaming [PR95548]
gcc/ChangeLog:

2020-06-06  Jan Hubicka  <hubicka@ucw.cz>

	PR lto/95548
	* ipa-devirt.c (struct odr_enum_val): Turn values to wide_int.
	(ipa_odr_summary_write): Update streaming.
	(ipa_odr_read_section): Update streaming.

gcc/testsuite/ChangeLog:

2020-06-06  Jan Hubicka  <hubicka@ucw.cz>

	* g++.dg/torture/pr95548.C: New test.
2020-06-06 22:19:46 +02:00
Max Filippov 1ca05dead0 MAINTAINERS: Add myself as xtensa port maintainer
2020-06-06  Max Filippov  <jcmvbkbc@gmail.com>

	* MAINTAINERS: Add myself as xtensa port maintainer.
2020-06-06 01:26:56 -07:00
Alexandre Oliva 2e6a6644db [PR95456] avoid memcpy (_, NULL, 0) in gcc.c
Some newly-added code in gcc.c might call memcpy with a NULL source
pointer and zero-length inputs.  Avoid such calls by rearranging the
code a little.


for  gcc/ChangeLog

	PR driver/95456
	* gcc.c (do_spec_1): Don't call memcpy (_, NULL, 0).
2020-06-05 22:31:19 -03:00
GCC Administrator 1a59f3db4a Daily bump. 2020-06-06 00:16:29 +00:00
Iain Buclaw 5bc13e5217 d: Merge upstream dmd 740f3d1ea.
Backports the conversion of the parameter fields debugids and versionids
to Identifiers.  The idea is that Identifiers should be used instead of
C strings where ever possible.

gcc/d/ChangeLog:

	* dmd/MERGE: Merge upstream dmd 740f3d1ea.
	* d-lang.cc (d_handle_option): Use new fields to save debug and
	version levels passed over command-line.
	(d_post_options): Add them to front-end here.
2020-06-05 23:14:21 +02:00
Martin Sebor 3a73a6adb6 Temporarily remove an unintentionally commited test.
gcc/testsuite/ChangeLog:
	* g++.dg/warn/Wnonnull5.C: Temporarily remove.
2020-06-05 15:02:09 -06:00
Marek Polacek cecc73af49 c++: Make braced-init-list as template arg work with aggr init [PR95369]
Barry pointed out to me that our braced-init-list as a template-argument
extension doesn't work as expected when we aggregate-initialize.  Since
aggregate list-initialization is a user-defined conversion sequence, we
allow it as part of a converted constant expression.

Co-authored-by: Jason Merrill <jason@redhat.com>

gcc/cp/ChangeLog:

	PR c++/95369
	* call.c (build_converted_constant_expr_internal): Allow
	list-initialization.

gcc/testsuite/ChangeLog:

	PR c++/95369
	* g++.dg/cpp2a/nontype-class38.C: New test.
2020-06-05 15:51:08 -04:00
Harald Anlauf bcd96c9cce PR fortran/95530, PR fortran/95537 - Buffer overflows with long symbols
The testcases for PR95090 and PR95106 trigger buffer overflows with long
symbols that were found with an instrumented compiler.  Enlarge the
affected buffers, and add checks that the buffers will suffice.

2020-06-05  Harald Anlauf  <anlauf@gmx.de>

gcc/fortran/
	PR fortran/95530
	PR fortran/95537
	* decl.c (gfc_match_decl_type_spec): Enlarge buffer, and enhance
	string copy to detect buffer overflow.
	* gfortran.h (gfc_common_head): Enlarge buffer.
	* trans-common.c (finish_equivalences): Enhance string copy to
	detect buffer overflow.
2020-06-05 20:30:34 +02:00
Iain Sandoe 608832716e coroutines: co_returns are statements, not expressions.
This corrects an error in the CO_RETURN_EXPR tree
class.

gcc/cp/ChangeLog:

	* cp-tree.def (CO_RETURN_EXPR): Correct the class
	to use tcc_statement.
2020-06-05 19:27:21 +01:00
Mark Wielaard 1c7bcefbc9 diagnostics: Consistently add fixit hint for implicit builtin declaration
There are two warnings that might trigger when a builtin function is
used but not declared yet. Both called through implicitly_declare in
c-decl. The first in implicit_decl_warning does warn for builtins,
but does not add a fixit hint for them (only for non-builtins when
a header is suggested through lookup_name_fuzzy). This warning is
guarded by -Wimplicit-function-declaration. The second warning, which
does include a fixit hint if possible, is given when the implicit
builtin declaration has an incompatible signature. This second warning
cannot be disabled.

This setup means that you only get a fixit-hint for usage of builtin
functions where the implicit signature is different than the actual
signature of the builtin. No fixit hints with header suggestions
are ever generated for builtins like abs, isdigit or putchar.

It seems more consistent to always generate a fixit-hint if possible
for the -Wimplicit-function-declaration warning. And for the second
warning to make it depend on -Wbuiltin-declaration-mismatch like
other warnings about builtin declaration mismatches.

Include a new test to show we get fixit-hints for abs, isdigit and
putchar now. Some small tweaks to existing tests to show the
effect of -Wno-builtin-declaration-mismatch with this change. And
a testcase to show that #pragma GCC diagnostic ignored now works.

gcc/c/ChangeLog:

	* c-decl.c (implicit_decl_warning): When warned and olddecl is
	an undeclared builtin, then add a fixit header hint, if found.
	(implicitly_declare): Add OPT_Wbuiltin_declaration_mismatch to
	warning_at about implicit builtin declaration type mismatch.

gcc/testsuite/ChangeLog:

	* gcc.dg/missing-header-fixit-3.c: Add
	-Wno-implicit-function-declaration.
	* gcc.dg/missing-header-fixit-4.c: Add new expected output.
	* gcc.dg/missing-header-fixit-5.c: New testcase.
	* gcc.dg/Wbuiltin-declaration-mismatch-ignore.c: Likewise.
2020-06-05 20:21:17 +02:00
Iain Buclaw 0cdc55f5ed d: Merge upstream dmd f5638c7b8.
Adds a CHECKENABLE enum, uses it for all contract parameters for
consistency in state checking.

gcc/d/ChangeLog:

	* dmd/MERGE: Merge upstream dmd f5638c7b8.
	* d-builtins.cc (d_init_versions): Use new CHECKENABLE enum.
	* d-codegen.cc (array_bounds_check): Likewise.
	(build_frame_type): Likewise.
	(get_frameinfo): Likewise.
	* d-lang.cc (d_init_options): Likewise.
	(d_init_options_struct): Don't initialize x_flag_bounds_check.
	(d_handle_option): Use new CHECKENABLE enum.
	(d_post_options): Likewise.  Set flag_bounds_check here.
	* expr.cc (ExprVisitor::visit(AssertExp *)): Use new CHECKENABLE enum.
2020-06-05 20:13:50 +02:00
Jason Merrill 5094c4400a c++: Fix pretty-print of pointer minus integer.
For whatever reason, GCC internally represents a pointer minus an integer as
a pointer plus a very large unsigned integer.  But exposing that to users is
unsightly, and it's easy enough to show the real value.

gcc/cp/ChangeLog:

	* error.c (dump_binary_op): Handle negative operand to
	POINTER_PLUS_EXPR.

gcc/c-family/ChangeLog:

	* c-pretty-print.c (pp_c_additive_expression): Handle negative
	operand to POINTER_PLUS_EXPR.

gcc/testsuite/ChangeLog:

	* g++.dg/cpp0x/constexpr-ptrsub2.C: New test.
2020-06-05 13:54:54 -04:00
Tom Tromey 640e05e02b fortran/95509 - fix spellcheck-operator.f90 regression
My earlier patch to add case handling to the spell checker caused a
Fortran regression.  I believe I must have misread the test results.

This patch fixes the problem by changing the cutoff.  I chose this
value because the previous patch effectively multiplied the result of
get_edit_distance by 2 (unless a case change is involved).

gcc/fortran/ChangeLog:

	PR fortran/95509
	* misc.c (gfc_closest_fuzzy_match): Update cutoff value
	computation.
2020-06-05 11:44:24 -06:00
Thomas Schwinge 1afc467256 [OpenACC 'exit data'] Strip 'GOMP_MAP_STRUCT' mappings
These are not itself necessary for OpenACC 'exit data' directives, and are
skipped over (now) in libgomp.  We might as well not emit them to start with,
in line with the equivalent OpenMP directive.  We keep the no-op handling in
libgomp for the reason of backward compatibility.

	gcc/
	* gimplify.c (gimplify_adjust_omp_clauses): Remove
	'GOMP_MAP_STRUCT' mapping from OpenACC 'exit data' directives.
	gcc/testsuite/
	* c-c++-common/goacc/struct-enter-exit-data-1.c: New file.
	libgomp/
	* oacc-mem.c (goacc_exit_data_internal) <GOMP_MAP_STRUCT>: Explain
	special handling.

Co-Authored-By: Julian Brown <julian@codesourcery.com>
2020-06-05 18:04:13 +02:00
Thomas Schwinge 1809628fcf [OpenACC 'exit data'] Simplify 'GOMP_MAP_STRUCT' handling
libgomp/
	* oacc-mem.c (goacc_exit_data_internal) <GOMP_MAP_STRUCT>:
	Simplify.

Co-Authored-By: Julian Brown <julian@codesourcery.com>
2020-06-05 18:04:12 +02:00
Julian Brown 9643f5bbe2 Add 'libgomp.oacc-c-c++-common/struct-copyout-{1,2}.c'
libgomp/
	* testsuite/libgomp.oacc-c-c++-common/struct-copyout-1.c: New test.
	* testsuite/libgomp.oacc-c-c++-common/struct-copyout-2.c: New test.

Reviewed-by: Thomas Schwinge <thomas@codesourcery.com>
2020-06-05 18:04:12 +02:00
Iain Buclaw 5905cbdbcf d: Merge upstream dmd 56f0a65c4.
Updates the Target interface, removing static from all members, so all
field accesses and member function calls go through a single global
'target'.  Information relating to extern ABI are now in TargetC,
TargetCPP, and TargetObjC for each supported language respectively.

Reviewed-on: https://github.com/dlang/dmd/pull/11228

gcc/d/ChangeLog:

	* dmd/MERGE: Merge upstream dmd 56f0a65c4.
	* d-builtins.cc (build_frontend_type): Remove static.
	(d_build_builtins_module): Use target.va_listType() to get front-end
	type for va_list.
	(d_init_builtins): Move creation of va_list to Target::va_listType.
	* d-codegen.cc (build_interface_binfo): Use new target global.
	(build_vindex_ref): Likewise.
	(identity_compare_p): Likewise.
	* d-ctfloat.cc (CTFloat::parse): Likewise.
	* d-lang.cc (d_init): Likewise.
	* d-port.cc (Port::isFloat32LiteralOutOfRange): Likewise.
	(Port::isFloat64LiteralOutOfRange): Likewise.
	* d-target.cc (define_float_constants): Initialize constants through a
	reference, instead of setting globals.
	(Target::_init): Initialize new fields instead of setting globals.
	(Target::va_listType): Build front-end type from va_list_type_node.
	(Target::toCppMangle): Renamed to ...
	(TargetCPP::toMangle): ... this.
	(Target::cppTypeInfoMangle): Renamed to ...
	(TargetCPP::typeInfoMangle): ... this.
	(Target::cppTypeMangle): Renamed to ...
	(TargetCPP::typeMangle): this.
	(Target::cppParameterType): Renamed to ...
	(TargetCPP::parameterType): ... this.  Use target.va_listType() to get
	front-end type for va_list.
	(Target::cppFundamentalType): Renamed to ...
	(TargetCPP::fundamentalType): ... this.
	* d-tree.h (build_frontend_type): Declare.
	* decl.cc (base_vtable_offset): Use new target global.
	* typeinfo.cc (layout_classinfo_interfaces): Likewise.
	(layout_cpp_typeinfo): Likewise.
	* types.cc (valist_array_p): Use target.va_listType() to get front-end
	type for va_list.
	(layout_aggregate_type): Use new target global.
2020-06-05 17:52:57 +02:00
Martin Sebor 300452d7bf Adjust text of expected warnings to g:b825a22890740f341eae566af27e18e528cd29a7.
gcc/testsuite/ChangeLog:
	* c-c++-common/goacc/uninit-use-device-clause.c: Adjust.
	* c-c++-common/pr59223.c: Same.
	* g++.dg/warn/Wnonnull5.C: Same.
	* gcc.dg/pr59924.c: Same.
	* gcc.dg/ubsan/pr81981.c: Same.
	* gcc.dg/ubsan/pr89284.c: Same.
	* gfortran.dg/goacc/uninit-use-device-clause.f95: Same.
2020-06-05 09:36:29 -06:00
Arnaud Charlet 89b49a963c [Ada] Replace ? by ?? in Error_Msg_N
2020-06-05  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* sem_prag.adb (Validate_Compile_Time_Warning_Or_Error): Use ??.
2020-06-05 08:17:56 -04:00
Arnaud Charlet f67a6e93a1 [Ada] Update comments wrt Ada 83 handling
2020-06-05  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* cstand.adb (Create_Standard): Update comments.
2020-06-05 08:17:56 -04:00
Arnaud Charlet 4ccf713e54 [Ada] Support 'Reduce under -gnatX
2020-06-05  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* scng.adb (Scan): Fix typo to take into account all future
	versions of Ada.
	* sem_attr.ads (Attribute_Impl_Def): Add Attribute_Reduce for
	now.
	* sem_attr.adb (Analyze_Attribute): Only allow 'Reduce under
	-gnatX.
	* snames.ads-tmpl (Name_Reduce): Update comment.
2020-06-05 08:17:55 -04:00
Thomas Quinot 3af132b801 [Ada] Add note about gnatcov reliance on thunk names
2020-06-05  Thomas Quinot  <quinot@adacore.com>

gcc/ada/

	* exp_disp.adb (Expand_Interface_Thunk): Add comment about
	gnatcov reliance on specific name used for thunks.
2020-06-05 08:17:54 -04:00
Ed Schonberg faf2500800 [Ada] Subtype inherits Atomic flag from base type
2020-06-05  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* sem_ch3.adb (Analyze_Subtype_Declaration): For scalar types,
	and for subtype declarations without a constraint, subtype
	inherits Atomic flag from base type.
2020-06-05 08:17:53 -04:00
Piotr Trojanek bf44027a46 [Ada] Fix punctuation in description of Enum_Rep attribute
2020-06-05  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

	* doc/gnat_rm/implementation_defined_attributes.rst (Enum_Rep):
	Remove extra colon.
	* gnat_rm.texi: Regenerate.
2020-06-05 08:17:52 -04:00
Eric Botcazou 32115be843 [Ada] Make the Has_Dynamic_Range_Check flag obsolete
2020-06-05  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* atree.adb (New_Copy): Clear Has_Dynamic_Range_Check on
	subexpression nodes.
	* checks.adb (Append_Range_Checks): Assert that the node
	doesn't have the Has_Dynamic_Range_Check flag set.
	(Insert_Range_Checks): Likewise.
	* exp_ch3.adb (Expand_N_Subtype_Indication): Do not apply
	range checks for a full type or object declaration.
	* sem_ch3.ads: Move with and use clauses for Nlists to...
	(Process_Range_Expr_In_Decl): Change default to No_List for
	the Check_List parameter.
	* sem_ch3.adb: ...here.
	(Process_Range_Expr_In_Decl): Likewise.  When the insertion
	node is a declaration, only insert on the list if is present
	when the declaration involves discriminants, and only insert
	on the node when there is no list otherwise.
2020-06-05 08:17:51 -04:00
Piotr Trojanek 0ad46f0448 [Ada] Do not create an empty list of nodes that confuses GNATprove
2020-06-05  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

	* sem_aggr.adb (Resolve_Record_Aggregate): Create the
	N_Aggregate node with its Expressions field set to No_List and
	not to an empty list.
2020-06-05 08:17:51 -04:00
Dmitriy Anisimkov f8ca4dd657 [Ada] Optimize Normalize_Pathname
2020-06-05  Dmitriy Anisimkov  <anisimko@adacore.com>

gcc/ada/

	* libgnat/s-os_lib.adb (Is_Dirsep): Moved from Build_Path to
	package level to reuse.
	(Normalize_Pathname.Final_Value): Reduce 2 'if' statements to
	one.
	(Normalize_Pathname.Fill_Directory): New procedure instead of
	function Get_Directory. Remove slash to backslash conversion and
	drive letter uppercasing on Windows.
2020-06-05 08:17:50 -04:00
Arnaud Charlet c8e89a6de5 [Ada] Spurious assert failure in Walk_Library_Items
2020-06-05  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* sem.adb (Assert_Done): Relax check for main unit, as it was
	overzealous in the case of the main unit itself.
2020-06-05 08:17:49 -04:00
Piotr Trojanek 2db2527a8d [Ada] Use Is_Incomplete_Type instead of a low-level Ekind test
2020-06-05  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

	* exp_ch3.adb, sem_ch8.adb, sem_util.adb: Use Is_Incomplete_Type
	to make the code easier to read.
2020-06-05 08:17:48 -04:00
Piotr Trojanek 50554999f2 [Ada] Simplify iteration over components
2020-06-05  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

	* einfo.adb: Minor reformatting.
	* sem_util.adb (Has_Full_Default_Initialization,
	Is_Partially_Initialized_Type, Caller_Known_Size_Record,
	Large_Max_Size_Mutable): Iterate with
	First_Component/Next_Component; rename Ent to Comp.
2020-06-05 08:17:47 -04:00