platform/upstream/gcc.git
3 years ago[Ada] Implementation of AI12-0152: legality rules for Raise_Expression
Ed Schonberg [Thu, 18 Feb 2021 16:09:36 +0000 (11:09 -0500)]
[Ada] Implementation of AI12-0152: legality rules for Raise_Expression

gcc/ada/

* sem_res.adb (Resolve_Raise_Expression): Apply Ada_2020 rules
concerning the need for parentheses around Raise_Expressions in
various contexts.

3 years ago[Ada] Reorder code for validity checks of unchecked conversions
Piotr Trojanek [Wed, 17 Feb 2021 22:32:25 +0000 (23:32 +0100)]
[Ada] Reorder code for validity checks of unchecked conversions

gcc/ada/

* sem_ch13.adb (Validate_Unchecked_Conversion): Move detection
of generic types before switching to their private views; fix
style in using AND THEN.

3 years ago[Ada] Raise expressions and unconstrained components
Arnaud Charlet [Wed, 17 Feb 2021 11:29:03 +0000 (06:29 -0500)]
[Ada] Raise expressions and unconstrained components

gcc/ada/

* sem_ch3.adb (Analyze_Component_Declaration): Do not special
case raise expressions.

gcc/testsuite/

* gnat.dg/limited4.adb: Disable illegal code.

3 years ago[Ada] Clarify the documentation of -gnaty0 style check option
Sergey Rybin [Wed, 17 Feb 2021 13:31:08 +0000 (16:31 +0300)]
[Ada] Clarify the documentation of -gnaty0 style check option

gcc/ada/

* doc/gnat_ugn/building_executable_programs_with_gnat.rst:
Instead of referring to the formatting of the Ada examples in
Ada RM add use the list of checks that are actually performed.
* gnat_ugn.texi: Regenerate.

3 years ago[Ada] Small cleanup in C header files
Eric Botcazou [Wed, 17 Feb 2021 08:00:19 +0000 (09:00 +0100)]
[Ada] Small cleanup in C header files

gcc/ada/

* initialize.c: Do not include vxWorks.h and fcntl.h from here.
(__gnat_initialize) [__MINGW32__]: Remove #ifdef and attribute
(__gnat_initialize) [init_float]: Delete.
(__gnat_initialize) [VxWorks]: Likewise.
(__gnat_initialize) [PA-RISC HP-UX 10]: Likewise.
* runtime.h: Add comment about vxWorks.h include.

3 years ago[Ada] Small cleanup in System.Exceptions
Eric Botcazou [Wed, 17 Feb 2021 07:55:15 +0000 (08:55 +0100)]
[Ada] Small cleanup in System.Exceptions

gcc/ada/

* libgnat/s-except.ads (ZCX_By_Default): Delete.
(Require_Body): Likewise.
* libgnat/s-except.adb: Replace body with pragma No_Body.

3 years agotree-optimization/101083 - fix ICE with SLP reassoc
Richard Biener [Wed, 16 Jun 2021 06:56:21 +0000 (08:56 +0200)]
tree-optimization/101083 - fix ICE with SLP reassoc

This makes us pass down the vector type for the two-operand
SLP node build rather than picking that from operand one which,
when constant or external, could be NULL.

2021-06-16  Richard Biener  <rguenther@suse.de>

PR tree-optimization/101083
* tree-vect-slp.c (vect_slp_build_two_operator_nodes): Get
vectype as argument.
(vect_build_slp_tree_2): Adjust.

* gcc.dg/vect/pr97832-4.c: New testcase.

3 years agoDaily bump.
GCC Administrator [Wed, 16 Jun 2021 00:17:05 +0000 (00:17 +0000)]
Daily bump.

3 years agoanalyzer: fix bitfield endianness issues [PR99212,PR101082]
David Malcolm [Tue, 15 Jun 2021 21:53:34 +0000 (17:53 -0400)]
analyzer: fix bitfield endianness issues [PR99212,PR101082]

Looks like my patch for PR analyzer/99212 implicitly assumed
little-endian, which the following patch fixes.

Fixes bitfields-1.c on:
- armeb-none-linux-gnueabihf
- cris-elf
- powerpc64-darwin
- s390-linux-gnu

gcc/analyzer/ChangeLog:
PR analyzer/99212
PR analyzer/101082
* engine.cc: Include "target.h".
(impl_run_checkers): Log BITS_BIG_ENDIAN, BYTES_BIG_ENDIAN, and
WORDS_BIG_ENDIAN.
* region-model-manager.cc
(region_model_manager::maybe_fold_binop): Move support for masking
via ARG0 & CST into...
(region_model_manager::maybe_undo_optimize_bit_field_compare):
...this new function.  Flatten by converting from nested
conditionals to a series of early return statements to reject
failures.  Reject if type is not unsigned_char_type_node.
Handle BYTES_BIG_ENDIAN when determining which bits are bound
in the binding_map.
* region-model.h
(region_model_manager::maybe_undo_optimize_bit_field_compare):
New decl.
* store.cc (bit_range::dump): New function.
* store.h (bit_range::dump): New decl.

Signed-off-by: David Malcolm <dmalcolm@redhat.com>
3 years agoConsider size_t mangling as unsigned int and long [PR100876].
Martin Sebor [Tue, 15 Jun 2021 18:42:06 +0000 (12:42 -0600)]
Consider size_t mangling as unsigned int and long [PR100876].

gcc/ChangeLog:

PR middle-end/100876
* builtins.c: (gimple_call_return_array): Account for size_t
mangling as either unsigned int or unsigned long

3 years agolibstdc++: Make ranges CPOs final and not addressable
Jonathan Wakely [Tue, 15 Jun 2021 16:54:53 +0000 (17:54 +0100)]
libstdc++: Make ranges CPOs final and not addressable

This restricts the API of the CPOs and other function objects so they
cannot be misused by deriving from them or taking their addresses.

Signed-off-by: Jonathan Wakely <jwakely@redhat.com>
libstdc++-v3/ChangeLog:

* include/bits/ranges_base.h (ranges::begin, ranges::end)
(ranges::cbegin, ranges::cend, ranges::rbeing, ranges::rend)
(ranges::crbegin, ranges::crend, ranges::size, ranges::ssize)
(ranges::empty, ranges::data, ranges::cdata): Make types final.
Add deleted operator& overloads.
(ranges::advance, ranges::distance, ranges::next, ranges::prev):
Likewise.
* testsuite/std/ranges/headers/ranges/synopsis.cc: Replace
ill-formed & expressions with using-declarations. Add checks for
other function objects.

3 years agolibstdc++: Add noexcept specifiers to some range adaptors
Jonathan Wakely [Tue, 15 Jun 2021 15:36:12 +0000 (16:36 +0100)]
libstdc++: Add noexcept specifiers to some range adaptors

Signed-off-by: Jonathan Wakely <jwakely@redhat.com>
libstdc++-v3/ChangeLog:

* include/bits/ranges_util.h (view_interface): Add noexcept to
empty, operator bool, data and size members.
(subrange): Add noexcept to constructors.
* include/std/ranges (single_view, ref_view): Add noexcept to
constructors.
(views::single, views::all): Add noexcept.
* testsuite/std/ranges/adaptors/all.cc: Check noexcept.
* testsuite/std/ranges/single_view.cc: Likewise.

3 years agolibstdc++: Remove precondition checks from ranges::subrange
Jonathan Wakely [Tue, 15 Jun 2021 14:07:25 +0000 (15:07 +0100)]
libstdc++: Remove precondition checks from ranges::subrange

The assertion in the subrange constructor causes semantic changes,
because the call to ranges::distance performs additional operations that
are not part of the constructor's specification. That will fail to
compile if the iterator is move-only, because the argument to
ranges::distance is passed by value. It will modify the subrange if the
iterator is not a forward iterator, because incrementing the copy also
affects the _M_begin member. Those problems could be prevented by using
if-constexpr to only do the assertion for copyable forward iterators,
but the call to ranges::distance can also prevent the constructor being
usable in constant expressions. If the member initializers are usable in
constant expressions, but iterator increments of equality comparisons
are not, then the checks done by __glibcxx_assert might
make constant evaluation fail.

This change removes the assertion. Additionally, a new typedef is
introduced to simplify the declarations using __make_unsigned_like_t on
the iterator's difference type.

Signed-off-by: Jonathan Wakely <jwakely@redhat.com>
libstdc++-v3/ChangeLog:

* include/bits/ranges_util.h (subrange): Add __size_type typedef
and use it to simplify declarations.
(subrange(i, s, n)): Remove assertion.
* testsuite/std/ranges/subrange/constexpr.cc: New test.

3 years agolibstdc++: Use function object for __decay_copy helper
Jonathan Wakely [Tue, 15 Jun 2021 13:39:02 +0000 (14:39 +0100)]
libstdc++: Use function object for __decay_copy helper

By changing __cust_access::__decay_copy from a function template to a
function object we avoid ADL. That means it's fine to call it
unqualified (the compiler won't waste time doing ADL in associated
namespaces, and won't try to complete associated types).

This also makes some other minor simplications to other concepts for the
[range.access] CPOs.

Signed-off-by: Jonathan Wakely <jwakely@redhat.com>
libstdc++-v3/ChangeLog:

* include/bits/iterator_concepts.h (__cust_access::__decay_copy):
Replace with function object.
(__cust_access::__member_begin, ___cust_access::_adl_begin): Use
__decay_copy unqualified.
* include/bits/ranges_base.h (__member_end, __adl_end):
Likewise. Use __range_iter_t for type of ranges::begin.
(__member_rend): Use correct value category for rbegin argument.
(__member_data): Use __decay_copy unqualified.
(__begin_data): Use __range_iter_t for type of ranges::begin.

3 years agoMinor improvement to compare elimination
Jeff Law [Tue, 15 Jun 2021 16:42:42 +0000 (12:42 -0400)]
Minor improvement to compare elimination

gcc/
* compare-elim.c (try_eliminate_compare): Run DCE to clean things
up before eliminating comparisons.

3 years agorange-ops: (nonzero | X) is nonzero
Aldy Hernandez [Mon, 14 Jun 2021 10:51:48 +0000 (12:51 +0200)]
range-ops: (nonzero | X) is nonzero

For bitwise or, nonzero|X is always nonzero.  Make sure we don't drop to
varying in this case.

gcc/ChangeLog:

* range-op.cc (operator_bitwise_or::wi_fold): Make sure
nonzero|X is nonzero.
(range_op_bitwise_and_tests): Add tests for above.

3 years agoFix for vcmpequt builtin
Carl Love [Thu, 10 Jun 2021 22:36:25 +0000 (17:36 -0500)]
Fix for vcmpequt builtin

The vcmpequt builtin define eqvv1ti3 points to the eqv define instruction
for the eqv instruction.  The vcmpequt builtin define should point to the
vector_eqv1ti instruction definition for the vcmpequq instruction.

2021-06-15  Carl Love  <cel@us.ibm.com>

gcc/ChangeLog
PR target/101022
* config/rs6000/rs6000-builtin.def (VCMPEQUT): Fix the ICODE for the
enum definition.
(VRLQ, VSLQ, VSRQ, VSRAQ): Remove unused BU_P10_OVERLOAD_2
definitions.

3 years agoFortran/OpenMP: Extend defaultmap clause for OpenMP 5 [PR92568]
Tobias Burnus [Tue, 15 Jun 2021 14:06:38 +0000 (16:06 +0200)]
Fortran/OpenMP: Extend defaultmap clause for OpenMP 5 [PR92568]

PR fortran/92568

gcc/fortran/ChangeLog:

* dump-parse-tree.c (show_omp_clauses): Update for defaultmap.
* f95-lang.c (LANG_HOOKS_OMP_ALLOCATABLE_P,
LANG_HOOKS_OMP_SCALAR_TARGET_P): New.
* gfortran.h (enum gfc_omp_defaultmap,
enum gfc_omp_defaultmap_category): New.
* openmp.c (gfc_match_omp_clauses): Update defaultmap matching.
* trans-decl.c (gfc_finish_decl_attrs): Set GFC_DECL_SCALAR_TARGET.
* trans-openmp.c (gfc_omp_allocatable_p, gfc_omp_scalar_target_p): New.
(gfc_omp_scalar_p): Take 'ptr_alloc_ok' argument.
(gfc_trans_omp_clauses, gfc_split_omp_clauses): Update for
defaultmap changes.
* trans.h (gfc_omp_scalar_p): Update prototype.
(gfc_omp_allocatable_p, gfc_omp_scalar_target_p): New.
(struct lang_decl): Add scalar_target.
(GFC_DECL_SCALAR_TARGET, GFC_DECL_GET_SCALAR_TARGET): New.

gcc/ChangeLog:

* gimplify.c (enum gimplify_defaultmap_kind): Add GDMK_SCALAR_TARGET.
(struct gimplify_omp_ctx): Extend defaultmap array by one.
(new_omp_context): Init defaultmap[GDMK_SCALAR_TARGET].
(omp_notice_variable): Update type classification for Fortran.
(gimplify_scan_omp_clauses): Update calls for new argument; handle
GDMK_SCALAR_TARGET; for Fortran, GDMK_POINTER avoid GOVD_MAP_0LEN_ARRAY.
* langhooks-def.h (lhd_omp_scalar_p): Add 'ptr_ok' argument.
* langhooks.c (lhd_omp_scalar_p): Likewise.
(LANG_HOOKS_OMP_ALLOCATABLE_P, LANG_HOOKS_OMP_SCALAR_TARGET_P): New.
(LANG_HOOKS_DECLS): Add them.
* langhooks.h (struct lang_hooks_for_decls): Add new hooks, update
omp_scalar_p pointer type to include the new bool argument.

libgomp/ChangeLog:

* testsuite/libgomp.fortran/defaultmap-8.f90: New test.

gcc/testsuite/ChangeLog:

* gfortran.dg/gomp/pr99928-1.f90: Uncomment 'defaultmap(none)'.
* gfortran.dg/gomp/pr99928-2.f90: Uncomment 'defaultmap(none)'.
* gfortran.dg/gomp/pr99928-3.f90: Uncomment 'defaultmap(none)'.
* gfortran.dg/gomp/pr99928-4.f90: Uncomment 'defaultmap(none)'.
* gfortran.dg/gomp/pr99928-5.f90: Uncomment 'defaultmap(none)'.
* gfortran.dg/gomp/pr99928-6.f90: Uncomment 'defaultmap(none)'.
* gfortran.dg/gomp/pr99928-8.f90: Uncomment 'defaultmap(none)'.
* gfortran.dg/gomp/defaultmap-1.f90: New test.
* gfortran.dg/gomp/defaultmap-2.f90: New test.
* gfortran.dg/gomp/defaultmap-3.f90: New test.
* gfortran.dg/gomp/defaultmap-4.f90: New test.
* gfortran.dg/gomp/defaultmap-5.f90: New test.
* gfortran.dg/gomp/defaultmap-6.f90: New test.
* gfortran.dg/gomp/defaultmap-7.f90: New test.

3 years agoanalyzer: track dynamic extents of regions
David Malcolm [Tue, 15 Jun 2021 13:31:26 +0000 (09:31 -0400)]
analyzer: track dynamic extents of regions

This patch extends region_model to add tracking of the sizes of
dynamically-allocated regions, both on the heap (via malloc etc) and
stack (via alloca).  It adds enough purging of this state to avoid
blowing up any existing analyzer test cases.

The state can be queried via a new "__analyzer_dump_capacity" for use
in DejaGnu tests but other than that doesn't do anything - I have
various followup experiments that make use of this.

gcc/analyzer/ChangeLog:
* engine.cc (exploded_node::on_stmt): Handle __analyzer_dump_capacity.
(exploded_node::on_stmt): Drop m_sm_changes from on_stmt_flags.
(state_change_requires_new_enode_p): New function...
(exploded_graph::process_node): Call it, rather than querying
flags.m_sm_changes, so that dynamic-extent differences can also
trigger the splitting of nodes.
* exploded-graph.h (struct on_stmt_flags): Drop field m_sm_changes.
* program-state.cc (program_state::detect_leaks): Purge dead
heap-allocated regions from dynamic extents.
(selftest::test_program_state_1): Fix type of "size_in_bytes".
(selftest::test_program_state_merging): Likewise.
* region-model-impl-calls.cc
(region_model::impl_call_analyzer_dump_capacity): New.
(region_model::impl_call_free): Remove dynamic extents from the
freed region.
* region-model-reachability.h
(reachable_regions::begin_mutable_base_regs): New.
(reachable_regions::end_mutable_base_regs): New.
* region-model.cc: Include "tree-object-size.h".
(region_model::region_model): Support new field m_dynamic_extents.
(region_model::operator=): Likewise.
(region_model::operator==): Likewise.
(region_model::dump_to_pp): Dump sizes of dynamic regions.
(region_model::handle_unrecognized_call): Purge dynamic extents
from any regions that have escaped mutably:.
(region_model::get_capacity): New function.
(region_model::add_constraint): Unset dynamic extents when a
heap-allocated region's address is NULL.
(region_model::unbind_region_and_descendents): Purge dynamic
extents of unbound regions.
(region_model::can_merge_with_p): Call
m_dynamic_extents.can_merge_with_p.
(region_model::create_region_for_heap_alloc): Assert that
size_in_bytes's type is compatible with size_type_node.  Update
for renaming of record_dynamic_extents to set_dynamic_extents.
(region_model::create_region_for_alloca): Likewise.
(region_model::record_dynamic_extents): Rename to...
(region_model::set_dynamic_extents): ...this.  Assert that
size_in_bytes's type is compatible with size_type_node.  Add it
to the m_dynamic_extents map.
(region_model::get_dynamic_extents): New.
(region_model::unset_dynamic_extents): New.
(selftest::test_state_merging): Fix type of "size".
(selftest::test_malloc_constraints): Likewise.
(selftest::test_malloc): Verify dynamic extents.
(selftest::test_alloca): Likewise.
* region-model.h (region_to_value_map::is_empty): New.
(region_model::dynamic_extents_t): New typedef.
(region_model::impl_call_analyzer_dump_capacity): New decl.
(region_model::get_dynamic_extents): New function.
(region_model::get_dynamic_extents): New decl.
(region_model::set_dynamic_extents): New decl.
(region_model::unset_dynamic_extents): New decl.
(region_model::get_capacity): New decl.
(region_model::record_dynamic_extents): Rename to set_dynamic_extents.
(region_model::m_dynamic_extents): New field.

gcc/ChangeLog:
* doc/analyzer.texi
(Special Functions for Debugging the Analyzer): Add
__analyzer_dump_capacity.

gcc/testsuite/ChangeLog:
* gcc.dg/analyzer/analyzer-decls.h (__analyzer_dump_capacity): New decl.
* gcc.dg/analyzer/capacity-1.c: New test.
* gcc.dg/analyzer/capacity-2.c: New test.
* gcc.dg/analyzer/capacity-3.c: New test.

Signed-off-by: David Malcolm <dmalcolm@redhat.com>
3 years agoanalyzer: add class region_to_value_map
David Malcolm [Tue, 15 Jun 2021 13:30:18 +0000 (09:30 -0400)]
analyzer: add class region_to_value_map

Add a class for associating symbolic values with regions, for use
initially for recording the sizes of dynamically-allocated regions,
though this also could potentially be used for e.g. tracking strlen()
values.

gcc/analyzer/ChangeLog:
* region-model.cc (region_to_value_map::operator=): New.
(region_to_value_map::operator==): New.
(region_to_value_map::dump_to_pp): New.
(region_to_value_map::dump): New.
(region_to_value_map::can_merge_with_p): New.
* region-model.h (class region_to_value_map): New class.

Signed-off-by: David Malcolm <dmalcolm@redhat.com>
3 years agoanalyzer testsuite: add explode-2a.c [PR101068]
David Malcolm [Tue, 15 Jun 2021 13:29:23 +0000 (09:29 -0400)]
analyzer testsuite: add explode-2a.c [PR101068]

Due to a bug (PR analyzer/101068), the analyzer only explores a limited
subset of the possible paths through gcc.dg/analyzer/explode-2.c,
and this artifically helps stop this testcase from exploding.
I intend to fix this at some point, but for now, this patch adds a
revised test case which captures the effective CFG due to the bug, so
that we explicitly have test coverage for that CFG.

gcc/testsuite/ChangeLog:
PR analyzer/101068
* gcc.dg/analyzer/explode-2a.c: New test.

Signed-off-by: David Malcolm <dmalcolm@redhat.com>
3 years ago[Ada] Avoid unhelpful dead code warnings
Steve Baird [Sat, 13 Feb 2021 00:34:04 +0000 (16:34 -0800)]
[Ada] Avoid unhelpful dead code warnings

gcc/ada/

* exp_util.adb (Kill_Dead_Code): Generalize the existing
handling of if statements to handle case statements similarly.

3 years ago[Ada] Remove couple of obsolete declarations
Eric Botcazou [Tue, 16 Feb 2021 17:20:40 +0000 (18:20 +0100)]
[Ada] Remove couple of obsolete declarations

gcc/ada/

* raise.h (_gnat_builtin_longjmp): Delete.
(set_gnat_exit_status): Likewise.

3 years ago[Ada] Enable removal of side-effects in component declarations
Piotr Trojanek [Tue, 16 Feb 2021 13:58:46 +0000 (14:58 +0100)]
[Ada] Enable removal of side-effects in component declarations

gcc/ada/

* exp_util.adb (Possible_Side_Effect_In_SPARK): Handle component
declaration just like full type and subtype declarations.

3 years ago[Ada] Extend function to retrieve first/last nodes to all declarations
Yannick Moy [Wed, 10 Feb 2021 14:23:06 +0000 (15:23 +0100)]
[Ada] Extend function to retrieve first/last nodes to all declarations

gcc/ada/

* errout.adb (First_And_Last_Node): Also apply to arbitrary late
declarations, not only subprogram specs.

3 years ago[Ada] Incorrect Reinit_Field_To_Zero calls for concurrent entities
Bob Duff [Sun, 14 Feb 2021 20:27:12 +0000 (15:27 -0500)]
[Ada] Incorrect Reinit_Field_To_Zero calls for concurrent entities

gcc/ada/

* sem_ch3.adb (Make_Class_Wide_Type): Make sure all the calls to
Reinit_Field_To_Zero are for the correct Ekinds.

3 years ago[Ada] No_Task_Parts aspect
Bob Duff [Thu, 11 Feb 2021 22:57:53 +0000 (17:57 -0500)]
[Ada] No_Task_Parts aspect

gcc/ada/

* aspects.ads (No_Task_Parts): New aspect.
* snames.ads-tmpl: Add the aspect name.
* exp_ch6.adb (Might_Have_Tasks): Return False if this is a
class-wide type whose specific type has No_Task_Parts.
* freeze.adb (Check_No_Parts_Violations): This is an adaptation
of the procedure formerly known as
Check_No_Controlled_Parts_Violations, which now supports both
No_Controlled_Parts and No_Task_Parts.  It takes a parameter
indicating which aspect is being checked.
(Freeze_Entity): Call Check_No_Parts_Violations for both
aspects.
* sem_ch13.adb (Analyze_Aspect_Specifications): The code for
Aspect_No_Controlled_Parts already works as is with
Aspect_No_Task_Parts.
* libgnat/a-iteint.ads: Add No_Task_Parts aspect to the two
iterator iterfaces.
* doc/gnat_rm/implementation_defined_aspects.rst: Add
documentation for the No_Task_Parts aspect.
* gnat_rm.texi: Regenerate.

3 years ago[Ada] Fix handling of scopes for subprogram calls in unnesting
Arnaud Charlet [Thu, 11 Feb 2021 13:08:35 +0000 (14:08 +0100)]
[Ada] Fix handling of scopes for subprogram calls in unnesting

gcc/ada/

* exp_unst.adb (Unnest_Subprogram.Build_Table.Visit_Node): Fix
handling of scopes for subprogram calls.

3 years ago[Ada] Fix detection of access-to-variable types
Piotr Trojanek [Thu, 11 Feb 2021 23:11:03 +0000 (00:11 +0100)]
[Ada] Fix detection of access-to-variable types

gcc/ada/

* sem_prag.adb: Fix typos in comments related to access types.
* sem_util.adb (Is_Access_Variable): Stronger condition.

3 years ago[Ada] Use runtime from base compiler during stage1
Arnaud Charlet [Wed, 13 Jan 2021 13:49:15 +0000 (08:49 -0500)]
[Ada] Use runtime from base compiler during stage1

gcc/ada/

* Make-generated.in: Add rule to copy runtime files needed
during stage1.
* raise.c: Remove obsolete symbols used during bootstrap.
* gcc-interface/Make-lang.in: Do not use libgnat sources during
stage1.
(GNAT_ADA_OBJS, GNATBIND_OBJS): Split in two parts, the common
part and the part only used outside of stage1.
(ADA_GENERATED_FILES): Add runtime files needed during bootstrap
when recent APIs are needed.
(ada/b_gnatb.adb): Remove prerequisite.
* gcc-interface/system.ads: Remove obsolete entries.

3 years ago[Ada] Minor consistency fix for Windows SEH
Eric Botcazou [Thu, 11 Feb 2021 22:36:30 +0000 (23:36 +0100)]
[Ada] Minor consistency fix for Windows SEH

gcc/ada/

* raise-gcc.c (__gnat_personality_seh0): Use PERSONALITY_FUNCTION.

3 years ago[Ada] AI12-0138: Iterators and other nonoverridable aspects
Ed Schonberg [Wed, 10 Feb 2021 15:52:04 +0000 (10:52 -0500)]
[Ada] AI12-0138: Iterators and other nonoverridable aspects

gcc/ada/

* sem_util.adb (Is_Confirming): Separate the handling of
Implicit_Dereference, for which no pragma is generated but which
is already checked for legality in Sem_Ch13, including renamed
discriminants in a derived type.
(Is_Confirming, Same_Name): For expanded names, only check
matching of selector, because prefix may correspond to original
and derived types with different names and/or scopes. Semantic
checks on aspect expression have already verified its legality.
Add comments regarding possible gaps in RM description of the
feature.

3 years ago[Ada] Error when passing subprogram'Access to null-defaulted formal subprogram
Gary Dismukes [Wed, 10 Feb 2021 01:18:47 +0000 (20:18 -0500)]
[Ada] Error when passing subprogram'Access to null-defaulted formal subprogram

gcc/ada/

* freeze.adb (Freeze_Subprogram): Don't propagate conventions
Intrinsic or Entry to anonymous access-to-subprogram types
associated with subprograms having those conventions. Update
related comment.
* sem_attr.adb (Resolve_Attribute, Attribute_*Access): Remove
special-case warning code for cases where a called subprogram
has convention Intrinsic as well as its formal's type (the
expected type for the Access attribute), since this case can no
longer occur.

3 years ago[Ada] Fix typos in comment about expansion of attribute Image
Piotr Trojanek [Wed, 10 Feb 2021 12:14:48 +0000 (13:14 +0100)]
[Ada] Fix typos in comment about expansion of attribute Image

gcc/ada/

* exp_imgv.adb (Expand_User_Defined_Enumeration_Image): Fix
typos.

3 years ago[Ada] Allow Known_Static_Component_Size (etc) on private types
Bob Duff [Wed, 10 Feb 2021 13:47:16 +0000 (08:47 -0500)]
[Ada] Allow Known_Static_Component_Size (etc) on private types

gcc/ada/

* einfo-utils.adb (Known_Component_Size,
Known_Static_Component_Size, Unknown_Component_Size): Use
Implementation_Base_Type instead of Base_Type.

3 years ago[Ada] Add Interface_Name field to E_Loop_Parameter
Bob Duff [Wed, 10 Feb 2021 12:42:05 +0000 (07:42 -0500)]
[Ada] Add Interface_Name field to E_Loop_Parameter

gcc/ada/

* gen_il-gen-gen_entities.adb (E_Loop_Parameter): Add
Interface_Name field.

3 years ago[Ada] Disable certain checks in predefined units
Bob Duff [Tue, 9 Feb 2021 19:23:37 +0000 (14:23 -0500)]
[Ada] Disable certain checks in predefined units

gcc/ada/

* sem_cat.adb (Check_Non_Static_Default_Expr): Allow nonstatic
expression in predefined unit with pragma Preelaborate.

3 years ago[Ada] Clarify the semantics of signed intrinsic shift operations
Yannick Moy [Fri, 5 Feb 2021 14:19:57 +0000 (15:19 +0100)]
[Ada] Clarify the semantics of signed intrinsic shift operations

gcc/ada/

* doc/gnat_rm/intrinsic_subprograms.rst: More details on shift
operations for signed types. Also add the missing Import and
Convention on the example.
* gnat_rm.texi: Regenerate.

3 years ago[Ada] Small cleanup in exception handling C code
Eric Botcazou [Tue, 9 Feb 2021 11:52:08 +0000 (12:52 +0100)]
[Ada] Small cleanup in exception handling C code

gcc/ada/

* raise-gcc.c: Include <cstdarg> instead of <stdarg.h> in C++.
Include <stdbool.h> and unconditionally <stdlib.h> in C.

3 years ago[Ada] Remove redundant guard from Find_Overlaid_Entity
Piotr Trojanek [Mon, 8 Feb 2021 12:55:05 +0000 (13:55 +0100)]
[Ada] Remove redundant guard from Find_Overlaid_Entity

gcc/ada/

* sem_util.ads (Find_Overlaid_Entity): Simplify comment for
spec.
* sem_util.adb (Find_Overlaid_Entity): Remove defensive code
from body.

3 years ago[Ada] Remove const qualifier on a couple of pointed-to types
Eric Botcazou [Mon, 8 Feb 2021 11:00:19 +0000 (12:00 +0100)]
[Ada] Remove const qualifier on a couple of pointed-to types

gcc/ada/

* argv.c: Add include of <stdlib.h> for the runtime.
(gnat_argv): Change type to char ** and initialize to NULL.
(gnat_envp): Likewise.
* argv-lynxos178-raven-cert.c: Add include of <stdlib.h>.
(gnat_argv): Change type to char ** and initialize to NULL.
(gnat_envp): Likewise.

3 years ago[Ada] Fix bug in if_expressions introduced by var-size nodes changes
Bob Duff [Fri, 5 Feb 2021 18:06:13 +0000 (13:06 -0500)]
[Ada] Fix bug in if_expressions introduced by var-size nodes changes

gcc/ada/

* gen_il-gen.adb (Setter_Needs_Parent): Add missing
Then_Actions.  Fix self-contradictory comment.
* exp_util.adb (Insert_Actions): Minor comment improvments.

3 years ago[Ada] Add support for folding more and/or expressions
Arnaud Charlet [Sat, 30 Jan 2021 16:52:54 +0000 (11:52 -0500)]
[Ada] Add support for folding more and/or expressions

gcc/ada/

* sem_eval.adb (Eval_Logical_Op, Test_Expression_Is_Foldable):
Add support for folding more "and"/"or" expressions.
* exp_util.adb (Side_Effect_Free): Fix handling of membership
tests.

3 years ago[Ada] Replace repeated calls by references to a local object
Piotr Trojanek [Wed, 3 Feb 2021 08:19:20 +0000 (09:19 +0100)]
[Ada] Replace repeated calls by references to a local object

gcc/ada/

* sem_res.adb (Resolve_Actual): Replace repeated calls to
"Etype (F)" with references to "F_Typ", which keeps the results
of exactly that call.

3 years ago[Ada] Variable-sized node types: improve error messages
Bob Duff [Mon, 1 Mar 2021 22:35:17 +0000 (17:35 -0500)]
[Ada] Variable-sized node types: improve error messages

gcc/ada/

* gen_il-gen.adb (To_Bit_Offset): Use 'Base to avoid overflow in
computations in Last_Bit when Offset = 'Last.
(Choose_Offset): Give a better error message when we run out of
fields.  In particular, point out that
Gen_IL.Internals.Bit_Offset'Last needs to be increased.

3 years ago[Ada] Variable-sized node types -- cleanup
Bob Duff [Thu, 25 Feb 2021 15:38:55 +0000 (10:38 -0500)]
[Ada] Variable-sized node types -- cleanup

gcc/ada/

* atree.ads, einfo-utils.ads, einfo-utils.adb, fe.h, gen_il.adb,
gen_il.ads, gen_il-gen-gen_entities.adb,
gen_il-gen-gen_nodes.adb, sem_ch12.adb, sem_ch3.adb,
sem_util.adb, sinfo-utils.ads, treepr.adb, types.ads: Clean up
??? comments and other comments.
* atree.adb: Clean up ??? comments and other comments.
(Validate_Node): Fix bug: "Off_0 (N) < Off_L (N)"
should be "Off_0 (N) <= Off_L (N)".
* gen_il-gen.adb, gen_il-gen.ads: Clean up ???
comments and other comments.  Add support for getter-specific
and setter-specific preconditions.  Detect the error of putting
a field in the wrong subrange.  Misc cleanup.
(Node_Field vs. Entity_Field): Clean up Nmake.  Improve
comments.
* gen_il-utils.ads: Misc cleanup. Move...
* gen_il-internals.ads: ... here.
* gen_il-utils.adb: Misc cleanup. Move...
* gen_il-internals.adb: ... here.
* gen_il-fields.ads: Move Was_Default_Init_Box_Association,
which was in the wrong subrange.  Add comments.  Misc cleanup.
* gen_il-types.ads: Add Named_Access_Kind.
* sinfo-cn.adb: Clean up ??? comments and other comments.
Remove redundant assertions.
* einfo.ads, sinfo.ads: Clean up ??? comments and other
comments.  Remove all the comments indicating field offsets.
These are obsolete now that Gen_IL computes the offsets
automatically.

3 years ago[Ada] Rename Ada 202* to Ada 2022
Arnaud Charlet [Mon, 1 Mar 2021 10:45:25 +0000 (05:45 -0500)]
[Ada] Rename Ada 202* to Ada 2022

gcc/ada/

* einfo.ads, errout.adb, errout.ads, exp_aggr.adb, exp_ch5.adb,
exp_ch6.adb, exp_ch8.adb, exp_ch9.adb, exp_imgv.adb,
exp_put_image.adb, fe.h, impunit.adb, impunit.ads,
libgnat/a-cobove.ads, libgnat/a-convec.ads, opt.ads,
par-ch12.adb, par-ch3.adb, par-ch4.adb, par-ch5.adb,
par-ch6.adb, par-prag.adb, par-util.adb, scans.ads, scng.adb,
sem_aggr.adb, sem_attr.adb, sem_ch10.adb, sem_ch12.adb,
sem_ch13.adb, sem_ch3.adb, sem_ch5.adb, sem_ch6.adb,
sem_ch8.adb, sem_elab.adb, sem_eval.adb, sem_prag.adb,
sem_res.adb, sem_type.adb, sem_util.adb, sem_util.ads,
sinfo.ads, snames.ads-tmpl, sprint.adb, switch-c.adb, usage.adb,
doc/gnat_ugn/building_executable_programs_with_gnat.rst,
doc/gnat_rm/implementation_defined_aspects.rst,
gcc-interface/trans.c: Update all references to Ada 2020 to Ada
2022. Rename pragma Ada_2020 to Ada_2022.  Update documentation
accordingly.
* gnat_ugn.texi, gnat_rm.texi: Regenerate.

3 years ago[Ada] Avoid inappropriate error messages regarding aggregates and variant parts
Steve Baird [Thu, 18 Feb 2021 01:54:53 +0000 (17:54 -0800)]
[Ada] Avoid inappropriate error messages regarding aggregates and variant parts

gcc/ada/

* sem_util.adb (Gather_Components): Factor the test that was
already being used to govern emitting a pre-Ada_2020 error
message into an expression function,
OK_Scope_For_Discrim_Value_Error_Messages. Call that new
function in two places: the point where the same test was being
performed previously, and in governing emission of a newer
Ada_2020 error message. In both cases, the out-mode parameter
Gather_Components.Report_Errors is set to True even if no error
messages are generated within Gather_Components.
* sem_util.ads: Correct a comment.

3 years ago[Ada] Add more initialization of Stored_Constraint
Richard Kenner [Sun, 14 Feb 2021 13:02:19 +0000 (08:02 -0500)]
[Ada] Add more initialization of Stored_Constraint

gcc/ada/

* sem_ch3.adb (Array_Type_Declaration, Build_Derived_Type):
Reinitialize Stored_Constraint when needed.
(Set_Modular_Size): Likewise.
* atree.adb: (Check_Vanishing_Fields): Add node id to debugging
information.

3 years ago[Ada] Fix bug in subtype of private type with invariants
Bob Duff [Sat, 13 Feb 2021 21:43:22 +0000 (16:43 -0500)]
[Ada] Fix bug in subtype of private type with invariants

gcc/ada/

* sem_util.adb (Propagate_Invariant_Attributes): Call
Set_Has_Own_Invariants on the base type, because these are
Base_Type_Only. The problem is that the base type of a type is
indeed a base type when Set_Base_Type is called, but then the
type is mutated into a subtype in rare cases.
* atree.ads, atree.adb (Is_Entity): Export. Correct subtype of
parameter in body.
* gen_il-gen.adb: Improve getters so that "Pre => ..." can refer
to the value of the field. Put Warnings (Off) on some with
clauses that are not currently used, but might be used by such
Pre's.

3 years ago[Ada] Robust switching from incomplete to access types
Piotr Trojanek [Wed, 24 Feb 2021 18:39:21 +0000 (19:39 +0100)]
[Ada] Robust switching from incomplete to access types

gcc/ada/

* sem_ch3.adb (Access_Type_Declaration): Add comments to explain
the ordering of Mutate_Kind and Set_Directly_Designated_Type;
remove temporary setting of Ekind to E_Access_Type for building
_master objects, since now the Ekind is already set to its final
value. Move repeated code into Setup_Access_Type routine and use
it so that Process_Subtype is executed before mutating the kind
of the type entity.
* gen_il-gen-gen_entities.adb (Gen_Entities): Remove
Directly_Designated_Type from E_Void, E_Private_Record,
E_Limited_Private_Type and Incomplete_Kind; now it only belongs
to Access_Kind entities.
* sem_util.adb: Minor reformatting.

3 years agoexpr: Fix up VEC_PACK_TRUNC_EXPR expansion [PR101046]
Jakub Jelinek [Tue, 15 Jun 2021 09:36:47 +0000 (11:36 +0200)]
expr: Fix up VEC_PACK_TRUNC_EXPR expansion [PR101046]

The following testcase ICEs, because we have a mode mismatch.
VEC_PACK_TRUNC_EXPR's operands have different modes from the result
(same vector mode size but twice as large element),
but we were passing non-NULL subtarget with the mode of the result
to the expansion of its arguments, so the VEC_PERM_EXPR in one of the
operands which had V8SImode operands and result had V16HImode target.

Fixed by clearing the subtarget if we are changing mode.

2021-06-15  Jakub Jelinek  <jakub@redhat.com>

PR target/101046
* expr.c (expand_expr_real_2) <case VEC_PACK_FIX_TRUNC_EXPR,
case VEC_PACK_TRUNC_EXPR>: Clear subtarget when changing mode.

* gcc.target/i386/pr101046.c: New test.

3 years agoHandle multiple latches in irreducible region mark
Richard Biener [Mon, 14 Jun 2021 13:36:57 +0000 (15:36 +0200)]
Handle multiple latches in irreducible region mark

The following makes irreducible region discovery handle multiple latches.

2021-06-14  Richard Biener  <rguenther@suse.de>

* cfgloopanal.c (mark_irreducible_loops): Use a dominance
check to identify loop latches.
* cfgloop.c (verify_loop_structure): Likewise.
* loop-init.c (apply_loop_flags): Allow marked irreducible
regions even with multiple latches.
* predict.c (rebuild_frequencies): Simplify.

3 years agoAssert we have irreducible regions marked in the threader
Richard Biener [Tue, 15 Jun 2021 08:27:47 +0000 (10:27 +0200)]
Assert we have irreducible regions marked in the threader

This adds an assert that would fire if any thread path registry
user runs into the check that relies on such regions marked.

2021-06-15  Richard Biener  <rguenther@suse.de>

* tree-ssa-threadupdate.c
(jump_thread_path_registry::mark_threaded_blocks): Assert we
have marked irreducible regions.

3 years agotestsuite: Fix Wattributes test cases for s390 and add new tests.
Robin Dapp [Tue, 15 Jun 2021 07:06:15 +0000 (09:06 +0200)]
testsuite: Fix Wattributes test cases for s390 and add new tests.

There are several FAILs because we have an s390-specific check for a
warning which is not necessary anymore.  Remove it.

Add a new test case that expects a warning about conflicting function
alignment.  This would fail on s390 before but most likely on other
targets as well so it can be a target-independent test.

Also, add a test to verify that we do not emit a note when specifying
conflicting alignment for the same declaration.  Need to explicitly
handle every dg-note because handling one disables dg-note pruning.

gcc/testsuite/ChangeLog:

* c-c++-common/Wattributes.c: Remove s390-specific check and add
new tests.
* gcc.dg/Wattributes-6.c: Likewise.

3 years agoc-family: Copy DECL_USER_ALIGN even if DECL_ALIGN is similar.
Robin Dapp [Tue, 15 Jun 2021 07:06:02 +0000 (09:06 +0200)]
c-family: Copy DECL_USER_ALIGN even if DECL_ALIGN is similar.

When re-declaring a function with differing attributes DECL_USER_ALIGN
is usually not merged/copied when DECL_ALIGN is similar.  On s390 this
will cause a warning message not to be shown.  Similarly, we warned
about the wrong alignment when short-circuiting an alignment initialization in
common_handle_aligned_attribute ().

Fix this by copying DECL_USER_ALIGN even if DECL_ALIGN is similar as
well as getting rid of the short-circuited initialization.

gcc/c-family/ChangeLog:

* c-attribs.c (common_handle_aligned_attribute): Remove short
circuit and dead code.

gcc/c/ChangeLog:

* c-decl.c (merge_decls): Copy DECL_USER_ALIGN if DECL_ALIGN is
similar.

gcc/cp/ChangeLog:

* decl.c (duplicate_decls): Likewise.

3 years agors6000: Fix test case failures by PR100085 [PR101020]
Xionghu Luo [Tue, 15 Jun 2021 01:00:11 +0000 (20:00 -0500)]
rs6000: Fix test case failures by PR100085 [PR101020]

Tested pass, committing as obvious.

gcc/testsuite/ChangeLog:

2021-06-14  Xionghu Luo  <luoxhu@linux.ibm.com>

PR target/101020
* gcc.target/powerpc/float128-call.c: Adjust counts for be and le.

3 years agoDaily bump.
GCC Administrator [Tue, 15 Jun 2021 00:16:37 +0000 (00:16 +0000)]
Daily bump.

3 years agoTeach compute_objsize about placement new [PR100876].
Martin Sebor [Mon, 14 Jun 2021 22:34:48 +0000 (16:34 -0600)]
Teach compute_objsize about placement new [PR100876].

Resolves:
PR c++/100876 - -Wmismatched-new-delete should understand placement new when it's not inlined

gcc/ChangeLog:

PR c++/100876
* builtins.c (gimple_call_return_array): Check for attribute fn spec.
Handle calls to placement new.
(ndecl_dealloc_argno): Avoid placement delete.

gcc/testsuite/ChangeLog:

PR c++/100876
* g++.dg/warn/Wmismatched-new-delete-4.C: New test.
* g++.dg/warn/Wmismatched-new-delete-5.C: New test.
* g++.dg/warn/Wstringop-overflow-7.C: New test.
* g++.dg/warn/Wfree-nonheap-object-6.C: New test.
* g++.dg/analyzer/placement-new.C: Prune out expected warning.

3 years agolibstdc++: Fix noexcept-specifier for ranges::empty
Jonathan Wakely [Mon, 14 Jun 2021 21:42:05 +0000 (22:42 +0100)]
libstdc++: Fix noexcept-specifier for ranges::empty

Signed-off-by: Jonathan Wakely <jwakely@redhat.com>
libstdc++-v3/ChangeLog:

* include/bits/ranges_base.h (ranges::empty): Check whether
conversion to bool can throw.
* testsuite/std/ranges/access/empty.cc: Check for correct
noexcept-specifier.

3 years agors6000: MMA builtin usage ICEs when used in a #pragma omp parallel and using -fopenmp...
Peter Bergner [Mon, 14 Jun 2021 21:55:18 +0000 (16:55 -0500)]
rs6000: MMA builtin usage ICEs when used in a #pragma omp parallel and using -fopenmp [PR100777]

Using an MMA builtin within an openmp parallel code block, leads to an SSA
verification ICE on the temporaries we create while expanding the MMA builtins
at gimple time.  The solution is to use create_tmp_reg_or_ssa_name(), which
knows when to create either an SSA or register temporary.

2021-06-14  Peter Bergner  <bergner@linux.ibm.com>

gcc/
PR target/100777
* config/rs6000/rs6000-call.c (rs6000_gimple_fold_mma_builtin): Use
create_tmp_reg_or_ssa_name().

gcc/testsuite/
PR target/100777
* gcc.target/powerpc/pr100777.c: New test.

3 years agoLimit new value calculations to first order effects.
Andrew MacLeod [Mon, 14 Jun 2021 19:33:59 +0000 (15:33 -0400)]
Limit new value calculations to first order effects.

When utilzing poor values during propagation, we mostly care about values that
were undefined/processed directly used in calcualting the SSA_NAME being
processed.  2nd level derivations of such poor values rarely affect the
inital calculation.  Leave them to when they are directly encountered.

* gimple-range-cache.cc (ranger_cache::ranger_cache): Adjust.
(ranger_cache::enable_new_values): Set to specified value and
return the old value.
(ranger_cache::disable_new_values): Delete.
(ranger_cache::fill_block_cache): Disable non 1st order derived
poor values.
* gimple-range-cache.h (ranger_cache): Adjust prototypes.
* gimple-range.cc (gimple_ranger::range_of_expr): Adjust.

3 years agolibstdc++: Fix common_reference for non-reference results [PR100894]
Jonathan Wakely [Mon, 14 Jun 2021 19:31:00 +0000 (20:31 +0100)]
libstdc++: Fix common_reference for non-reference results [PR100894]

The result of COMMON-REF(A&, B&&) where they have no common reference
type should not be a reference. The implementation of COMMON-REF fails
to check that the result is a reference, so is well-formed when it
shouldn't be. This means that common_reference uses that result when it
shouldn't.

The fix is to reject the result of COMMON-REF(A, B) if it's not a
reference, so that common_reference falls through to the next case,
which uses COND-RES, which yields a non-reference result.

Signed-off-by: Jonathan Wakely <jwakely@redhat.com>
libstdc++-v3/ChangeLog:

PR libstdc++/100894
* include/std/type_traits (__common_ref_impl<X&, Y&>): Only
use the type if it's a reference.
* testsuite/20_util/common_reference/100894.cc: New test.

3 years agoi386: Split V2HImode *punpckwd to SSE instruction [PR101058]
Uros Bizjak [Mon, 14 Jun 2021 18:56:18 +0000 (20:56 +0200)]
i386: Split V2HImode *punpckwd to SSE instruction [PR101058]

V2HImode *punpckwd should not be split to the insn that depends on
TARGET_MMX_WITH_SSE, since the later is disabled on 32bit targets.

Also return true early from ix86_vectorize_vec_perm_const when testing
with V2HI mode.  *punpckwd can be used to implement all permutations.

2021-06-14  Uroš Bizjak  <ubizjak@gmail.com>

gcc/
PR target/101058
* config/i386/i386-expand.c (ix86_vectorize_vec_perm_const):
Return true early when testing with V2HImode.
* config/i386/mmx.md (*punpckwd): Split to sse2_pshuflw_1.

gcc/testsuite/

PR target/101058
* gcc.target/i386/pr101058.c: New test.

3 years agoc-family: Add fix-it suggestions for more <stdlib.h> names [PR101052]
Jonathan Wakely [Mon, 14 Jun 2021 10:38:11 +0000 (11:38 +0100)]
c-family: Add fix-it suggestions for more <stdlib.h> names [PR101052]

PR c++/101052

gcc/c-family/ChangeLog:

* known-headers.cc (get_stdlib_header_for_name): Add known
headers for EXIT_FAILURE, EXIT_SUCCESS, abort, atexit, calloc,
exit, and getenv.

gcc/testsuite/ChangeLog:

* g++.dg/spellcheck-stdlib.C: Add checks for <cstdlib> names.
* gcc.dg/spellcheck-stdlib.c: Likewise.

3 years agoarm: Auto-vectorization for MVE: add pack/unpack patterns
Christophe Lyon [Thu, 3 Jun 2021 14:35:50 +0000 (14:35 +0000)]
arm: Auto-vectorization for MVE: add pack/unpack patterns

This patch adds vec_unpack<US>_hi_<mode>, vec_unpack<US>_lo_<mode>,
vec_pack_trunc_<mode> patterns for MVE.

It does so by moving the unpack patterns from neon.md to
vec-common.md, while adding them support for MVE. The pack expander is
derived from the Neon one (which in turn is renamed into
neon_quad_vec_pack_trunc_<mode>).

The patch introduces mve_vec_unpack<US>_lo_<mode> and
mve_vec_unpack<US>_hi_<mode> which are similar to their Neon
counterparts, except for the assembly syntax.

The patch introduces mve_vec_pack_trunc_lo_<mode> to avoid the need for a
zero-initialized temporary, which is needed if the
vec_pack_trunc_<mode> expander calls @mve_vmovn[bt]q_<supf><mode>
instead.

With this patch, we can now vectorize the 16 and 8-bit versions of
vclz and vshl, although the generated code could still be improved.
For test_clz_s16, we now generate
        vldrh.16        q3, [r1]
        vmovlb.s16   q2, q3
        vmovlt.s16   q3, q3
        vclz.i32  q2, q2
        vclz.i32  q3, q3
        vmovnb.i32      q1, q2
        vmovnt.i32      q1, q3
        vstrh.16        q1, [r0]
which could be improved to
        vldrh.16        q3, [r1]
vclz.i16 q1, q3
        vstrh.16        q1, [r0]
if we could avoid the need for unpack/pack steps.

For reference, clang-12 generates:
vldrh.s32       q0, [r1]
vldrh.s32       q1, [r1, #8]
vclz.i32        q0, q0
vstrh.32        q0, [r0]
vclz.i32        q0, q1
vstrh.32        q0, [r0, #8]

2021-06-11  Christophe Lyon  <christophe.lyon@linaro.org>

gcc/
* config/arm/mve.md (mve_vec_unpack<US>_lo_<mode>): New pattern.
(mve_vec_unpack<US>_hi_<mode>): New pattern.
(@mve_vec_pack_trunc_lo_<mode>): New pattern.
(mve_vmovntq_<supf><mode>): Prefix with '@'.
* config/arm/neon.md (vec_unpack<US>_hi_<mode>): Move to
vec-common.md.
(vec_unpack<US>_lo_<mode>): Likewise.
(vec_pack_trunc_<mode>): Rename to
neon_quad_vec_pack_trunc_<mode>.
* config/arm/vec-common.md (vec_unpack<US>_hi_<mode>): New
pattern.
(vec_unpack<US>_lo_<mode>): New.
(vec_pack_trunc_<mode>): New.

gcc/testsuite/
* gcc.target/arm/simd/mve-vclz.c: Update expected results.
* gcc.target/arm/simd/mve-vshl.c: Likewise.
* gcc.target/arm/simd/mve-vec-pack.c: New test.
* gcc.target/arm/simd/mve-vec-unpack.c: New test.

3 years agoC/C++: Fix unused set var warning with omp_clause_affinity [PR100913]
Tobias Burnus [Mon, 14 Jun 2021 14:49:24 +0000 (16:49 +0200)]
C/C++: Fix unused set var warning with omp_clause_affinity [PR100913]

PR c/100913
gcc/c/ChangeLog:

* c-parser.c (c_parser_omp_clause_affinity): No need to set iterator
var in the error case.

gcc/cp/ChangeLog:

* parser.c (cp_parser_omp_clause_affinity): No need to set iterator
var in the error case.

3 years agotree-optimization/100934 - properly mark irreducible regions for DOM
Richard Biener [Mon, 14 Jun 2021 12:57:26 +0000 (14:57 +0200)]
tree-optimization/100934 - properly mark irreducible regions for DOM

The jump threading code requires marked irreducible regions for the
purpose of validating jump threading paths but DOM fails to provide
that resulting in mised number of iteration upper bounds clearing.

2021-06-14  Richard Biener  <rguenther@suse.de>

PR tree-optimization/100934
* tree-ssa-dom.c (pass_dominator::execute): Properly
mark irreducible regions.

* gcc.dg/torture/pr100934.c: New testcase.

3 years agolibstdc++: Only run Filesystem TS test if supported
Jonathan Wakely [Mon, 14 Jun 2021 13:22:07 +0000 (14:22 +0100)]
libstdc++: Only run Filesystem TS test if supported

libstdc++-v3/ChangeLog:

* testsuite/experimental/filesystem/path/native/conv_c++23.cc:
Add dg-require-filesystem-ts directive.

3 years agolibstdc++: Fix std::any constraints [PR101034]
Jonathan Wakely [Mon, 14 Jun 2021 13:18:33 +0000 (14:18 +0100)]
libstdc++: Fix std::any constraints [PR101034]

PR libstdc++/101034

libstdc++-v3/ChangeLog:

* include/std/any (any(in_place_t<T>, initializer_list<U>, A&&...))
(any::emplace<T>(initializer_list<U>, A&&...)): Fix constraint
to use lvalue.
* testsuite/20_util/any/cons/101034.cc: New test.

3 years agodocs: Fix -Wno-cpp note
Martin Liska [Mon, 14 Jun 2021 14:07:10 +0000 (16:07 +0200)]
docs: Fix -Wno-cpp note

gcc/ChangeLog:

* doc/invoke.texi: Put r{...} on the same line as @item.

3 years agodocs: add missing newline
Martin Liska [Mon, 14 Jun 2021 14:04:13 +0000 (16:04 +0200)]
docs: add missing newline

gcc/ChangeLog:

* doc/invoke.texi: Add missing newline.

3 years agodocs: remove extra '+' character in option listing.
Martin Liska [Mon, 14 Jun 2021 13:36:38 +0000 (15:36 +0200)]
docs: remove extra '+' character in option listing.

gcc/ChangeLog:

* doc/invoke.texi: Remove '+' charasters.

3 years agolibstdc++: Add explicit -std=gnu++17 option to test
Jonathan Wakely [Mon, 14 Jun 2021 12:17:40 +0000 (13:17 +0100)]
libstdc++: Add explicit -std=gnu++17 option to test

This test has no -std option so when the testsuite is run with
-std=gnu++20 or later, this test will use that. The recent addition of
no_unique_address will cause it to FAIL, because that's a reserved word
after C++17. Add an explicit option, so that this test alays uses
exactly C++17.

libstdc++-v3/ChangeLog:

* testsuite/17_intro/headers/c++2017/all_attributes.cc: Add
-std=gnu++17 option.

3 years agolibstdc++: Implement LWG 3465 for std::compare_partial_order_fallback [PR101056]
Jonathan Wakely [Mon, 14 Jun 2021 11:30:52 +0000 (12:30 +0100)]
libstdc++: Implement LWG 3465 for std::compare_partial_order_fallback [PR101056]

libstdc++-v3/ChangeLog:

PR libstdc++/101056
* libsupc++/compare (compare_partial_order_fallback): Add
constraint using reversed parameter order, as per LWG 3465.
* testsuite/18_support/comparisons/algorithms/fallback.cc:
Adjust expected result.

3 years agolibstdc++: Change [cmp.alg] assertions to constraints
Jonathan Wakely [Mon, 14 Jun 2021 11:25:43 +0000 (12:25 +0100)]
libstdc++: Change [cmp.alg] assertions to constraints

This moves the same_as<decay_t<_Tp>, decay_t<_Up>> checks from the
[cmp.alg] function bodies into their constraints.

Also add a test for the compare_xxx_order_fallback algorithms.

libstdc++-v3/ChangeLog:

* libsupc++/compare (__decayed_same_as): New helper concept.
(strong_order, weak_order, partial_order): Constrain with new
concept instead of using static_assert.
(compare_strong_order_fallback, compare_weak_order_fallback)
(compare_partial_order_fallback): Likewise. Do not deduce return
types. Remove redundant if-constexpr checks.
* testsuite/18_support/comparisons/algorithms/fallback.cc: New test.

3 years agoFortran: resolve.c - remove '*XCNEW' based nullifying
Tobias Burnus [Mon, 14 Jun 2021 12:36:20 +0000 (14:36 +0200)]
Fortran: resolve.c - remove '*XCNEW' based nullifying

gcc/fortran/ChangeLog:

* resolve.c (resolve_variable): Remove *XCNEW used to
nullify nullified memory.

3 years agoarc: Add --with-fpu support for ARCv2 cpus
Claudiu Zissulescu [Mon, 14 Jun 2021 12:33:17 +0000 (15:33 +0300)]
arc: Add --with-fpu support for ARCv2 cpus

Support for a compile-time default FPU. The --with-fpu configuration
option is ignored if -mfpu compiler option is specified. The FPU
options are only available for ARCv2 cpus.

gcc/
2021-06-14  Claudiu Zissulescu  <claziss@synopsys.com>

* config.gcc (arc): Add support for with_cpu option.
* config/arc/arc.h (OPTION_DEFAULT_SPECS): Add fpu.

Signed-off-by: Claudiu Zissulescu <claziss@synopsys.com>
3 years agoDo not check if SMS succeeds on powerpc
Aaron Sawdey [Fri, 11 Jun 2021 18:49:18 +0000 (13:49 -0500)]
Do not check if SMS succeeds on powerpc

These tests have become unstable and SMS either succeeds or doesn't
depending on things like changes in instruction latency. Removing
the scan-rtl-dump-times checks for powerpc*-*-*.

gcc/testsuite

* gcc.dg/sms-1.c: Remove scan-rtl-dump-times check.
* gcc.dg/sms-2.c: Remove scan-rtl-dump-times check.
* gcc.dg/sms-3.c: Remove scan-rtl-dump-times check.
* gcc.dg/sms-4.c: Remove scan-rtl-dump-times check.
* gcc.dg/sms-6.c: Remove scan-rtl-dump-times check.
* gcc.dg/sms-8.c: Remove scan-rtl-dump-times check.
* gcc.dg/sms-10.c: Remove scan-rtl-dump-times check.

3 years agolibstdc++: Use reserved name for attribute [PR101055]
Jonathan Wakely [Mon, 14 Jun 2021 09:58:15 +0000 (10:58 +0100)]
libstdc++: Use reserved name for attribute [PR101055]

The no_unique_address attribute is not a reserved name until C++20, so
to use it in C++11/14/17 modes we should use the __no_unique_address_
form. We already use that form when using the attribute, but not in the
__has_cpp_attribute check.

libstdc++-v3/ChangeLog:

PR libstdc++/101055
* include/std/tuple: Use reserved form of attribute name.
* testsuite/17_intro/headers/c++2011/all_attributes.cc: Add
check for no_unique_address.
* testsuite/17_intro/headers/c++2014/all_attributes.cc:
Likewise.
* testsuite/17_intro/headers/c++2017/all_attributes.cc:
Likewise.

3 years agotree-optimization/101031 - fix strlen opt invalidation logic
Richard Biener [Mon, 14 Jun 2021 07:37:24 +0000 (09:37 +0200)]
tree-optimization/101031 - fix strlen opt invalidation logic

strlen opt uses ao_ref_init_from_ptr_and_size to prepare alias
queries to invalidate its knowledge about strings.  It constrains
the size using the number of known-nonzero chars and adds one
for a terminating nul - without knowing whether such nul exists
or even fits the object.  The latter is now a problem since the
oracle disambiguates an access of size two (as built so) against
a store to a plain char variable (where a terminating nul does not
fit).  The fix is to instead increment max_size but leave size to
the number of chars we know are accessed.

2021-06-14  Richard Biener  <rguenther@suse.de>

PR tree-optimization/101031
* tree-ssa-strlen.c (maybe_invalidate): Increment max_size
instead of size when accounting for a possibly string
terminating nul.

* gcc.dg/torture/pr101031.c: New testcase.

3 years agoevrp: fix AddressSanitizer: alloc-dealloc-mismatch
Martin Liska [Mon, 14 Jun 2021 08:22:36 +0000 (10:22 +0200)]
evrp: fix AddressSanitizer: alloc-dealloc-mismatch

The fixed error is:

==21166==ERROR: AddressSanitizer: alloc-dealloc-mismatch (operator new [] vs operator delete) on 0x60300000d900
    #0 0x7367d7 in operator delete(void*, unsigned long) /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-asan/build/libsanitizer/asan/asan_new_delete.cpp:172
    #1 0x3b82e6e in pointer_equiv_analyzer::~pointer_equiv_analyzer() /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-asan/build/gcc/gimple-ssa-evrp.c:161
    #2 0x3b83387 in hybrid_folder::~hybrid_folder() /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-asan/build/gcc/gimple-ssa-evrp.c:517
    #3 0x3b83387 in execute_early_vrp /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-asan/build/gcc/gimple-ssa-evrp.c:686
    #4 0x1790611 in execute_one_pass(opt_pass*) /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-asan/build/gcc/passes.c:2567
    #5 0x1792003 in execute_pass_list_1 /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-asan/build/gcc/passes.c:2656
    #6 0x1792029 in execute_pass_list_1 /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-asan/build/gcc/passes.c:2657
    #7 0x179209f in execute_pass_list(function*, opt_pass*) /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-asan/build/gcc/passes.c:2667
    #8 0x178a5f3 in do_per_function_toporder(void (*)(function*, void*), void*) /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-asan/build/gcc/passes.c:1773
    #9 0x1792fac in do_per_function_toporder(void (*)(function*, void*), void*) /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-asan/build/gcc/plugin.h:191
    #10 0x1792fac in execute_ipa_pass_list(opt_pass*) /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-asan/build/gcc/passes.c:3001
    #11 0xc525fc in ipa_passes /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-asan/build/gcc/cgraphunit.c:2154
    #12 0xc525fc in symbol_table::compile() /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-asan/build/gcc/cgraphunit.c:2289
    #13 0xc5a096 in symbol_table::compile() /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-asan/build/gcc/cgraphunit.c:2269
    #14 0xc5a096 in symbol_table::finalize_compilation_unit() /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-asan/build/gcc/cgraphunit.c:2537
    #15 0x1a7a17c in compile_file /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-asan/build/gcc/toplev.c:482
    #16 0x69c758 in do_compile /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-asan/build/gcc/toplev.c:2210
    #17 0x69c758 in toplev::main(int, char**) /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-asan/build/gcc/toplev.c:2349
    #18 0x6a932a in main /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-asan/build/gcc/main.c:39
    #19 0x7ffff7820b34 in __libc_start_main ../csu/libc-start.c:332
    #20 0x6aa5fd in _start (/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-asan/objdir/gcc/cc1+0x6aa5fd)

0x60300000d900 is located 0 bytes inside of 32-byte region [0x60300000d900,0x60300000d920)
allocated by thread T0 here:
    #0 0x735ab7 in operator new[](unsigned long) /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-asan/build/libsanitizer/asan/asan_new_delete.cpp:102
    #1 0x3b82dac in pointer_equiv_analyzer::pointer_equiv_analyzer(gimple_ranger*) /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-asan/build/gcc/gimple-ssa-evrp.c:156

gcc/ChangeLog:

* gimple-ssa-evrp.c (pointer_equiv_analyzer::~pointer_equiv_analyzer): Use delete[].

3 years agoPick up global ranges in ranger after inlining.
Aldy Hernandez [Sun, 13 Jun 2021 14:20:33 +0000 (16:20 +0200)]
Pick up global ranges in ranger after inlining.

Ranger was not picking up global ranges because doing so could remove
__builtin_unreachable calls too early to the detriment of LTO.  However,
we can safely remove these calls after inlining.  This patch removes the
restriction and allows ranger to pick up global ranges under these
circumstances.

Tested on x86-64 Linux.

gcc/ChangeLog:

* value-query.cc (gimple_range_global): Call get_range_global
if called after inlining.

3 years ago[PATCH] config: Backport "Rely less on internal symbols" (serial 68) to gettext.m4
Michael Forney [Mon, 14 Jun 2021 02:30:09 +0000 (22:30 -0400)]
[PATCH] config: Backport "Rely less on internal symbols" (serial 68) to gettext.m4

intl
* configure: Regenerated.

3 years ago[PATCH] config: Backport "Rely less on internal symbols" (serial 69) to gettext.m4
Michael Forney [Mon, 14 Jun 2021 02:24:06 +0000 (22:24 -0400)]
[PATCH] config: Backport "Rely less on internal symbols" (serial 69) to gettext.m4

config

* gettext.m4 (AM_GNU_GETTEXT): Skip checks for the internal
symbols _nl_msg_cat_cntr, _nl_domain_bindings, and
_nl_expand_alias, if __GNU_GETTEXT_SUPPORTED_REVISION is defined.
Backport of gettext serial 68 patch.

3 years agoDaily bump.
GCC Administrator [Mon, 14 Jun 2021 00:16:35 +0000 (00:16 +0000)]
Daily bump.

3 years agoi386: Improve variable permutation insn avoidance [PR101021]
Uros Bizjak [Sun, 13 Jun 2021 19:50:51 +0000 (21:50 +0200)]
i386: Improve variable permutation insn avoidance [PR101021]

Emit constant permutation insn directly from expand_vec_perm_shufb.

2021-06-13  Uroš Bizjak  <ubizjak@gmail.com>

gcc/
PR target/101021
* config/i386/i386-expand.c (expand_vec_perm_pshufb):
Emit constant permutation insn directly from here.

3 years agoc: adjust [[maybe_unused]] testcase
Jason Merrill [Sun, 13 Jun 2021 15:34:38 +0000 (11:34 -0400)]
c: adjust [[maybe_unused]] testcase

Another testcase update needed for my r12-1405 commit.

gcc/testsuite/ChangeLog:

* gcc.dg/c2x-attr-maybe_unused-1.c: Expect no warnings.

3 years agouse range based for loops to iterate over vec<>
Trevor Saunders [Sat, 12 Jun 2021 03:49:22 +0000 (23:49 -0400)]
use range based for loops to iterate over vec<>

This changes users of FOR_EACH_VEC_ELT to use range based for loops,
where the index variables are otherwise unused.  As such the index
variables are all deleted, producing shorter and simpler code.

Signed-off-by: Trevor Saunders <tbsaunde@tbsaunde.org>
gcc/analyzer/ChangeLog:

* call-string.cc (call_string::call_string): Use range based for
to iterate over vec<>.
(call_string::to_json): Likewise.
(call_string::hash): Likewise.
(call_string::calc_recursion_depth): Likewise.
* checker-path.cc (checker_path::fixup_locations): Likewise.
* constraint-manager.cc (equiv_class::equiv_class): Likewise.
(equiv_class::to_json): Likewise.
(equiv_class::hash): Likewise.
(constraint_manager::to_json): Likewise.
* engine.cc (impl_region_model_context::on_svalue_leak):
Likewise.
(on_liveness_change): Likewise.
(impl_region_model_context::on_unknown_change): Likewise.
* program-state.cc (sm_state_map::set_state): Likewise.
* region-model.cc (test_canonicalization_4): Likewise.

gcc/ChangeLog:

* attribs.c (find_attribute_namespace): Iterate over vec<> with
range based for.
* auto-profile.c (afdo_find_equiv_class): Likewise.
* gcc.c (do_specs_vec): Likewise.
(do_spec_1): Likewise.
(driver::set_up_specs): Likewise.
* gimple-loop-jam.c (any_access_function_variant_p): Likewise.
* gimple-ssa-store-merging.c (compatible_load_p): Likewise.
(imm_store_chain_info::try_coalesce_bswap): Likewise.
(imm_store_chain_info::coalesce_immediate_stores): Likewise.
(get_location_for_stmts): Likewise.
* graphite-poly.c (print_iteration_domains): Likewise.
(free_poly_bb): Likewise.
(remove_gbbs_in_scop): Likewise.
(free_scop): Likewise.
(dump_gbb_cases): Likewise.
(dump_gbb_conditions): Likewise.
(print_pdrs): Likewise.
(print_scop): Likewise.
* ifcvt.c (cond_move_process_if_block): Likewise.
* lower-subreg.c (decompose_multiword_subregs): Likewise.
* regcprop.c (pass_cprop_hardreg::execute): Likewise.
* sanopt.c (sanitize_rewrite_addressable_params): Likewise.
* sel-sched-dump.c (dump_insn_vector): Likewise.
* store-motion.c (store_ops_ok): Likewise.
(store_killed_in_insn): Likewise.
* timevar.c (timer::named_items::print): Likewise.
* tree-cfgcleanup.c (cleanup_control_flow_pre): Likewise.
(cleanup_tree_cfg_noloop): Likewise.
* tree-data-ref.c (dump_data_references): Likewise.
(print_dir_vectors): Likewise.
(print_dist_vectors): Likewise.
(dump_data_dependence_relations): Likewise.
(dump_dist_dir_vectors): Likewise.
(dump_ddrs): Likewise.
(create_runtime_alias_checks): Likewise.
(free_subscripts): Likewise.
(save_dist_v): Likewise.
(save_dir_v): Likewise.
(invariant_access_functions): Likewise.
(same_access_functions): Likewise.
(access_functions_are_affine_or_constant_p): Likewise.
(find_data_references_in_stmt): Likewise.
(graphite_find_data_references_in_stmt): Likewise.
(free_dependence_relations): Likewise.
(free_data_refs): Likewise.
* tree-inline.c (copy_debug_stmts): Likewise.
* tree-into-ssa.c (dump_currdefs): Likewise.
(rewrite_update_phi_arguments): Likewise.
* tree-ssa-propagate.c (clean_up_loop_closed_phi): Likewise.
* tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr):
Likewise.
(vect_slp_analyze_node_dependences): Likewise.
(vect_slp_analyze_instance_dependence): Likewise.
(vect_record_base_alignments): Likewise.
(vect_get_peeling_costs_all_drs): Likewise.
(vect_peeling_supportable): Likewise.
* tree-vectorizer.c (vec_info::~vec_info): Likewise.
(vec_info::free_stmt_vec_infos): Likewise.

gcc/cp/ChangeLog:

* constexpr.c (cxx_eval_call_expression): Iterate over vec<>
with range based for.
(cxx_eval_store_expression): Likewise.
(cxx_eval_loop_expr): Likewise.
* decl.c (wrapup_namespace_globals): Likewise.
(cp_finish_decl): Likewise.
(cxx_simulate_enum_decl): Likewise.
* parser.c (cp_parser_postfix_expression): Likewise.

3 years ago[committed] More improvements to H8 logicals for test/compare elimination
Jeff Law [Sun, 13 Jun 2021 15:09:38 +0000 (11:09 -0400)]
[committed] More improvements to H8 logicals for test/compare elimination

gcc/
* config/h8300/logical.md (<code>qi3_1<cczn>): New pattern.
(andqi3_1<cczn>): Removed.
(<ors>qi3_1): Do not split for IOR/XOR a single bit.
(H8/SX bit logicals): Split out from other patterns.
* config/h8300/multiply.md (mulqihi3_const<cczn>): Renamed from
mulqihi3_const_clobber_flags.
(mulqihi3<cczn>, mulhisi3_const<cczn>, mulhisi3<cczn>): Similarly

3 years agox86: Replace ix86_red_zone_size with ix86_red_zone_used
H.J. Lu [Fri, 11 Jun 2021 14:31:29 +0000 (07:31 -0700)]
x86: Replace ix86_red_zone_size with ix86_red_zone_used

Add red_zone_used to machine_function to track if red zone is used.
When expanding function prologue, set red_zone_used to true if red
zone is used.

gcc/

PR target/101023
* config/i386/i386.c (ix86_expand_prologue): Set red_zone_used
to true if red zone is used.
(ix86_output_indirect_jmp): Replace ix86_red_zone_size with
ix86_red_zone_used.
* config/i386/i386.h (machine_function): Add red_zone_used.
(ix86_red_zone_size): Removed.
(ix86_red_zone_used): New.
* config/i386/i386.md (peephole2 patterns): Replace
ix86_red_zone_size with ix86_red_zone_used.

gcc/testsuite/

PR target/101023
* g++.target/i386/pr101023a.C: New test.
* g++.target/i386/pr101023b.C: Likewise.

3 years agocontrib/gcc-changelog: Check that PR in subject is in changelog
Tobias Burnus [Sun, 13 Jun 2021 05:46:54 +0000 (07:46 +0200)]
contrib/gcc-changelog: Check that PR in subject is in changelog

This patch checks that a '[PRnnnn]' and '(PRnnnn)' also appears as PR in the
changelog part of the commit message.  And it does likewise for 'PR comp/nnnn'
except that then also the component name is checked.  (Note that the reverse
is permitted, i.e. PR(s) only appearing in the changelog.)
To avoid false positives, PR numbers in the subject line are ignored,
if 'revert' appears.
Additionally, reject commits with a nonempty second line.

contrib/ChangeLog:

* gcc-changelog/git_commit.py (pr_regex): Add ?P<pr> for group('pr').
(subject_pr_regex, subject_pr2_regex): New.
(GitInfo.__init__, GitCommit.parse_changelog): Check subject PRs.
* gcc-changelog/git_email.py (SUBJECT_PREFIX, subject_patch_regex): New.
(GitEmail.__init__): Parse 'Subject:' and pass it to GitInfo.
* gcc-changelog/test_email.py (test_pr_only_in_subject,
test_wrong_pr_comp_in_subject, test_copyright_years): New.
* gcc-changelog/test_patches.txt (0030-PR-c-92746, pr-check1.patch):
Update to avoid triggering the new check.
(0001-rs6000-Support-doubleword, pr-wrong-comp.patch,
copyright-years.patch): New.

3 years agoDaily bump.
GCC Administrator [Sun, 13 Jun 2021 00:16:35 +0000 (00:16 +0000)]
Daily bump.

3 years agotestsuite: fix AIX testsuite failures
David Edelsohn [Fri, 11 Jun 2021 00:12:08 +0000 (20:12 -0400)]
testsuite: fix AIX testsuite failures

* g++.dg/ext/builtin-shufflevector-2.C: Ignore psabi warning.
* gcc.dg/uninit-pr93100.c: Skip on AIX.
* gcc.target/powerpc/pr100085.c: Require int128 and float128.

3 years agoc-family: don't warn for [[maybe_unused]] on data member
Jason Merrill [Fri, 11 Jun 2021 20:10:50 +0000 (16:10 -0400)]
c-family: don't warn for [[maybe_unused]] on data member

The C++17 standard (and C2x) says that [[maybe_unused]] may be applied to a
non-static data member, so we shouldn't warn about it.  And I don't see a
reason not to handle a FIELD_DECL the same as any other decl, by setting
TREE_USED on it.  It doesn't look like anything yet cares about that flag on
a FIELD_DECL, but setting it shouldn't hurt.

gcc/c-family/ChangeLog:

* c-attribs.c (handle_unused_attribute): Handle FIELD_DECL.

gcc/testsuite/ChangeLog:

* g++.dg/ext/attrib62.C: No longer warn.
* g++.dg/diagnostic/maybe_unused1.C: New test.

gcc/ChangeLog:

* doc/extend.texi (unused variable attribute): Applies to
structure fields as well.

3 years agoc++: constexpr and array[0] [PR101029]
Jason Merrill [Fri, 11 Jun 2021 20:55:30 +0000 (16:55 -0400)]
c++: constexpr and array[0] [PR101029]

build_vec_init_elt exits early if we're initializing a zero-element array,
so build_vec_init needs to do the same to avoid trying to instantiate things
after we've already started throwing important bits away.

PR c++/101029

gcc/cp/ChangeLog:

* init.c (build_vec_init): Shortcut [0] case.

gcc/testsuite/ChangeLog:

* g++.dg/ext/array4.C: New test.

3 years agoc++: speed up looking up the current class
Jason Merrill [Wed, 9 Jun 2021 21:48:14 +0000 (17:48 -0400)]
c++: speed up looking up the current class

While looking at template instantiation tracing, I noticed that we were
frequently looking up a particular class template instance while
instantiating it.  This patch shortcuts that lookup, and speeds up compiling
stdc++.h with my (checking/unoptimized) compiler by about 3%.

gcc/cp/ChangeLog:

* pt.c (lookup_template_class_1): Shortcut current_class_type.

3 years agoDaily bump.
GCC Administrator [Sat, 12 Jun 2021 00:16:27 +0000 (00:16 +0000)]
Daily bump.

3 years agoFix a typo in an AutoFDO error string
Eugene Rozenfeld [Fri, 11 Jun 2021 23:28:55 +0000 (16:28 -0700)]
Fix a typo in an AutoFDO error string

gcc/ChangeLog:

* auto-profile.c (read_profile): fix a typo in an error string

3 years agoFix effective target for check-builtin-vec_rlnm-runnable.c test
Carl Love [Fri, 11 Jun 2021 19:49:27 +0000 (14:49 -0500)]
Fix effective target for check-builtin-vec_rlnm-runnable.c test

The effective target for a Power 9 runnable test should be
p9vector_hw.

2021-06-11  Carl Love  <cel@us.ibm.com>

gcc/testsuite/ChangeLog

* gcc.target/powerpc/check-builtin-vec_rlnm-runnable.c
(dg-require-effective-target): Change target to p9vector_hw.