aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2020-07-07[Ada] Allow aspect Relaxed_Initialization on protected entriesPiotr Trojanek1-1/+1
gcc/ada/ * sem_ch13.adb (Analyze_Relaxed_Parameter): Fix for protected entries.
2020-07-07Fix a typo in doc/generic.texiQian Jianhua1-1/+1
gcc/ * doc/generic.texi: Fix typo.
2020-07-07Pass correct parameters to c_parser_do_statement.Kaipeng Zhou1-1/+1
gcc/c/ChangeLog: * c-parser.c (c_parser_statement_after_labels): Pass correct parameters to c_parser_do_statement.
2020-07-07libstdc++: Add PR number to ChangeLog entry and fix typosJonathan Wakely1-14/+15
2020-07-07accept <case> and [cond] in ChangeLogAlexandre Oliva3-8/+47
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-07fix LTO streaming order dependence on randomnessRichard Biener1-8/+21
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-07Daily bump.GCC Administrator8-1/+417
2020-07-06Exclude calls to variadic lambda stubs from -Wnonnull checking (PR c++/95984).Martin Sebor3-9/+63
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-06libstdc++: Cleanup whitespace and type trait usage in <optional>Jonathan Wakely1-102/+107
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-06libstdc++: Constrain std::make_optionalJonathan Wakely2-8/+111
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-06libstdc++: Add noexcept to std::optional initialization (PR 96036)Jonathan Wakely3-6/+170
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-06c++: Always use pushdecl for exception library helpersNathan Sidwell9-171/+90
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-06PR fortran/95980 - ICE on using sync images with -fcheck=boundsHarald Anlauf3-4/+20
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-06PR fortran/95709 - ICE in gfc_resolve_code, at fortran/resolve.c:11807Harald Anlauf2-4/+26
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-06libstdc++: Fix -Wmismatched-tags warnings (PR 96063)Jonathan Wakely15-24/+31
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-06c++: Allow empty-declaration in C++11 and later (PR 96068)Jonathan Wakely3-7/+10
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-06tree-optimization/96075 - fix bogus misalignment calculationRichard Biener2-1/+97
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[Ada] Avoid forced loading of System.Priority in CodePeer modePiotr Trojanek1-1/+1
gcc/ada/ * checks.adb (Apply_Scalar_Range_Check): Use Is_RTE.
2020-07-06[Ada] Time_IO.Image: Allow printing the time zoneBob Duff2-6/+77
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[Ada] Time_IO.Value: Allow subseconds and time zones togetherBob Duff2-25/+25
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[Ada] Clean up GNAT.Calendar.Time_IO.ValueBob Duff1-62/+55
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[Ada] Implement Time_IO.Image with Time_ZoneBob Duff2-2/+30
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[Ada] Use Stream_Element_Arrays internally for secure hash computationsThomas Quinot3-75/+84
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[Ada] Various typo fixes and reformatting of commentsGary Dismukes8-40/+42
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[Ada] Ada2020: AI12-0198 potentially unevaluated array componentsJavier Miranda2-8/+224
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[Ada] Correct time zone in GNAT.Calendar.Time_IO.ValueBob Duff6-64/+62
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[Ada] Crash on derived type with rep. clause and renamed discriminantEd Schonberg1-0/+12
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[Ada] Hang on generic declaration with ambiguous formal packageJustin Squirek1-4/+13
gcc/ada/ * sem_ch12.adb (Analyze_Associations): Add check for errors on the generic formal before continuing with instantiation.
2020-07-06[Ada] AI12-0366 Changes to Big_Integer and Big_RealArnaud Charlet3-10/+11
gcc/ada/ * libgnat/a-nbnbin.ads, libgnat/a-nbnbin.adb, libgnat/a-nbnbin__gmp.adb: Use more Valid_Big_Integer.
2020-07-06[Ada] Fix typo in comment of Get_Index_SubtypePiotr Trojanek1-1/+1
gcc/ada/ * exp_util.ads (Get_Index_Subtype): Fix duplicate "Last".
2020-07-06[Ada] There is no Expressions field in N_Delta_Aggregate nodeEd Schonberg1-1/+1
gcc/ada/ * sinfo.ads: Indicate that Field 1 of an N_Delta_Aggregate is unused. Previously it was erroneously labelled as holding an Expressions list, in analogy with other aggregate constructs, but there are no Expressions attached to this node syntactically or semantically.
2020-07-06[Ada] Fix evaluation of Enum_Rep applied to imported constantPiotr Trojanek1-0/+2
gcc/ada/ * sem_attr.adb (Eval_Attribute): Check if constant has an initialization expression.
2020-07-06[Ada] Set range checks flag on 'Update for GNATprove in expansionPiotr Trojanek2-28/+47
gcc/ada/ * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Apply scalar range checks. * sem_attr.adb (Resolve_Attribute): Do not set scalar range checks when resolving attribute Update.
2020-07-06[Ada] Predicates and the current instance of a subtype (AI12-0068)Gary Dismukes3-11/+94
gcc/ada/ * sem_attr.adb (Analyze_Attribute, Attribute_Constrained): Issue a warning if the attribute prefix is a current instance reference within an aspect of a type or subtype. (Address_Checks): Replace test of Is_Object (Ent) with Is_Object_Reference (P) so that testing for current instances will be done. (Eval_Attribute): Add test for current instance reference, to ensure that we still fold array attributes when current instances are involved, since value prefixes are allowed for array attributes, and will now be excluded by Is_Object_Reference. * sem_util.ads (Is_Current_Instance_Reference_In_Type_Aspect): New exported query function. * sem_util.adb (Is_Object_Reference): Return False for the case where N is a current instance reference within an aspect_specification of a type or subtype (basically if the reference occurs within a predicate, invariant, or DIC aspect expression). (Is_Current_Instance_Reference_In_Type_Aspect): New function that tests whether a node is a reference to a current instance formal of a predicate, invariant, or Default_Initial_Condition (DIC) subprogram.
2020-07-06[Ada] Visibility error with aggregate in Declare_ExpressionEd Schonberg1-2/+54
gcc/ada/ * sem_res.adb (Resolve_Declare_Expression): New subprogram, to install the scope holding local declarations of the expression, before completing its resolution. (Resolve): For an Expression_With_Actions that comes from a source occurrence of a Declare_Expression, call new subprogram.
2020-07-06[Ada] Simplify implicit loading of Tasking_State in GNATprove_ModePiotr Trojanek1-15/+10
gcc/ada/ * sem_attr.adb (Analyze_Attribute): Reuse SPARK_Implicit_Load.
2020-07-06[Ada] Crash when an exception handler is executed with -gnatdkPiotr Trojanek3-6/+27
gcc/ada/ * sem_ch5.adb (Analyze_Loop_Parameter_Specification): Propagate exception when switch -gnatdk is used and no previous errors are present. * sem_eval.adb (Compile_Time_Known_Value, Is_In_Range): Likewise. * sem_warn.adb (Operand_Has_Warnings_Suppressed): Likewise.
2020-07-06[Ada] Refine use of access types in unnestingRichard Kenner1-11/+7
gcc/ada/ * exp_unst.adb (Needs_Fat_Pointer): Don't check for formal. (Unnest_Subprogram): Use 'Unchecked_Access instead of 'Access when populating activation record.
2020-07-06[Ada] Fix bad interaction between Unchecked_Conversion and limited typeEric Botcazou1-14/+27
gcc/ada/ * exp_ch6.adb (Add_Simple_Call_By_Copy_Code): Rename parameter from Bit_Packed_Array to Force. (Expand_Actuals): Do not apply BIP processing if the subprogram is intrinsic. Adjust calls to Add_Simple_Call_By_Copy_Code and add one for In parameters whose actual is a CPP constructor call.
2020-07-06[Ada] Remove obsolete code in Eval_AttributeEric Botcazou1-10/+0
gcc/ada/ * sem_attr.adb (Eval_Attribute): Do not apply range checks in the case of 'Pos applied to an integer type here.
2020-07-06[Ada] Crash on declaration with aggregate for unchecked unionEd Schonberg1-10/+20
gcc/ada/ * sem_ch3.adb (Analyze_Object_Declaration): If the type is an Unchecked_Union, and the expression is an aggregate. complete the analysis and resolution of the aggregate, and treat like a regular object declaration, instead of as a renaming declarattion.
2020-07-06[Ada] Small cleanup throughout Exp_Ch9Eric Botcazou1-27/+24
gcc/ada/ * exp_ch9.adb (Is_Potentially_Large_Family): Add documentation. (Actual_Index_Expression): Use Entry_Index_Type. (Build_Entry_Count_Expression): Likewise. (Build_Find_Body_Index): Likewise. (Collect_Entry_Families): Likewise. Use directly the bounds of the index type to find out whether the family is large. (Entry_Index_Expression): Likewise.
2020-07-06[Ada] Remove special case for processing null range in GNATprovePiotr Trojanek1-6/+1
gcc/ada/ * sem_res.adb (Resolve_Range): Resolve both low and high bounds with the range type.
2020-07-06[Ada] AI12-0376 Relax RM 13.1(10) rule wrt primitive operationsArnaud Charlet2-36/+37
gcc/ada/ * aspects.ads (Is_Representation_Aspect): Default_Component_Value is a representation aspect. * sem_ch13.adb (Check_Aspect_Too_Late, Rep_Item_Too_Late): Relax RM 13.1(10) rule wrt primitive operations for Ada 202x.
2020-07-06[Ada] Improve run-time performance for large initialized allocatorsEric Botcazou1-222/+273
gcc/ada/ * exp_aggr.adb (Aggr_Assignment_OK_For_Backend): Move to library level and use a new predicate Is_OK_Aggregate to recognize the aggregates suitable for direct assignment by the back-end. (Convert_Array_Aggr_In_Allocator): If neither in CodePeer mode nor generating C code, generate a direct assignment instead of further expanding if Aggr_Assignment_OK_For_Backend returns true.
2020-07-06[Ada] Wording problems with predicates (AI12-0099)Gary Dismukes2-0/+16
gcc/ada/ * sem_aux.adb: Add a with clause for Nlists. (Nearest_Ancestor): Test for the case of concurrent types (testing for both Is_Concurrent_Type and Is_Concurrent_Record_Type), and return the first ancestor in the Interfaces list if present (otherwise will return Empty if no interfaces). * sem_ch13.adb (Build_Predicate_Functions): Add a ??? comment about missing handling for adding predicates when they can be inherited from multiple progenitors.
2020-07-06[Ada] Default_Initial_Condition check done after extended return with initArnaud Charlet1-0/+1
gcc/ada/ * par-ch6.adb (P_Return_Object_Declaration): Set Has_Init_Expression flag.
2020-07-06nvptx: Add support for vadd.add and vsub.add instructions.Roger Sayle3-0/+56
The following patch adds support for three-input addition instructions to the nvptx backend. The PTX ISA's "vadd.u32.u32.u32.add d, a, b, c" instruction effectively implements 32-bit d = a+b+c, and the "vsub.u32.u32.u32 d,a,b,c" instruction that provides 32-bit d = (a-b)+c. The hope is that these mnemonics help ptxas generate the low-level hardware's IADD3 instruction. 2020-07-06 Roger Sayle <roger@nextmovesoftware.com> gcc/ChangeLog: * config/nvptx/nvptx.md (*vadd_addsi4): New instruction. (*vsub_addsi4): New instruction. gcc/testsuite/ChangeLog: * gcc.target/nvptx/vadd_add.c: New test. * gcc.target/nvptx/vsub_add.c: New test.
2020-07-06cris: New peephole2 movulsr + test-case.Hans-Peter Nilsson2-4/+60
Combine likes to change a zero-extension / and + shift as seen in the test-case source to a logical shift followed by an and of the shifted mask, like: lsrq 1,r0 and.d 0x7f,r0 This was observed in the hot loop of coremark crcu16 and crcu32, when doing other changes affecting instruction selection. While fixable by other means (like instruction costs or combine patches), I wanted to break this out from those "other means". The similarity to extant peephole optimizations is not deliberate. I noticed some paths to other peephole2 test-cases have changed due to moves and renaming, so I updated them. gcc: * config/cris/cris.md (movulsr): New peephole2. gcc/testsuite: * gcc.target/cris/peep2-movulsr.c: New test.
2020-07-06cris: Correct gcc_assert for atomic_fetch_op patternHans-Peter Nilsson1-1/+5
Yet another misnumbering of operands: the asserted non-overlap would be the only benign operands overlap. "Suddenly" exposed by g++.dg/cpp0x/pr81325.C when testing unrelated changes affecting register allocation. To wit, operands 2 and 1 are the only ones that are safe for overlap, it's only that it doesn't seem to make much sense to write the address of the atomic data as the atomic data. gcc: * config/cris/sync.md ("cris_atomic_fetch_<atomic_op_name><mode>_1"): Correct gcc_assert of overlapping operands.