Commit Graph

178041 Commits

Author SHA1 Message Date
Ed Schonberg
9b501e59d1 [Ada] Errors in handling of access_to_subprogram contracts
gcc/ada/

	* exp_ch3.adb (Build_Access_Subprogram_Wrapper_Body): Create
	proper subprogram specification for body, using names in the
	subprogram declaration but distinct entities.
	* exp_ch6.adb (Expand_Call): If this is an indirect call
	involving a subprogram wrapper, insert pointer parameter in list
	of actuals with a parameter association, not as a positional
	parameter.
2020-07-07 05:26:58 -04:00
Justin Squirek
7bf53b1a61 [Ada] Hang on conditional expression as actual
gcc/ada/

	* exp_ch6.adb (Expand_Branch): Verify the original node is a
	conditional expression before recursing further.
	(Insert_Level_Assign): Transform assertion into an explicit
	raise.
2020-07-07 05:26:58 -04:00
Steve Baird
1c4b5a795a [Ada] Simplify statically known Max_Size_In_Storage_Elements attribute in more cases
gcc/ada/

	* sem_attr.adb (Eval_Attribute): Generalize static evaluation of
	Size attribute references to also handle
	Max_Size_In_Storage_Elements references.
2020-07-07 05:26:58 -04:00
Javier Miranda
865ec5b024 [Ada] Ada2020: AI12-0198 potentially unevaluated components of arrays
gcc/ada/

	* sem_util.adb (Is_Potentially_Unevaluated): Code cleanup.
2020-07-07 05:26:57 -04:00
Eric Botcazou
451187a3e5 [Ada] Move generation of range checks for entry families to expander
gcc/ada/

	* checks.ads (Expander Routines): Update the description of the
	Do_Range_Check mechanism.
	* checks.adb (Selected_Range_Checks): Fix typo.
	* exp_ch9.adb: Add with and use clause for Checks.
	(Actual_Index_Expression): Generate a range check if requested.
	(Entry_Index_Expression): Likewise.
	* sem_attr.adb (Resolve_Attribute) <Attribute_Count>: Call
	Apply_Scalar_Range_Check instead of Apply_Range_Check.
	* sem_ch9.adb (Analyze_Accept_Statement): Likewise.
	* sem_res.adb (Resolve_Entry): Likewise, after having set the
	actual index type on the prefix of the indexed component.
	(Resolve_Indexed_Component): Remove useless conditional construct.
2020-07-07 05:26:57 -04:00
Piotr Trojanek
2e724314af [Ada] Freeze aspect expression relocated to pragma Precondition
gcc/ada/

	* contracts.adb (Analyze_Entry_Or_Subprogram_Contract,
	Process_Preconditions_For): Freeze expression that has been
	relocated to pragma Precondition, not the expression which is
	still in the aspect.
2020-07-07 05:26:57 -04:00
Arnaud Charlet
e378df6d39 [Ada] ACATS 4.1H - BC60005 - null exclusion matching for formal subprograms
gcc/ada/

	* sem_ch6.adb (Check_Conformance): Remove unnecessary (and
	wrong) code.
	* sem_ch8.adb (Check_Null_Exclusion): Post error at proper
	location.  Introduce new helper Null_Exclusion_Mismatch and fix
	implementation wrt formal subprograms used in generic bodies.
	(Analyze_Subprogram_Renaming): Fix missing setting of
	Error_Msg_Sloc.
	(Analyze_Object_Renaming): Replace "in Anonymous_Access_Kind" by
	Is_Anonymous_Access_Type.
	* sem_util.adb (Has_Null_Exclusion): Fix handling of
	N_Parameter_Specification.
	* sem_ch12.adb (Instantiate_Object): Replace "in
	Anonymous_Access_Kind" by Is_Anonymous_Access_Type.
2020-07-07 05:26:57 -04:00
Ed Schonberg
dae09f9b55 [Ada] Handle explicit dereferences in expression functions
gcc/ada/

	* freeze.adb (Freeze_Expr_Types): Freeze the designated type of
	the explicit dereference.
2020-07-07 05:26:56 -04:00
Javier Miranda
572fa852f2 [Ada] Ada2020: AI12-0198 potentially unevaluated components of arrays
gcc/ada/

	* sem_util.adb (Is_Potentially_Unevaluated): Protect reading
	attribute Etype.
2020-07-07 05:26:56 -04:00
Bob Duff
3a70a9811f [Ada] Use pragma Unsuppress in Time_IO
gcc/ada/

	* libgnat/g-catiio.adb (Value, Parse_ISO_8601): Unsuppress
	checks, and don't rely on 'Valid.
2020-07-07 05:26:56 -04:00
Arnaud Charlet
8deaec2952 [Ada] Add support for XDR streaming in the default runtime
gcc/ada/

	* Makefile.rtl: Remove dead code.
	* doc/gnat_ugn/building_executable_programs_with_gnat.rst:
	Document gnatbind -xdr switch.
	* gnat_ugn.texi: Regenerate.
2020-07-07 05:26:56 -04:00
Piotr Trojanek
31c1fdbe0d [Ada] Fix documentation of -gnatVa switch
gcc/ada/

	* doc/gnat_ugn/building_executable_programs_with_gnat.rst
	(Validity Checking): Add "p" to the list of switches enabled by
	-gnatVa.
	* gnat_ugn.texi: Regenerate.
2020-07-07 05:26:55 -04:00
Ghjuvan Lacambre
d4175ef48b [Ada] Ensure No_Specification_Of_Aspect forbids pragmas and repr. clauses
gcc/ada/

	* sem_ch13.adb (Analyze_Attribute_Definition_Clause): Add call
	to Check_Restriction_No_Specification_Of_Aspect.
	* sem_prag.adb (Analyze_Pragma): Likewise.
	* restrict.ads (Check_Restriction_No_Specification_Of_Aspect):
	Mention possible new node kinds in documentation.
	* restrict.adb (Check_Restriction_No_Specification_Of_Aspect):
	Retrieve aspect id from different fields if given node is an
	N_Pragma or an N_Attribute_Definition_Clause.
2020-07-07 05:26:55 -04:00
Gary Dismukes
58e07eaae4 [Ada] Checking type invariants on in params of procedures, not functions (AI12-0044)
gcc/ada/

	* contracts.adb (Add_Invariant_And_Predicate_Checks): Relax the
	condition for doing invariant checks so that in-mode parameters
	of procedures are also checked (required by AI05-0289, and
	restricted to procedures by AI12-0044). This is done in a
	procedure's nested postconditions procedure.
	* exp_ch6.adb (Expand_Actuals): Also perform postcall invariant
	checks for in parameters of procedures (but not functions).
	Moved invariant-checking code to end of Expand_Actuals
	(including the nested function Is_Public_Subp).
2020-07-07 05:26:55 -04:00
Piotr Trojanek
845c49360b [Ada] Change local object from variable to constant
gcc/ada/

	* sem_aggr.adb (Resolve_Delta_Array_Aggregate): Make Index_Type
	a constant.
2020-07-07 05:26:54 -04:00
Piotr Trojanek
c78efe921c [Ada] Fix expansion of delta aggregates with slices
gcc/ada/

	* exp_aggr.adb (Expand_N_Delta_Aggregate): Use type of the delta
	base expression for the anonymous object of the delta aggregate.
2020-07-07 05:26:54 -04:00
Javier Miranda
dab6432039 [Ada] Ada2020: AI12-0198 potentially unevaluated components of arrays
gcc/ada/

	* sem_util.ads (Interval_Lists): Reordering routine.
	* sem_util.adb (Interval_Lists): Reordering routines to keep
	them alphabetically ordered.
2020-07-07 05:26:54 -04:00
Piotr Trojanek
4ea624b0f9 [Ada] Remove extra checks for non-static context from resolving 'Update
gcc/ada/

	* sem_attr.adb (Resolve_Attribute): Do not call
	Check_Non_Static_Context.
2020-07-07 05:26:53 -04:00
Arnaud Charlet
1948dcab16 [Ada] Spurious elaboration warnings with -gnatc and null procedures
gcc/ada/

	* sem_elab.adb (Is_Guaranteed_ABE): Take into account null
	procedures.
2020-07-07 05:26:53 -04:00
Piotr Trojanek
62226c3554 [Ada] Minor cleanup with Is_Assignable
gcc/ada/

	* sem_ch5.adb (Analyze_Assignment): Reuse Is_Assignable.
2020-07-07 05:26:53 -04:00
Piotr Trojanek
db290a9e37 [Ada] Set range checks for for 'Update on arrays in GNATprove expansion
gcc/ada/

	* exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Add scalar
	range checks for 'Update on arrays just like for 'Update on
	records.
	* sem_attr.adb (Analyze_Array_Component_Update): Do not set
	range checks for single-dimensional arrays.
	(Resolve_Attribute): Do not set range checks for both single-
	and multi- dimensional arrays.
2020-07-07 05:26:53 -04:00
Piotr Trojanek
c0ceffbebd [Ada] Style fixes in the description of Analysis-Resolution-Expansion
gcc/ada/

	* sem.ads (Sem): Fix description.
2020-07-07 05:26:52 -04:00
Piotr Trojanek
aeef2df937 [Ada] Allow aspect Relaxed_Initialization on protected entries
gcc/ada/

	* sem_ch13.adb (Analyze_Relaxed_Parameter): Fix for protected
	entries.
2020-07-07 05:26:52 -04:00
Qian Jianhua
0ac15b175a Fix a typo in doc/generic.texi
gcc/
	* doc/generic.texi: Fix typo.
2020-07-07 10:12:07 +01:00
Kaipeng Zhou
7ab4f58a85 Pass correct parameters to c_parser_do_statement.
gcc/c/ChangeLog:

	* c-parser.c (c_parser_statement_after_labels): Pass correct
	parameters to c_parser_do_statement.
2020-07-07 10:07:28 +01:00
Jonathan Wakely
92cae0785e libstdc++: Add PR number to ChangeLog entry and fix typos 2020-07-07 08:23:12 +01:00
Alexandre Oliva
a759bfc7cf
accept <case> and [cond] in ChangeLog
Only '(' and ':' currently terminate file lists in ChangeLog entries
in the ChangeLog parser.  This rules out such legitimate entries as:

* filename <CASE>:
* filename [COND]:

This patch extends the ChangeLog parser to recognize these forms.

for  contrib/ChangeLog

	* gcc-changelog/git_commit.py: Support CASE and COND.
	* gcc-changelog/test_patches.txt: Add test.
	* gcc-changelog/test_email.py: Add test.

Co-Authored-By: Martin Liska <mliska@suse.cz>
2020-07-07 09:05:10 +02:00
Richard Biener
c50502ca4e fix LTO streaming order dependence on randomness
This fixes the sorting of to copy symbols in lto_output introduced
with GCC 10 to not depend on the actual values of the randomness
we append to LTO section names but instead on the order they appear
in the unsorted array.

This fixed observed debug info differences due to tree merging
prevailing different early debug pointers.

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

	* lto-streamer-out.c (cmp_symbol_files): Use the computed
	order map to sort symbols from the same sub-file together.
	(lto_output): Compute a map of sub-file to an order number
	it appears in the symbol output array.
2020-07-07 08:43:23 +02:00
GCC Administrator
4077d74c6d Daily bump. 2020-07-07 00:16:40 +00:00
Martin Sebor
67a493a0b9 Exclude calls to variadic lambda stubs from -Wnonnull checking (PR c++/95984).
Resolves:
PR c++/95984 - Internal compiler error: Error reporting routines re-entered in -Wnonnull on a variadic lamnda
PR c++/96021 - missing -Wnonnull passing nullptr to a nonnull variadic lambda

gcc/c-family/ChangeLog:

	PR c++/95984
	* c-common.c (check_function_nonnull): Avoid checking syntesized calls
	to stub lambda objects with null this pointer.
	(check_nonnull_arg): Handle C++ nullptr.

gcc/cp/ChangeLog:

	PR c++/95984
	* call.c (build_over_call): Check calls only when tf_warning is set.

gcc/testsuite/ChangeLog:

	PR c++/95984
	* g++.dg/warn/Wnonnull6.C: New test.
2020-07-06 15:23:37 -06:00
Jonathan Wakely
6e1c9715b3 libstdc++: Cleanup whitespace and type trait usage in <optional>
This makes the formatting in <optional> consistent and also removes
redundant && tokens from template arguments for traits like
is_constructible and is_convertible.

libstdc++-v3/ChangeLog:

	* include/std/optional (_Optional_payload_base, _Optional_base)
	(optional, __optional_hash_call_base): Adjust whitespace and
	other formatting. Remove redundant && tokens on template
	arguments to type traits.
2020-07-06 21:55:50 +01:00
Jonathan Wakely
bcfe4681f9 libstdc++: Constrain std::make_optional
The standard rquires that std::make_optional is constrained similarly to
the std::optional constructors, which our implementation fails to do.

As a conforming extension this also adds a noexcept-specifier to each
std::make_optional overload.

libstdc++-v3/ChangeLog:

	* include/std/optional (make_optional): Add enable_if
	constraints and noexcept-specifier to each overload.
	* testsuite/20_util/optional/make_optional-2.cc: New test.
2020-07-06 21:54:59 +01:00
Jonathan Wakely
8992cd1892 libstdc++: Add noexcept to std::optional initialization (PR 96036)
libstdc++-v3/ChangeLog:

	PR libstdc++/96036
	* include/std/optional (optional): Add noexcept-specifier to
	every constructor, assignment operator, emplace function and
	dereference operator.
	* testsuite/20_util/optional/assignment/noexcept.cc: New test.
	* testsuite/20_util/optional/cons/noexcept.cc: New test.
2020-07-06 21:54:12 +01:00
Nathan Sidwell
e88218fd5a c++: Always use pushdecl for exception library helpers
The ABI exception helpers like __throw were being created by first
looking for them, and then adding if not found.  Primarily because
libitm wasn't declaring them with the correct exception specifiers.  I
fixed libitm a while back, so let's just use push_library_fn and let
the symbol table machinery deal with duplicates.  push_library_fn was
making the assumtion there wasn't already a decl available, by always
returning the new decl.  Bad things would happen if there was a
duplicate, because duplicate_decls explicitly gcc_frees the new decl.
Fixed by having it return whatever pushdecl returns.

	gcc/cp/
	* decl.c (push_library_fn): Return the decl pushdecl_toplevel returns.
	* except.c (verify_library_fn): Replace with ...
	(declare_library_fn_1): ... this fn.  Always push the fn.
	(declare_library_fn): Call it.
	(build_throw): Call declare_library_fn_1.
	gcc/testsuite/
	* g++.dg/eh/builtin10.C: Adjust expected errors.
	* g++.dg/eh/builtin11.C: Likewise.
	* g++.dg/eh/builtin5.C: Likewise.
	* g++.dg/eh/builtin6.C: Likewise.
	* g++.dg/eh/builtin7.C: Likewise.
	* g++.dg/eh/builtin9.C: Likewise.
	* g++.dg/parse/crash55.C: Likewise.
2020-07-06 10:02:46 -07:00
Harald Anlauf
f2151227df PR fortran/95980 - ICE on using sync images with -fcheck=bounds
In SELECT TYPE, the argument may be an incorrectly specified unlimited
polymorphic variable.  Avoid a NULL pointer dereference for clean error
recovery.

gcc/fortran/
	PR fortran/95980
	* match.c (copy_ts_from_selector_to_associate, build_class_sym):
	Distinguish between unlimited polymorphic and ordinary variables
	to avoid NULL pointer dereference.
	* resolve.c (resolve_select_type):
	Distinguish between unlimited polymorphic and ordinary variables
	to avoid NULL pointer dereference.
2020-07-06 19:00:10 +02:00
Harald Anlauf
824084e72e PR fortran/95709 - ICE in gfc_resolve_code, at fortran/resolve.c:11807
The legacy "assigned GOTO" accepts only scalar integer variables.
Check for proper arguments.

gcc/fortran/
	PR fortran/95709
	* resolve.c (gfc_resolve_code): Check for valid arguments to
	assigned GOTO.
2020-07-06 18:52:39 +02:00
Jonathan Wakely
0e5abeb0cb libstdc++: Fix -Wmismatched-tags warnings (PR 96063)
libstdc++-v3/ChangeLog:

	* include/bits/fs_dir.h: Use consistent tag in class-head.
	* include/bits/localefwd.h: Likwise.
	* include/bits/regex.h: Likwise.
	* include/bits/stl_map.h: Likwise.
	* include/bits/stl_multimap.h: Likwise.
	* include/bits/stl_multiset.h: Likwise.
	* include/bits/stl_set.h: Likwise.
	* include/std/complex: Likwise.
	* include/std/functional: Likwise.
	* include/std/future: Likwise.
	* include/std/system_error: Likwise.
	* include/std/thread: Likwise.
	* include/std/tuple: Likwise.
	* include/std/type_traits: Likwise.
	* include/std/valarray: Likwise.
2020-07-06 17:12:29 +01:00
Jonathan Wakely
92414bb6b0 c++: Allow empty-declaration in C++11 and later (PR 96068)
Since C++11 a semim-colon on its own at namespace scope is not invalid,
so do not give a pedantic diagnostic about it.

gcc/cp/ChangeLog:

	PR c++/96068
	* parser.c (cp_parser_toplevel_declaration): Only do pedwarn for
	empty-declaration in C++98.

gcc/testsuite/ChangeLog:

	* g++.old-deja/g++.bugs/900404_04.C: Add c++98_only selector to
	dg-error for extra ';'.
	* g++.old-deja/g++.law/missed-error2.C: Likewise.
2020-07-06 17:12:23 +01:00
Richard Biener
dccbf1e2a6 tree-optimization/96075 - fix bogus misalignment calculation
This fixes bogus misalignment calculation for negative steps
since an assertion a previous comment indicated no longer holds:

      /* DR_STEP(dr) is the same as -TYPE_SIZE of the scalar type,
         otherwise we wouldn't be here.  */

Thus the following replaces DR_STEP by -TYPE_SIZE.

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

	PR tree-optimization/96075
	* tree-vect-data-refs.c (vect_compute_data_ref_alignment): Use
	TYPE_SIZE_UNIT of the vector component type instead of DR_STEP
	for the misalignment calculation for negative step.

	* gcc.dg/vect/slp-46.c: New testcase.
2020-07-06 16:30:18 +02:00
Piotr Trojanek
a9e48b0d47 [Ada] Avoid forced loading of System.Priority in CodePeer mode
gcc/ada/

	* checks.adb (Apply_Scalar_Range_Check): Use Is_RTE.
2020-07-06 07:35:34 -04:00
Bob Duff
90a1abf304 [Ada] Time_IO.Image: Allow printing the time zone
gcc/ada/

	* libgnat/g-catiio.ads: Document newly supported format.  Add
	ISO_Time constant, for convenience.
	* libgnat/g-catiio.adb (Image_Helper): New helper function to do
	all the formatting work, called by the two exported Image
	functions.  Add support for "%:::z" here. Add a Time_Zone
	parameter used by the "%:::z" processing. This parameter is not
	used for the actual time zone computations; local time is always
	used for that, for ease of implementation reasons.  It would
	make sense to use Append throughout this function, but that's a
	cleanup for another day.
	(Image): Modify these to pass the local time zone, or the
	specified time zone, as appropriate.
2020-07-06 07:35:33 -04:00
Bob Duff
d868231706 [Ada] Time_IO.Value: Allow subseconds and time zones together
gcc/ada/

	* libgnat/g-catiio.ads: Change the regular expression that
	documents the allowed format to match what ISO-8601 allows.
	* libgnat/g-catiio.adb (Scan_Subsecond): Rewrite so it doesn't
	assume the subsecond comes last.
	(Parse_ISO_8601): Parse an optional subsecond, followed by an
	optional time zone, rather than making these alternatives to
	each other.
2020-07-06 07:35:32 -04:00
Bob Duff
bf8467d806 [Ada] Clean up GNAT.Calendar.Time_IO.Value
gcc/ada/

	* libgnat/g-catiio.adb (Parse_ISO_8601): Minor cleanups:

	Give some objects clearer names.
	Make some objects more local to where they are used.

	Remove some validity checks that can't fail, because some of
	the variables tested have been moved so they're not visible here.
	Anyway, Wrong_Syntax is about errors in the input, not data
	validity.

	Use Time_Zone_Seen instead of Local_Sign = ' ' to determine
	that a time zone indication was seen.

	We don't need to distinguish two different kinds of
	syntax error (End_Of_Source_Reached and Wrong_Syntax),
	so use Wrong_Syntax always.

	Remove comment, "Certain scanning scenarios may handle
	this exception on their own."; there are no such scenarios.
2020-07-06 07:35:31 -04:00
Bob Duff
b1e78e8577 [Ada] Implement Time_IO.Image with Time_Zone
gcc/ada/

	* libgnat/g-catiio.ads, libgnat/g-catiio.adb (Image): New
	function. It might seem like the local-time Image should be
	implemented in terms of the Time_Zone Image, but that would be
	far harder to implement, so we do it the other way around.
2020-07-06 07:35:26 -04:00
Thomas Quinot
58d94a32b4 [Ada] Use Stream_Element_Arrays internally for secure hash computations
gcc/ada/

	* libgnat/g-sechas.ads, libgnat/g-sechas.adb: Refactor to use
	Stream_Element_Array as the internal buffer type.
	* libgnat/g-shshco.adb: Adjust to use Stream_Element_Offset
	instead of Integer as the index in the internal state buffer.
2020-07-06 07:35:24 -04:00
Gary Dismukes
aaa3a67535 [Ada] Various typo fixes and reformatting of comments
gcc/ada/

	* doc/gnat_rm/implementation_defined_pragmas.rst, errout.ads,
	erroutc.adb, exp_ch4.adb, exp_ch6.adb, freeze.adb: Comment
	rewording/reformatting/typo fixes.  Replace "ie." with "that is"
	in comment; "can not" -> "cannot", and remove an extraneous
	underscore in another comment.
	* gnat_rm.texi, gnat_ugn.texi: Regenerate.
2020-07-06 07:35:23 -04:00
Javier Miranda
0fc1b4ad1d [Ada] Ada2020: AI12-0198 potentially unevaluated array components
gcc/ada/

	* sem_util.ads (Interval_Lists.Aggregate_Intervals): New
	subprogram.
	* sem_util.adb (Has_Null_Others_Choice,
	Non_Static_Or_Null_Range, Interval_Lists.Aggregate_Intervals):
	New subprograms.
	(Is_Potentially_Unevaluated): Adding support to detect
	potentially unevaluated components of array aggregates.
2020-07-06 07:35:21 -04:00
Bob Duff
49665da2e5 [Ada] Correct time zone in GNAT.Calendar.Time_IO.Value
gcc/ada/

	* libgnat/g-catiio.adb (Parse_ISO_8601): New name for
	Parse_ISO_8861_UTC.  8601 is the correct ISO standard number.
	Also, "UTC" was confusing. All Time values are represented in
	UTC, but the ISO 8601 date strings include a time zone.

	If a time zone was specified, call
	Ada.Calendar.Formatting.Time_Of instead of
	GNAT.Calendar.Time_Of, because the latter adjusts to the current
	time zone, whereas we want to use (just) the time zone specified
	in the ISO string.  This allows us to pass Time_Zone instead to
	Time_Of, instead of adjusting by Local_Disp by hand.

	If no time zone was specified, call GNAT.Calendar.Time_Of as
	before.

	Use expanded names to clarify which Time_Of is being called.
	Remove redundant comment, and move nonredundant part of the
	commment to the spec.
	(Value): Minor: use "not in" instead of "or else".
	* libgnat/g-catiio.ads: Comment moved here. Correct the ISO
	standard number.
	* libgnat/g-calend.adb: Add ??? comments.
	* libgnat/a-calend.ads, libgnat/a-calend.adb: Update obsolete
	comments regarding the representation of type Time. Move the
	information about the epoch (year 2150) to the spec, and avoid
	uttering "2150" more than once.
	* libgnat/a-catizo.ads (Time_Offset): Add comment.
2020-07-06 07:35:17 -04:00
Ed Schonberg
e3bf5e2ef3 [Ada] Crash on derived type with rep. clause and renamed discriminant
gcc/ada/

	* exp_ch5.adb (Find_Component): If the target type is a derived
	record type and the required component is a discriminant that is
	renamed in the derived type declaration, use the name of the
	original discriminant to locate the intended target component.
2020-07-06 07:35:12 -04:00
Justin Squirek
ce16f54f6e [Ada] Hang on generic declaration with ambiguous formal package
gcc/ada/

	* sem_ch12.adb (Analyze_Associations): Add check for errors on
	the generic formal before continuing with instantiation.
2020-07-06 07:35:10 -04:00