François Dumont [Fri, 3 Jul 2020 06:13:19 +0000 (08:13 +0200)]
libstdc++: Fix [multi]map/[multi]set move constructors noexcept qualification
Container move constructors shall not consider their allocator move
constructor qualification.
libstdc++-v3/ChangeLog:
* include/bits/stl_tree.h (_Rb_tree_impl(_Rb_tree_impl&&)): Add noexcept
qualification based only on _Compare one.
* testsuite/23_containers/map/cons/noexcept_move_construct.cc: Add
static asserts.
* testsuite/23_containers/multimap/cons/noexcept_move_construct.cc:
Likewise.
* testsuite/23_containers/multiset/cons/noexcept_move_construct.cc:
Likewise.
* testsuite/23_containers/set/cons/noexcept_move_construct.cc: Likewise.
Ian Lance Taylor [Wed, 8 Jul 2020 03:42:21 +0000 (20:42 -0700)]
libbacktrace: test linker support for DWARF 5
On AIX, the compiler supports DWARF 5 but the linker does not.
2020-07-07 Clement Chigot <clement.chigot@atos.net>
* configure.ac: Test linker support for DWARF5
* configure: Regenerate
GCC Administrator [Wed, 8 Jul 2020 00:16:40 +0000 (00:16 +0000)]
Daily bump.
Marek Polacek [Tue, 7 Jul 2020 23:28:04 +0000 (19:28 -0400)]
c++: Add new test [PR92427]
Fixed in r10-5578.
PR c++/92427
* g++.dg/ext/flexary37.C: New test.
Jonathan Wakely [Tue, 7 Jul 2020 22:39:44 +0000 (23:39 +0100)]
libstdc++: Whitespace changes to remove spaces before tabs
libstdc++-v3/ChangeLog:
* include/std/limits: Whitespace changes.
Jonathan Wakely [Tue, 7 Jul 2020 22:26:38 +0000 (23:26 +0100)]
libstdc++: Replace __int_limits with __numeric_traits_integer
I recently added std::__detail::__int_limits as a lightweight
alternative to std::numeric_limits, forgetting that the values it
provides (digits, min and max) are already provided by
__gnu_cxx::__numeric_traits.
This change adds __int_traits as an alias for __numeric_traits_integer.
This avoids instantiating __numeric_traits to decide whether to use
__numeric_traits_integer or __numeric_traits_floating. Then all uses of
__int_limits can be replaced with __int_traits, and __int_limits can be
removed.
libstdc++-v3/ChangeLog:
* include/Makefile.am: Remove bits/int_limits.h.
* include/Makefile.in: Regenerate.
* include/bits/int_limits.h: Removed.
* include/bits/parse_numbers.h (_Select_int_base): Replace
__int_limits with __int_traits.
* include/bits/range_access.h (_SSize::operator()): Likewise.
* include/ext/numeric_traits.h (__numeric_traits_integer): Add
static assertion.
(__int_traits): New alias template.
* include/std/bit (__rotl, __rotr, __countl_zero, __countl_one)
(__countr_zero, __countr_one, __popcount, __bit_ceil)
(__bit_floor, __bit_width) Replace __int_limits with
__int_traits.
* include/std/charconv (__to_chars_8, __from_chars_binary)
(__from_chars_alpha_to_num, from_chars): Likewise.
* include/std/memory_resource (polymorphic_allocator::allocate)
(polymorphic_allocator::allocate_object): Likewise.
* include/std/string_view (basic_string_view::_S_compare):
Likewise.
* include/std/utility (cmp_equal, cmp_less, in_range): Likewise.
Jonathan Wakely [Tue, 7 Jul 2020 22:26:38 +0000 (23:26 +0100)]
libstdc++: Whitespace changes to keep lines below 80 columns
Also remove leading spaces that are followed by tabs.
libstdc++-v3/ChangeLog:
* include/std/limits: Whitespace changes.
Patrick Palka [Tue, 7 Jul 2020 20:33:12 +0000 (16:33 -0400)]
c++: wrong pretty printing of nested type [PR95303]
In the testcase below, we pretty print the nested type A<int>::B as
A<int>::B<int> because we don't check whether B is itself a class
template before printing the innermost set of template arguments from
B's TEMPLATE_INFO (which in this case belong to A). This patch fixes
this by checking PRIMARY_TEMPLATE_P beforehand.
gcc/cp/ChangeLog:
PR c++/95303
* cxx-pretty-print.c (pp_cxx_unqualified_id): Check
PRIMARY_TEMPLATE_P before printing the innermost template
arguments.
gcc/testsuite/ChangeLog:
PR c++/95303
* g++.dg/concepts/diagnostic14.C: New test.
Aaron Sawdey [Tue, 7 Jul 2020 17:48:56 +0000 (12:48 -0500)]
rs6000: fix power10_hw test
The code snippet for this test was returning 1 if power10
instructions executed correctly. It should return 0 if the
test passes.
* lib/target-supports.exp (check_power10_hw_available):
Return 0 for passing test.
Nathan Sidwell [Tue, 7 Jul 2020 18:43:58 +0000 (11:43 -0700)]
testsuite: missed testcase
I discovered I'd missed applying a testcase when fixing up the EOF
token location a while back.
gcc/testsuite/
* c-c++-common/cpp/pragma-eof.c: New
Nathan Sidwell [Tue, 7 Jul 2020 18:28:59 +0000 (11:28 -0700)]
preprocessor: Better line info for <builtin> & <command-line>
With C++ module header units it becomes important to distinguish
between macros defined in forced headers (& commandline & builtins)
from those defined in the header file being processed. We weren't
making that easy because we treated the builtins and command-line
locations somewhat file-like, with incrementing line numbers, and
showing them as included from line 1 of the main file. This patch does
3 things:
0) extend the idiom that 'line 0' of a file means 'the file as a whole'
1) builtins and command-line macros are shown as-if included from line zero.
2) when emitting preprocessed output we keep resetting the line number
so that re-reading that preprocessed output will get the same set of
locations for the command line etc.
For instance the new c-c++-common/cpp/line-2.c test, now emits
In file included from <command-line>:
./line-2.h:4:2: error: #error wrong
4 | #error wrong
| ^~~~~
line-2.c:3:11: error: macro "bill" passed 1 arguments, but takes just 0
3 | int bill(1);
| ^
In file included from <command-line>:
./line-2.h:3: note: macro "bill" defined here
3 | #define bill() 2
|
Before it told you about including from <command-line>:31.
the preprocessed output looks like:
...
(There's a new optimization in do_line_marker to stop each of these
line markers causing a new line map. We can simply rewind the
location, and keep using the same line map.)
libcpp/
* directives.c (do_linemarker): Optimize rewinding to line zero.
* files.c (_cpp_stack_file): Start on line zero when about to inject
headers.
(cpp_push_include, cpp_push_default_include): Use highest_line as
the location.
* include/cpplib.h (cpp_read_main_file): Add injecting parm.
* init.c (cpp_read_main_file): Likewise, inform _cpp_stack_file.
* internal.h (enum include_type): Add IT_MAIN_INJECT.
gcc/c-family/
* c-opts.c (c_common_post_options): Add 'injecting' arg to
cpp_read_main_file.
(c_finish_options): Add linemap_line_start calls for builtin and cmd
maps. Force token position to line_table's highest line.
* c-ppoutput.c (print_line_1): Refactor, print line zero.
(cb_define): Always increment source line.
gcc/testsuite/
* c-c++-common/cpp/line-2.c: New.
* c-c++-common/cpp/line-2.h: New.
* c-c++-common/cpp/line-3.c: New.
* c-c++-common/cpp/line-4.c: New.
* c-c++-common/cpp/line-4.h: New.
Martin Sebor [Tue, 7 Jul 2020 17:23:50 +0000 (11:23 -0600)]
Avoid printing informational notes when -Wmismatched-tags is suppressed in system headers (PR c++/96063)
Related:
PR c++/96063 - mismatched-tags warnings in stdlib headers
gcc/cp/ChangeLog:
PR c++/96063
* parser.c (class_decl_loc_t::diag_mismatched_tags): Print notes only
if warning_at returns nonzero.
gcc/testsuite/ChangeLog:
PR c++/96063
* g++.dg/warn/Wmismatched-tags-7.C: New test.
* g++.dg/warn/Wmismatched-tags-8.C: New test.
Anton Youdkevitch [Tue, 26 May 2020 11:23:04 +0000 (04:23 -0700)]
Aarch64: Change costs for TX2 to expose more vectorization opportunities
Make the costs such that they do not exaclty reflect
the actual instructions costs from the manual but make
the codegen emit the code we want it to.
gcc/ChangeLog:
* config/aarch64/aarch64.c (thunderx2t99_regmove_cost,
thunderx2t99_vector_cost): Likewise.
Richard Biener [Tue, 7 Jul 2020 11:57:40 +0000 (13:57 +0200)]
fix detection of negative step DR groups
This fixes a condition that caused all negative step DR groups to
be detected as single element interleaving. Such groups are
rejected by interleaving vectorization but miscompiled by SLP
which is fixed by forcing VMAT_STRIDED_SLP for now.
2020-07-07 Richard Biener <rguenther@suse.de>
* tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Fix
group overlap condition to allow negative step DR groups.
* tree-vect-stmts.c (get_group_load_store_type): For
multi element SLP groups force VMAT_STRIDED_SLP when the step
is negative.
* gcc.dg/vect/slp-47.c: New testcase.
* gcc.dg/vect/slp-48.c: Likewise.
Eric Botcazou [Fri, 15 May 2020 21:15:38 +0000 (23:15 +0200)]
[Ada] Small adjustment in the handling of alignment for arrays
gcc/ada/
* freeze.adb (Freeze_Array_Type): Use Ctyp more consistently.
Move code setting the alignment in the non-packed case to...
* layout.adb (Layout_Type): ...here.
Bob Duff [Fri, 15 May 2020 15:40:50 +0000 (11:40 -0400)]
[Ada] Avoid crash on node extension
gcc/ada/
* treepr.adb (Print_Node): Add code to test Is_Extension.
Arnaud Charlet [Fri, 15 May 2020 09:41:10 +0000 (05:41 -0400)]
[Ada] Assert failure on invalid Variable_Indexing
gcc/ada/
* sem_ch4.adb (Try_Container_Indexing): Add ??? comment. Protect
against malformed tree in case of errors.
Piotr Trojanek [Thu, 14 May 2020 19:56:29 +0000 (21:56 +0200)]
[Ada] Use Is_Generic_Subprogram where possible
gcc/ada/
* einfo.adb, sem_ch10.adb, sem_ch12.adb, sem_ch8.adb: Use
Is_Generic_Subprogram.
Piotr Trojanek [Thu, 14 May 2020 20:08:09 +0000 (22:08 +0200)]
[Ada] Fix typo in code to get a better error message
gcc/ada/
* sem_ch8.adb (Analyze_Use_Package): Replace low-level,
error-prone Ekind_In tests with high-level Is_Generic_Subprogram
and Is_Subprogram.
Arnaud Charlet [Thu, 14 May 2020 12:33:15 +0000 (08:33 -0400)]
[Ada] ACATS 4.1J - B854003 - Subtype conformance check missed #2
gcc/ada/
* sem_ch6.adb (Check_Formal_Subprogram_Conformance): New
subprogram to handle checking without systematically emitting an
error.
(Check_Conformance): Update call to
Check_Formal_Subprogram_Conformance and fix handling of Conforms
and Errmsg parameters.
Arnaud Charlet [Wed, 13 May 2020 08:41:03 +0000 (04:41 -0400)]
[Ada] ACATS 4.1K - C452003
gcc/ada/
* exp_ch4.adb (Tagged_Membership): Generate a call to
CW_Membership instead of using Build_CW_Membership.
(Expand_N_In): Remove wrong handling of null access types and
corresponding comment.
* exp_intr.adb (Expand_Dispatching_Constructor_Call): Generate a
call to CW_Membership instead of using Build_CW_Membership.
* rtsfind.ads: Add CW_Membership.
* exp_atag.ads, exp_atag.adb (Build_CW_Membership): Removed.
* einfo.ads: Fix typo.
* libgnat/a-tags.ads, libgnat/a-tags.adb (CW_Membership): Moved
back to spec.
Ed Schonberg [Thu, 14 May 2020 15:06:54 +0000 (11:06 -0400)]
[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.
Justin Squirek [Wed, 13 May 2020 22:59:29 +0000 (18:59 -0400)]
[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.
Steve Baird [Wed, 13 May 2020 17:38:35 +0000 (10:38 -0700)]
[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.
Javier Miranda [Wed, 13 May 2020 10:24:59 +0000 (06:24 -0400)]
[Ada] Ada2020: AI12-0198 potentially unevaluated components of arrays
gcc/ada/
* sem_util.adb (Is_Potentially_Unevaluated): Code cleanup.
Eric Botcazou [Sun, 10 May 2020 20:02:44 +0000 (22:02 +0200)]
[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.
Piotr Trojanek [Tue, 12 May 2020 19:17:08 +0000 (21:17 +0200)]
[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.
Arnaud Charlet [Sun, 10 May 2020 20:36:00 +0000 (16:36 -0400)]
[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.
Ed Schonberg [Tue, 12 May 2020 12:20:22 +0000 (08:20 -0400)]
[Ada] Handle explicit dereferences in expression functions
gcc/ada/
* freeze.adb (Freeze_Expr_Types): Freeze the designated type of
the explicit dereference.
Javier Miranda [Tue, 12 May 2020 15:01:16 +0000 (11:01 -0400)]
[Ada] Ada2020: AI12-0198 potentially unevaluated components of arrays
gcc/ada/
* sem_util.adb (Is_Potentially_Unevaluated): Protect reading
attribute Etype.
Bob Duff [Tue, 12 May 2020 15:07:36 +0000 (11:07 -0400)]
[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.
Arnaud Charlet [Tue, 12 May 2020 14:35:12 +0000 (16:35 +0200)]
[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.
Piotr Trojanek [Mon, 11 May 2020 21:48:34 +0000 (23:48 +0200)]
[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.
Ghjuvan Lacambre [Mon, 11 May 2020 11:51:13 +0000 (13:51 +0200)]
[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.
Gary Dismukes [Mon, 11 May 2020 14:34:26 +0000 (10:34 -0400)]
[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).
Piotr Trojanek [Sun, 10 May 2020 19:56:42 +0000 (21:56 +0200)]
[Ada] Change local object from variable to constant
gcc/ada/
* sem_aggr.adb (Resolve_Delta_Array_Aggregate): Make Index_Type
a constant.
Piotr Trojanek [Sun, 10 May 2020 19:12:33 +0000 (21:12 +0200)]
[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.
Javier Miranda [Sun, 10 May 2020 11:27:02 +0000 (07:27 -0400)]
[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.
Piotr Trojanek [Mon, 11 May 2020 16:21:29 +0000 (18:21 +0200)]
[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.
Arnaud Charlet [Sat, 9 May 2020 17:37:13 +0000 (13:37 -0400)]
[Ada] Spurious elaboration warnings with -gnatc and null procedures
gcc/ada/
* sem_elab.adb (Is_Guaranteed_ABE): Take into account null
procedures.
Piotr Trojanek [Sun, 10 May 2020 14:16:30 +0000 (16:16 +0200)]
[Ada] Minor cleanup with Is_Assignable
gcc/ada/
* sem_ch5.adb (Analyze_Assignment): Reuse Is_Assignable.
Piotr Trojanek [Sat, 9 May 2020 20:30:56 +0000 (22:30 +0200)]
[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.
Piotr Trojanek [Sun, 10 May 2020 19:55:27 +0000 (21:55 +0200)]
[Ada] Style fixes in the description of Analysis-Resolution-Expansion
gcc/ada/
* sem.ads (Sem): Fix description.
Piotr Trojanek [Sun, 10 May 2020 21:16:43 +0000 (23:16 +0200)]
[Ada] Allow aspect Relaxed_Initialization on protected entries
gcc/ada/
* sem_ch13.adb (Analyze_Relaxed_Parameter): Fix for protected
entries.
Qian Jianhua [Tue, 7 Jul 2020 09:12:07 +0000 (10:12 +0100)]
Fix a typo in doc/generic.texi
gcc/
* doc/generic.texi: Fix typo.
Kaipeng Zhou [Tue, 7 Jul 2020 09:07:28 +0000 (10:07 +0100)]
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.
Jonathan Wakely [Tue, 7 Jul 2020 07:23:12 +0000 (08:23 +0100)]
libstdc++: Add PR number to ChangeLog entry and fix typos
Alexandre Oliva [Tue, 7 Jul 2020 07:02:01 +0000 (09:02 +0200)]
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>
Richard Biener [Mon, 6 Jul 2020 09:30:53 +0000 (11:30 +0200)]
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.
GCC Administrator [Tue, 7 Jul 2020 00:16:40 +0000 (00:16 +0000)]
Daily bump.
Martin Sebor [Mon, 6 Jul 2020 21:23:37 +0000 (15:23 -0600)]
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.
Jonathan Wakely [Mon, 6 Jul 2020 20:54:12 +0000 (21:54 +0100)]
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.
Jonathan Wakely [Mon, 6 Jul 2020 20:54:12 +0000 (21:54 +0100)]
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.
Jonathan Wakely [Mon, 6 Jul 2020 20:54:12 +0000 (21:54 +0100)]
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.
Nathan Sidwell [Mon, 6 Jul 2020 16:54:40 +0000 (09:54 -0700)]
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.
Harald Anlauf [Mon, 6 Jul 2020 16:58:23 +0000 (18:58 +0200)]
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.
Harald Anlauf [Mon, 6 Jul 2020 16:52:39 +0000 (18:52 +0200)]
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.
Jonathan Wakely [Mon, 6 Jul 2020 15:19:23 +0000 (16:19 +0100)]
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.
Jonathan Wakely [Mon, 6 Jul 2020 14:58:33 +0000 (15:58 +0100)]
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.
Richard Biener [Mon, 6 Jul 2020 14:26:50 +0000 (16:26 +0200)]
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.
Piotr Trojanek [Sun, 10 May 2020 08:03:35 +0000 (10:03 +0200)]
[Ada] Avoid forced loading of System.Priority in CodePeer mode
gcc/ada/
* checks.adb (Apply_Scalar_Range_Check): Use Is_RTE.
Bob Duff [Sun, 10 May 2020 15:29:27 +0000 (11:29 -0400)]
[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.
Bob Duff [Sun, 10 May 2020 00:23:58 +0000 (20:23 -0400)]
[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.
Bob Duff [Sat, 9 May 2020 17:09:37 +0000 (13:09 -0400)]
[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.
Bob Duff [Fri, 8 May 2020 22:37:50 +0000 (18:37 -0400)]
[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.
Thomas Quinot [Thu, 7 May 2020 14:08:03 +0000 (16:08 +0200)]
[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.
Gary Dismukes [Thu, 7 May 2020 18:58:33 +0000 (14:58 -0400)]
[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.
Javier Miranda [Tue, 5 May 2020 17:22:47 +0000 (13:22 -0400)]
[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.
Bob Duff [Fri, 8 May 2020 13:55:36 +0000 (09:55 -0400)]
[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.
Ed Schonberg [Fri, 8 May 2020 13:27:24 +0000 (09:27 -0400)]
[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.
Justin Squirek [Thu, 7 May 2020 11:26:59 +0000 (07:26 -0400)]
[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.
Arnaud Charlet [Thu, 7 May 2020 07:09:18 +0000 (03:09 -0400)]
[Ada] AI12-0366 Changes to Big_Integer and Big_Real
gcc/ada/
* libgnat/a-nbnbin.ads, libgnat/a-nbnbin.adb,
libgnat/a-nbnbin__gmp.adb: Use more Valid_Big_Integer.
Piotr Trojanek [Thu, 7 May 2020 13:52:20 +0000 (15:52 +0200)]
[Ada] Fix typo in comment of Get_Index_Subtype
gcc/ada/
* exp_util.ads (Get_Index_Subtype): Fix duplicate "Last".
Ed Schonberg [Thu, 7 May 2020 14:07:17 +0000 (10:07 -0400)]
[Ada] There is no Expressions field in N_Delta_Aggregate node
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.
Piotr Trojanek [Thu, 7 May 2020 12:08:07 +0000 (14:08 +0200)]
[Ada] Fix evaluation of Enum_Rep applied to imported constant
gcc/ada/
* sem_attr.adb (Eval_Attribute): Check if constant has an
initialization expression.
Piotr Trojanek [Wed, 29 Apr 2020 20:15:16 +0000 (22:15 +0200)]
[Ada] Set range checks flag on 'Update for GNATprove in expansion
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.
Gary Dismukes [Wed, 6 May 2020 01:10:25 +0000 (21:10 -0400)]
[Ada] Predicates and the current instance of a subtype (AI12-0068)
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.
Ed Schonberg [Wed, 6 May 2020 16:03:27 +0000 (12:03 -0400)]
[Ada] Visibility error with aggregate in Declare_Expression
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.
Piotr Trojanek [Wed, 6 May 2020 15:19:56 +0000 (17:19 +0200)]
[Ada] Simplify implicit loading of Tasking_State in GNATprove_Mode
gcc/ada/
* sem_attr.adb (Analyze_Attribute): Reuse SPARK_Implicit_Load.
Piotr Trojanek [Wed, 6 May 2020 16:40:22 +0000 (18:40 +0200)]
[Ada] Crash when an exception handler is executed with -gnatdk
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.
Richard Kenner [Mon, 4 May 2020 13:47:30 +0000 (09:47 -0400)]
[Ada] Refine use of access types in unnesting
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.
Eric Botcazou [Tue, 5 May 2020 20:54:29 +0000 (22:54 +0200)]
[Ada] Fix bad interaction between Unchecked_Conversion and limited type
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.
Eric Botcazou [Tue, 5 May 2020 14:09:33 +0000 (16:09 +0200)]
[Ada] Remove obsolete code in Eval_Attribute
gcc/ada/
* sem_attr.adb (Eval_Attribute): Do not apply range checks in
the case of 'Pos applied to an integer type here.
Ed Schonberg [Tue, 5 May 2020 00:05:03 +0000 (20:05 -0400)]
[Ada] Crash on declaration with aggregate for unchecked union
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.
Eric Botcazou [Tue, 5 May 2020 08:54:56 +0000 (10:54 +0200)]
[Ada] Small cleanup throughout Exp_Ch9
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.
Piotr Trojanek [Mon, 4 May 2020 17:14:19 +0000 (19:14 +0200)]
[Ada] Remove special case for processing null range in GNATprove
gcc/ada/
* sem_res.adb (Resolve_Range): Resolve both low and high bounds
with the range type.
Arnaud Charlet [Wed, 1 Apr 2020 10:29:53 +0000 (06:29 -0400)]
[Ada] AI12-0376 Relax RM 13.1(10) rule wrt primitive operations
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.
Eric Botcazou [Mon, 4 May 2020 17:56:28 +0000 (19:56 +0200)]
[Ada] Improve run-time performance for large initialized allocators
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.
Gary Dismukes [Sun, 3 May 2020 22:45:37 +0000 (18:45 -0400)]
[Ada] Wording problems with predicates (AI12-0099)
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.
Arnaud Charlet [Mon, 4 May 2020 08:56:52 +0000 (04:56 -0400)]
[Ada] Default_Initial_Condition check done after extended return with init
gcc/ada/
* par-ch6.adb (P_Return_Object_Declaration): Set
Has_Init_Expression flag.
Roger Sayle [Mon, 6 Jul 2020 06:46:52 +0000 (07:46 +0100)]
nvptx: Add support for vadd.add and vsub.add instructions.
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.
Hans-Peter Nilsson [Mon, 6 Jul 2020 00:04:48 +0000 (02:04 +0200)]
cris: New peephole2 movulsr + test-case.
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.
Hans-Peter Nilsson [Sun, 5 Jul 2020 23:51:42 +0000 (01:51 +0200)]
cris: Correct gcc_assert for atomic_fetch_op pattern
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.
GCC Administrator [Mon, 6 Jul 2020 00:16:29 +0000 (00:16 +0000)]
Daily bump.
Hans-Peter Nilsson [Sun, 5 Jul 2020 23:10:54 +0000 (01:10 +0200)]
cris: update recent patterns. Simplify cris_select_cc_mode.
The code in cris_select_cc_mode for selecting CC_NZmode was
partly inconsistent with the comment and partly seemed
ambiguous. I couldn't find a reason why I qualified selection
of CC_NZmode on the setting operation once a matching user was
spotted, so I just removed that. The cris.c update was due to
observing the new test-case failing; the CC_NZmode compare
wasn't eliminated.
The recently re-instated adds/addu/subs/subu/bound patterns are
rewritten to replace the use of match_operator with iterators.
gcc:
* config/cris/cris.c (cris_select_cc_mode): Always return
CC_NZmode for matching comparisons. Clarify comments.
* config/cris/cris-modes.def: Clarify mode comment.
* config/cris/cris.md (plusminus, plusminusumin, plusumin): New
code iterators.
(addsub, addsubbo, nd): New code iterator attributes.
("*<addsub><su>qihi"): Rename from "*extopqihi". Use code
iterator constructs instead of match_operator constructs.
("*<addsubbo><su><nd><mode>si<setnz>"): Similar from
"*extop<mode>si<setnz>".
("*add<su>qihi_swap"): Similar from "*addxqihi_swap".
("*<addsubbo><su><nd><mode>si<setnz>_swap"): Similar from
"*extop<mode>si<setnz>_swap".
gcc/testsuite:
* gcc.target/cris/pr93372-39.c: New test.
Hans-Peter Nilsson [Sun, 5 Jul 2020 22:52:39 +0000 (00:52 +0200)]
cris.md: Reinstate add/sub with extend
When cleaning out the multitude of patterns with unknown
coverage, this one went the way of the bathwater. It's use is
barely common enough to mark when diffing libgcc, and has a
minimal impact on performance-testsuites. Anyway, reinstated
with a couple of test-cases. It's suboptimal of gcc-core not to
make use of the SImode pattern when performing HImode; see the
FIXME (which is actually also reinstated).
This version uses match_operator, for continuity but will be
replaced with a version making use of iterators (like it does
for the mode).
gcc:
* config/cris/cris.md ("*extopqihi", "*extop<mode>si<setnz>_swap")
("*extop<mode>si<setnz>", "*addxqihi_swap"): Reinstate.
gcc/testsuite:
* gcc.target/cris/pr93372-36.c, gcc.target/cris/pr93372-37.c,
gcc.target/cris/pr93372-38.c: New tests.
Thomas Koenig [Sun, 5 Jul 2020 18:11:35 +0000 (20:11 +0200)]
Test global identifiers against what is specified interfaces.
Apart from calling gfc_compare_interfaces to check interfaces against
global identifiers, this also sets and check a few sym->error flags
to avoid duplicate error messages. I thought about issuing errors
on mismatched interfaces, but when the procedure is not invoked,
a warning should be enough to alert the user.
gcc/fortran/ChangeLog:
PR fortran/27318
* frontend-passes.c (check_against_globals): New function.
(gfc_check_externals): Split; also invoke check_against_globals
via gfc_traverse_ns.
(gfc_check_externals0): Recursive part formerly in
gfc_check_externals.
* resolve.c (resolve_global_procedure): Set sym->error on
interface mismatch.
* symbol.c (ambiguous_symbol): Check for, and set sym->error.
gcc/testsuite/ChangeLog:
PR fortran/27318
* gfortran.dg/error_recovery_1.f90: Adjust test case.
* gfortran.dg/use_15.f90: Likewise.
* gfortran.dg/interface_47.f90: New test.
GCC Administrator [Sun, 5 Jul 2020 00:16:21 +0000 (00:16 +0000)]
Daily bump.
Iain Sandoe [Sat, 4 Jul 2020 18:01:03 +0000 (19:01 +0100)]
coroutines, testsuite: Rename a test, NFC.
The test was committed with a placeholder name, this
renames it as described in the PR.
gcc/testsuite/ChangeLog:
* g++.dg/coroutines/pr9xxxx-mismatched-traits-and-promise-prev.C: Moved to...
* g++.dg/coroutines/pr94760-mismatched-traits-and-promise-prev.C: ...here.
GCC Administrator [Sat, 4 Jul 2020 00:16:26 +0000 (00:16 +0000)]
Daily bump.