gcc.git
4 years ago[Ada] Ada2020: parsing of qualified exprs with new agg syntax
Bob Duff [Wed, 1 Jul 2020 20:22:46 +0000 (16:22 -0400)]
[Ada] Ada2020: parsing of qualified exprs with new agg syntax

gcc/ada/

* par-ch4.adb (P_Name): Allow Tok_Left_Bracket in two places to
call P_Qualified_Expression. We don't need to modify other
places that call P_Qualified_Expression, because a
qualified_expression is a name in Ada 2012 and higher, so P_Name
is the right place.  The parser already parses aggregates with
brackets; we just need to allow that in qualified expressions.

4 years ago[Ada] Crash in generic renaming declaration of child unit
Javier Miranda [Tue, 30 Jun 2020 18:20:09 +0000 (14:20 -0400)]
[Ada] Crash in generic renaming declaration of child unit

gcc/ada/

* sem_ch12.adb (Check_Generic_Child_Unit): When the child unit
is a renaming of a generic child unit then traverse the scope
containing the renaming declaration to locate the instance of
its parent.  Otherwise the parent is not installed and the
frontend cannot process the instantiation.

4 years ago[Ada] Remove non-ASCII character
Bob Duff [Wed, 1 Jul 2020 12:40:02 +0000 (08:40 -0400)]
[Ada] Remove non-ASCII character

gcc/ada/

* libgnat/a-numeri.ads: Remove the greek letter.

4 years ago[Ada] Attribute Img on derived types
Ed Schonberg [Thu, 2 Jul 2020 00:25:09 +0000 (20:25 -0400)]
[Ada] Attribute Img on derived types

gcc/ada/

* exp_imgv.adb (Expand_Image_Attribute): Refine previous patch
to use root type (and not base type) on enumeration types.

4 years ago[Ada] Attribute Img on derived types
Ed Schonberg [Mon, 29 Jun 2020 21:06:42 +0000 (17:06 -0400)]
[Ada] Attribute Img on derived types

gcc/ada/

* exp_imgv.adb (Expand_Image_Attribute): Use the base type
instead of the root type when type of object is private. Remove
Ada_2020 guard, because it has been checked during prior
analysis. Use Underlying_Type in all cases, as it is a no-op on
types that are not private.

4 years ago[Ada] Ada2020: AI12-0129 Make protected objects more protecting
Arnaud Charlet [Tue, 30 Jun 2020 07:49:34 +0000 (03:49 -0400)]
[Ada] Ada2020: AI12-0129 Make protected objects more protecting

gcc/ada/

* aspects.ads, snames.ads-tmpl: Add support for
Exclusive_Functions aspect.
* sem_ch13.adb (Analyze_Aspect_Specifications): Ditto.
* exp_ch9.adb (Build_Protected_Subprogram_Body): Take aspect
Exclusive_Functions into account.

4 years ago[Ada] Clean up in system.ads dependencies during compiler build
Arnaud Charlet [Wed, 1 Jul 2020 08:53:39 +0000 (04:53 -0400)]
[Ada] Clean up in system.ads dependencies during compiler build

gcc/ada/

* gcc-interface/Make-lang.in: Update dependencies on system.ads,
add gnatbind switch -t to avoid timestamp inconsistencies during
build.
* libgnat/system.ads: Move...
* gcc-interface/system.ads: ... here.

4 years ago[Ada] Legal actual type with inherited discriminants rejected in instantiation
Gary Dismukes [Tue, 30 Jun 2020 22:58:56 +0000 (18:58 -0400)]
[Ada] Legal actual type with inherited discriminants rejected in instantiation

gcc/ada/

* sem_eval.adb (Subtypes_Statically_Match): Retrieve
discriminant constraints from the two types via new function
Original_Discriminant_Constraint rather than
Discriminant_Constraint.
(Original_Discriminant_Constraint): New function to locate the
nearest explicit discriminant constraint associated with a type
that may possibly have inherited a constraint from an ancestor
type.

4 years ago[Ada] Remove obsolete workaround regarding array returns
Bob Duff [Wed, 24 Jun 2020 20:26:50 +0000 (16:26 -0400)]
[Ada] Remove obsolete workaround regarding array returns

gcc/ada/

* exp_ch6.adb (Expand_Simple_Function_Return): Remove obsolete
comment and code.

4 years ago[Ada] Convert from UTF_16 to UTF_8 fails for large values
Arnaud Charlet [Mon, 29 Jun 2020 08:18:27 +0000 (04:18 -0400)]
[Ada] Convert from UTF_16 to UTF_8 fails for large values

gcc/ada/

PR ada/95953
* libgnat/a-suenco.adb (Convert): Fix handling of third UTF-8
byte.

4 years ago[Ada] Avoid premature finalization of a function result
Steve Baird [Fri, 26 Jun 2020 00:15:50 +0000 (17:15 -0700)]
[Ada] Avoid premature finalization of a function result

gcc/ada/

* exp_util.adb (Is_Related_To_Func_Return): Cope with the case
where the FE introduces a type conversion.

4 years ago[Ada] Constants no longer synchronised if they are access-to-variable
Chris Martin [Tue, 16 Jun 2020 09:16:06 +0000 (10:16 +0100)]
[Ada] Constants no longer synchronised if they are access-to-variable

gcc/ada/

* sem_util.ads, sem_util.adb (Is_Access_Variable): New function.
(Is_Synchronized_Object): Call new function when determining if
a constant can be regarded as synchronized.

4 years ago[Ada] Finalization of uninitialized object with build in place call
Arnaud Charlet [Sun, 28 Jun 2020 10:24:26 +0000 (06:24 -0400)]
[Ada] Finalization of uninitialized object with build in place call

gcc/ada/

* exp_ch6.adb (Make_Build_In_Place_Call_In_Object_Declaration):
Call Set_BIP_Initialization_Call systematically.
* exp_ch7.adb (Process_Transient_In_Scope): Take
BIP_Initialization_Call into account to decide where to insert
the Hook.

4 years ago[Ada] Detect qualified type names for AI12-0027
Piotr Trojanek [Mon, 29 Jun 2020 08:28:00 +0000 (10:28 +0200)]
[Ada] Detect qualified type names for AI12-0027

gcc/ada/

* sem_util.adb (Is_View_Conversion): Detect qualified types.
* sem_util.ads (Is_Actual_In_Out_Parameter): Fix style in
comment.

4 years ago[Ada] Relax too strong assertions
Arnaud Charlet [Fri, 26 Jun 2020 09:08:37 +0000 (05:08 -0400)]
[Ada] Relax too strong assertions

gcc/ada/

* scil_ll.adb, sem_scil.adb: Update assertions.

4 years ago[Ada] Improvements to implementation of Ada_2020 attribute Reduce
Ed Schonberg [Sun, 28 Jun 2020 19:11:33 +0000 (15:11 -0400)]
[Ada] Improvements to implementation of Ada_2020 attribute Reduce

gcc/ada/

* sem_attr.adb (Min_Max): Handle the case where attribute
name (qualified by required type) appears as the reducer of a
'Reduce attribute reference.
(Resolve_Attribute) <Reduce>: Handle properly the presence of a
procedure or an attribute reference Min/Max as a reducer.
* exp_attr.adb (Expand_Attribute_Reference) <Reduce>: New
subprogram Build_Stat, to construct the combining statement
which appears in the generated loop for Reduce, and which is
either a function call when the reducer is a function or an
attribute, or a procedure call when reducer is an appropriate
procedure.  BuilD_Stat is used both when the prefix of 'Reduce
is a value sequence and when it is an object

4 years ago[Ada] Reduce use of primary stack on string concatenation
Arnaud Charlet [Fri, 26 Jun 2020 11:49:37 +0000 (07:49 -0400)]
[Ada] Reduce use of primary stack on string concatenation

gcc/ada/

* exp_ch4.adb (Expand_Concatenate): Allocate result of string
concatenation on secondary stack when relevant.

4 years ago[Ada] Spurious visibility error on Declare_Expression with renames
Ed Schonberg [Thu, 25 Jun 2020 20:44:27 +0000 (16:44 -0400)]
[Ada] Spurious visibility error on Declare_Expression with renames

gcc/ada/

* sem_res.adb (Resolve_Declare_Expression): Retrieve the created
block entity that is the scope of the local declarations, from
either a local object declaration or an object renaming
declaration. The block entity does not have an explicit
declaration, but appears as the scope of all locally declared
objects.

4 years ago[Ada] Use new Max_Integer_Size attribute in system.ads files
Eric Botcazou [Fri, 26 Jun 2020 14:16:08 +0000 (16:16 +0200)]
[Ada] Use new Max_Integer_Size attribute in system.ads files

gcc/ada/

* libgnat/system-aix.ads: Likewise.
* libgnat/system-darwin-arm.ads: Likewise.
* libgnat/system-darwin-ppc.ads: Likewise.
* libgnat/system-darwin-x86.ads: Likewise.
* libgnat/system-djgpp.ads: Likewise.
* libgnat/system-dragonfly-x86_64.ads: Likewise.
* libgnat/system-freebsd.ads: Likewise.
* libgnat/system-hpux-ia64.ads: Likewise.
* libgnat/system-hpux.ads: Likewise.
* libgnat/system-linux-alpha.ads: Likewise.
* libgnat/system-linux-arm.ads: Likewise.
* libgnat/system-linux-hppa.ads: Likewise.
* libgnat/system-linux-ia64.ads: Likewise.
* libgnat/system-linux-m68k.ads: Likewise.
* libgnat/system-linux-mips.ads: Likewise.
* libgnat/system-linux-ppc.ads: Likewise.
* libgnat/system-linux-riscv.ads: Likewise.
* libgnat/system-linux-s390.ads: Likewise.
* libgnat/system-linux-sh4.ads: Likewise.
* libgnat/system-linux-sparc.ads: Likewise.
* libgnat/system-linux-x86.ads: Likewise.
* libgnat/system-lynxos178-ppc.ads: Likewise.
* libgnat/system-lynxos178-x86.ads: Likewise.
* libgnat/system-mingw.ads: Likewise.
* libgnat/system-qnx-aarch64.ads: Likewise.
* libgnat/system-rtems.ads: Likewise.
* libgnat/system-solaris-sparc.ads: Likewise.
* libgnat/system-solaris-x86.ads: Likewise.
* libgnat/system-vxworks-arm-rtp-smp.ads: Likewise.
* libgnat/system-vxworks-arm-rtp.ads: Likewise.
* libgnat/system-vxworks-arm.ads: Likewise.
* libgnat/system-vxworks-e500-kernel.ads: Likewise.
* libgnat/system-vxworks-e500-rtp-smp.ads: Likewise.
* libgnat/system-vxworks-e500-rtp.ads: Likewise.
* libgnat/system-vxworks-e500-vthread.ads: Likewise.
* libgnat/system-vxworks-ppc-kernel.ads: Likewise.
* libgnat/system-vxworks-ppc-ravenscar.ads: Likewise.
* libgnat/system-vxworks-ppc-rtp-smp.ads: Likewise.
* libgnat/system-vxworks-ppc-rtp.ads: Likewise.
* libgnat/system-vxworks-ppc-vthread.ads: Likewise.
* libgnat/system-vxworks-ppc.ads: Likewise.
* libgnat/system-vxworks-x86-kernel.ads: Likewise.
* libgnat/system-vxworks-x86-rtp-smp.ads: Likewise.
* libgnat/system-vxworks-x86-rtp.ads: Likewise.
* libgnat/system-vxworks-x86-vthread.ads: Likewise.
* libgnat/system-vxworks-x86.ads: Likewise.
* libgnat/system-vxworks7-aarch64-rtp-smp.ads: Likewise.
* libgnat/system-vxworks7-aarch64.ads: Likewise.
* libgnat/system-vxworks7-arm-rtp-smp.ads: Likewise.
* libgnat/system-vxworks7-arm.ads: Likewise.
* libgnat/system-vxworks7-e500-kernel.ads: Likewise.
* libgnat/system-vxworks7-e500-rtp-smp.ads: Likewise.
* libgnat/system-vxworks7-e500-rtp.ads: Likewise.
* libgnat/system-vxworks7-ppc-kernel.ads: Likewise.
* libgnat/system-vxworks7-ppc-rtp-smp.ads: Likewise.
* libgnat/system-vxworks7-ppc-rtp.ads: Likewise.
* libgnat/system-vxworks7-ppc64-kernel.ads: Likewise.
* libgnat/system-vxworks7-ppc64-rtp-smp.ads: Likewise.
* libgnat/system-vxworks7-x86-kernel.ads: Likewise.
* libgnat/system-vxworks7-x86-rtp-smp.ads: Likewise.
* libgnat/system-vxworks7-x86-rtp.ads: Likewise.
* libgnat/system-vxworks7-x86_64-kernel.ads: Likewise.
* libgnat/system-vxworks7-x86_64-rtp-smp.ads: Likewise.

4 years ago[Ada] Remove support for -gnatP and pragma Polling
Arnaud Charlet [Thu, 25 Jun 2020 08:02:29 +0000 (04:02 -0400)]
[Ada] Remove support for -gnatP and pragma Polling

gcc/ada/

* Makefile.rtl, gnat1drv.adb, expander.adb
doc/gnat_rm/implementation_defined_pragmas.rst,
doc/gnat_ugn/building_executable_programs_with_gnat.rst,
doc/gnat_ugn/the_gnat_compilation_model.rst, exp_ch5.ads,
exp_ch5.adb, exp_ch6.adb, exp_ch7.adb, exp_util.adb,
exp_util.ads, libgnarl/s-osinte__aix.adb,
libgnarl/s-osinte__android.adb, libgnarl/s-osinte__darwin.adb,
libgnarl/s-osinte__gnu.adb, libgnarl/s-osinte__hpux-dce.adb,
libgnarl/s-osinte__lynxos178.adb, libgnarl/s-osinte__posix.adb,
libgnarl/s-osinte__qnx.adb, libgnarl/s-osinte__rtems.adb,
libgnarl/s-osinte__solaris.adb, libgnarl/s-osinte__vxworks.adb,
libgnarl/s-osinte__x32.adb, libgnarl/s-solita.adb,
libgnarl/s-taasde.adb, libgnarl/s-taprob.adb,
libgnarl/s-taprop__dummy.adb, libgnarl/s-taprop__hpux-dce.adb,
libgnarl/s-taprop__linux.adb, libgnarl/s-taprop__mingw.adb,
libgnarl/s-taprop__posix.adb, libgnarl/s-taprop__qnx.adb,
libgnarl/s-taprop__solaris.adb, libgnarl/s-taprop__vxworks.adb,
libgnarl/s-tarest.adb, libgnarl/s-tasini.adb,
libgnarl/s-taskin.adb, libgnarl/s-taspri__dummy.ads,
libgnarl/s-taspri__hpux-dce.ads, libgnarl/s-taspri__lynxos.ads,
libgnarl/s-taspri__mingw.ads,
libgnarl/s-taspri__posix-noaltstack.ads,
libgnarl/s-taspri__posix.ads, libgnarl/s-taspri__solaris.ads,
libgnarl/s-taspri__vxworks.ads, libgnarl/s-tassta.adb,
libgnarl/s-tasuti.adb, libgnarl/s-tposen.adb,
libgnat/a-except.adb, libgnat/a-except.ads,
libgnat/s-dwalin.adb, libgnat/s-dwalin.ads,
libgnat/s-mastop.ads, libgnat/s-soflin.adb,
libgnat/s-stalib.adb, libgnat/s-stalib.ads,
libgnat/s-stchop.adb, libgnat/s-stchop.ads,
libgnat/s-stchop__limit.ads, libgnat/s-traceb.ads,
libgnat/s-traent.adb, libgnat/s-traent.ads,
libgnat/s-trasym.adb, libgnat/s-trasym.ads,
libgnat/s-trasym__dwarf.adb, opt.adb, opt.ads, par-prag.adb,
sem_prag.adb, snames.ads-tmpl, switch-c.adb, targparm.adb,
targparm.ads, usage.adb: Remove support for -gnatP and pragma
Polling.
* gnat_ugn.texi: Regenerate.
* libgnat/a-excpol.adb, libgnat/a-excpol__abort.adb: Removed.

4 years ago[Ada] Unique itypes names for unconstrained array object declaration
Piotr Trojanek [Thu, 25 Jun 2020 19:48:51 +0000 (21:48 +0200)]
[Ada] Unique itypes names for unconstrained array object declaration

gcc/ada/

* sem_ch3.adb (Array_Type_Declaration): Create itype with unique
name.

4 years ago[Ada] Cleanup related to itypes for unconstrained object declaration
Piotr Trojanek [Thu, 25 Jun 2020 13:42:23 +0000 (15:42 +0200)]
[Ada] Cleanup related to itypes for unconstrained object declaration

gcc/ada/

* sem_ch3.adb (Analyze_Object_Declaration): Limit scope of a
local object by hiding it from local subprograms; simplify
nested if-then-if-then condition for an Ada 83 restriction.
(Array_Type_Declaration): Confirm with assertion when the else
branch is executed.
(Find_Type_Of_Object): Simplify membership test with a subtype
range.

4 years ago[Ada] SPARK: update for effectively volatile types and objects
Yannick Moy [Tue, 2 Jun 2020 16:24:16 +0000 (18:24 +0200)]
[Ada] SPARK: update for effectively volatile types and objects

gcc/ada/

* sem_prag.adb (Analyze_Global_In_Decl_Part): Update check to
reject volatile object for reading.
* sem_res.adb (Resolve_Actuals, Resolve_Entity_Name): Update
check to reject volatile object for reading.
* sem_util.adb, sem_util.ads
(Check_Nonvolatile_Function_Profile,
Has_Effectively_Volatile_Profile): Detect use of volatile object
for reading.
(Has_Enabled_Property): Accept constants as well.
(Is_Effectively_Volatile_For_Reading): New function based on
existing Is_Effectively_Volatile.
(Is_Effectively_Volatile_Object_For_Reading): Adapted from the
existing Is_Effectively_Volatile_Object, using a shared
implementation in Is_Effectively_Volatile_Object_Shared.

4 years ago[Ada] GNAT-LLVM unnesting issues in elaboration code
Gary Dismukes [Wed, 24 Jun 2020 21:22:58 +0000 (17:22 -0400)]
[Ada] GNAT-LLVM unnesting issues in elaboration code

gcc/ada/

* exp_ch7.adb (Check_Unnesting_In_Decls_Or_Stmts): In the case
of an if-statement, call Unnest_If_Statement to determine
whether there are nested subprograms in any of the statement
lists of the "if" parts that require a wrapping procedure to
handle possible up-level refeferences.
(Unnest_Block): Call Check_Unnesting_In_Handlers to do unnesting
of subprograms in exception handlers of the block statement.
(Unnest_If_Statement): New procedure to traverse the parts of an
if-statement and create wrapper procedures as needed to
encapsulate nested subprograms that may make up-level
references.
(Check_Stmts_For_Subp_Unnesting): New support procedure in
Unnest_If_Statement to traverse a statement list looking for
top-level subprogram bodies that require wrapping inside a
procedure (via Unnest_Statement_List) as well as possibly having
other statements (block, loop, if) that may themselves require
an unnesting transformation (via
Check_Unnesting_In_Decls_Or_Stmts).
(Unnest_Statement_List): New support procedure to traverse the
statements of a statement list that contains subprogram bodies
at the top level and replace the statement list with a wrapper
procedure body encapsulating the statements and a call to the
procedure.

4 years ago[Ada] Crash when specifying an abstract subprogram with Stream_Convert
Arnaud Charlet [Thu, 25 Jun 2020 09:36:54 +0000 (05:36 -0400)]
[Ada] Crash when specifying an abstract subprogram with Stream_Convert

gcc/ada/

* sem_prag.adb (Check_OK_Stream_Convert_Function): Check for
abstract subprograms.

4 years ago[Ada] Fix documentation of No_Local_Timing_Events
Piotr Trojanek [Thu, 25 Jun 2020 12:37:44 +0000 (14:37 +0200)]
[Ada] Fix documentation of No_Local_Timing_Events

gcc/ada/

* doc/gnat_rm/standard_and_implementation_defined_restrictions.rst
(No_Local_Timing_Events): Package Timing_Events is a child of
Ada.Real_Time, not of Ada.
* gnat_rm.texi: Regenerate.

4 years ago[Ada] Add Max_Integer_Size attribute and couple of helper functions
Eric Botcazou [Tue, 23 Jun 2020 10:49:04 +0000 (12:49 +0200)]
[Ada] Add Max_Integer_Size attribute and couple of helper functions

gcc/ada/

* doc/gnat_rm/implementation_defined_attributes.rst: Document the
new Max_Integer_Size attribute.
* gnat_rm.texi: Regenerate.
* exp_attr.adb (Get_Integer_Type): Call Small_Integer_Type_For.
(Expand_N_Attribute_Reference) <Attribute_Pred>: Replace selection
code with call to Integer_Type_For.
<Attribute_Succ>: Likewise.
<Attribute_Val>: Likewise.
<Attribute_Valid>: Likewise.
<Attribute_Max_Integer_Size>: Raise Program_Error.
* exp_ch3.adb (Expand_Freeze_Enumeration_Type): Replace selection
code with call to Integer_Type_For.
(Simple_Init_Initialize_Scalars_Type): Use Long_Long_Unsigned and
System_Max_Integer_Size to size the largest integer type.
* exp_pakd.adb (Compute_Linear_Subscript): Minor tweak.
(Create_Packed_Array_Impl_Type): Use Small_Integer_Type_For.
* exp_util.ads (Integer_Type_For): New function.
(Small_Integer_Type_For): Likewise.
* exp_util.adb (Adjust_Condition): Use Integer_Type_For.
(Component_May_Be_Bit_Aligned): Use System_Max_Integer_Size.
(Integer_Type_For): New function.
(Small_Integer_Type_For): Likewise.
(Matching_Standard_Type): Use Small_Integer_Type_For.
(Needs_Constant_Address): Replace 64 with System_Max_Integer_Size.
* freeze.adb (Set_Small_Size): Likewise.
(Size_Known): Likewise.
(Check_Suspicious_Modulus): Likewise.
(Check_Large_Modular_Array): Likewise.
(Freeze_Entity): Likewise.
* layout.adb (Layout_Type): Likewise.
* sem_aggr.adb: Add with and use clauses for Ttypes.
(Resolve_Aggregate): Replace 64 with System_Max_Integer_Size.
* sem_attr.ads (Attribute_Impl_Def): Add Attribute_Max_Integer_Size.
* sem_attr.adb (Analyze_Attribute) <Attribute_Max_Integer_Size>: New
(Eval_Attribute): Likewise.
* sem_ch13.adb (Adjust_Record_For_Reverse_Bit_Order): Change max
scalar size to System_Max_Integer_Size.
(Check_Array_Type): Replace 64 with System_Max_Integer_Size and
remove superfluous test.
(OK_Component): Likewise.
* sem_ch5.adb: Add with and use clauses for Ttypes.
(Analyze_Assignment): Replace 64 with System_Max_Integer_Size.
* snames.ads-tmpl (Name_Max_Integer_Size): New attribute name.
(Attribute_Id): Add Attribute_Max_Integer_Size.
* ttypes.ads (System_Max_Integer_Size): New constant.

4 years agotree-optimization/97428 - split SLP groups for loop vectorization
Richard Biener [Thu, 15 Oct 2020 09:55:53 +0000 (11:55 +0200)]
tree-optimization/97428 - split SLP groups for loop vectorization

This enables SLP store group splitting also for loop vectorization.
For the existing testcase gcc.dg/vect/vect-complex-5.c this then
generates much better code, likewise for the PR97428 testcase.

Both of those have a splitting opportunity splitting the group
into two equal (vector-sized) halves, still the patch enables
quite arbitrary splitting since generally the interleaving scheme
results in quite awkward code for even small groups.  If any
problems surface with this it's easy to restrict the splitting
to known-good cases.

2020-10-15  Richard Biener  <rguenther@suse.de>

PR tree-optimization/97428
* tree-vect-slp.c (vect_analyze_slp_instance): Split store
groups also for loop vectorization.

* gcc.dg/vect/vect-complex-5.c: Expect to SLP.
* gcc.dg/vect/pr97428.c: Likewise.

4 years agoDaily bump.
GCC Administrator [Fri, 16 Oct 2020 00:16:29 +0000 (00:16 +0000)]
Daily bump.

4 years agocompiler: don't export function type parameter names
Ian Lance Taylor [Thu, 15 Oct 2020 22:34:14 +0000 (15:34 -0700)]
compiler: don't export function type parameter names

When hashing a function type the parameter names are ignored.
Therefore, we should not write them into the export data.
Otherwise, minor changes in the order in which we process the
types can cause the export data to change uselessly, leading to
unnecessary rebuilds.

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/262818

4 years agoruntime: use correct types in __go_ptrace shim
Nikhil Benesch [Wed, 14 Oct 2020 19:02:12 +0000 (19:02 +0000)]
runtime: use correct types in __go_ptrace shim

Make the types of the addr and data arguments in the __go_ptrace shim
match the types declared in Go and the types declared by the C ptrace
function, i.e., void*. This avoids a warning about an implicit
int-to-pointer cast on some platforms.

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/262340

4 years agolibgo: correct Makefile typo in path to x/net/route package
Nikhil Benesch [Wed, 14 Oct 2020 19:24:49 +0000 (19:24 +0000)]
libgo: correct Makefile typo in path to x/net/route package

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/262342

4 years agocompiler: export type for string and bool constants
Ian Lance Taylor [Wed, 14 Oct 2020 22:30:00 +0000 (15:30 -0700)]
compiler: export type for string and bool constants

Also consolidate the identical code for constant type export into a
pair of static methods.

Fixes golang/go#35739

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/262437

4 years agotestsuite: Fix some endianness bugs in p9 runnable tests.
David Edelsohn [Thu, 15 Oct 2020 18:12:52 +0000 (14:12 -0400)]
testsuite: Fix some endianness bugs in p9 runnable tests.

This patch fixes some bugs in the powerpc testsuite for runnable tests
whose expected values were endian dependent.

gcc/testsuite/ChangeLog:

2020-10-15  David Edelsohn  <dje.gcc@gmail.com>

* gcc.target/powerpc/builtins-1-p9-runnable.c: Adjust for big endian.
* gcc.target/powerpc/builtins-7-p9-runnable.c: Same.

4 years agolibstdc++: Fix typos in copyright notice
Jonathan Wakely [Thu, 15 Oct 2020 18:19:15 +0000 (19:19 +0100)]
libstdc++: Fix typos in copyright notice

It looks like I did a s/a/__a/ substition in one of these headers, and
then copied it to the other one.

libstdc++-v3/ChangeLog:

* include/std/concepts: Fix typos in copyright notice.
* include/std/ranges: Likewise.

4 years agoc++: Fix [[deprecated]] and implicit operator==. [PR97358]
Jason Merrill [Thu, 15 Oct 2020 16:54:16 +0000 (12:54 -0400)]
c++: Fix [[deprecated]] and implicit operator==. [PR97358]

Trying to diagnose the problem with an implicit copy function breaks if the
function isn't actually a copy function.

gcc/cp/ChangeLog:

PR c++/95844
* decl.c (copy_fn_p): Return false for a function that is neither a
constructor nor an assignment operator.
(move_signature_fn_p): Likewise.

gcc/testsuite/ChangeLog:

PR c++/95844
* g++.dg/cpp2a/spaceship-eq10.C: New test.

4 years agotestsuite: Add appropriate target requirements to P9 testcases.
David Edelsohn [Thu, 15 Oct 2020 02:05:09 +0000 (22:05 -0400)]
testsuite: Add appropriate target requirements to P9 testcases.

This patch adds effective target and target specific expected results
to a few P9 testcases.

gcc/testsuite/ChangeLog:

* gcc.target/powerpc/builtins-5-p9-runnable.c: Require lp64.
* gcc.target/powerpc/builtins-msum-runnable.c: Require int128.
* gcc.target/powerpc/float128-cmp2-runnable.c: Require float128.
* gcc.target/powerpc/fold-vec-extract-double.p9.c: Require lp64.

4 years agoc++: Improve printing of pointers-to-members [PR97406, PR85901]
Marek Polacek [Wed, 14 Oct 2020 16:59:58 +0000 (12:59 -0400)]
c++: Improve printing of pointers-to-members [PR97406, PR85901]

This PR points out that when printing the parameter mapping for a
pointer-to-member-function, the output was truncated:

  [with T = void (X::*]

Fixed by printing the abstract declarator for pointers-to-members in
cxx_pretty_printer::type_id.  So now we print:

  [with T = void (X::*)()]

But when I tried a pointer-to-data-member, I got

  [with T = â€˜offset_type’ not supported by simple_type_specifier)‘offset_type’ not supported by direct_abstract_declarator]

so had to fix that too so that we now print:

  [with T = int X::*]

or

  [with T = int (X::*)[5]]

when the type is an array type.  Which is what PR85901 was about.

gcc/cp/ChangeLog:

PR c++/97406
PR c++/85901
* cxx-pretty-print.c (pp_cxx_type_specifier_seq): Handle OFFSET_TYPE.
(cxx_pretty_printer::abstract_declarator): Fix the printing of ')'.
(cxx_pretty_printer::direct_abstract_declarator): Handle OFFSET_TYPE.
(cxx_pretty_printer::type_id): Likewise.  Print the abstract declarator
for pointers-to-members.

gcc/testsuite/ChangeLog:

PR c++/97406
PR c++/85901
* g++.dg/diagnostic/ptrtomem1.C: New test.
* g++.dg/diagnostic/ptrtomem2.C: New test.

4 years ago[nvptx, testsuite] Xfail stack atomics
Tom de Vries [Thu, 15 Oct 2020 13:55:24 +0000 (15:55 +0200)]
[nvptx, testsuite] Xfail stack atomics

Nvptx currently doesn't support atomics if it involves a stack address.
PR97444 is open about.

Xfail corresponding execution fails in gcc.dg/atomic.  Tested on nvptx.

gcc/testsuite/ChangeLog:

2020-10-15  Tom de Vries  <tdevries@suse.de>

* gcc.dg/atomic/c11-atomic-exec-6.c: Xfail execution for nvptx.
* gcc.dg/atomic/c11-atomic-exec-7.c: Same.
* gcc.dg/atomic/stdatomic-op-5.c: Same.

4 years agoFix fndecl's for fortran coarray calls.
Andre Vehreschild [Thu, 15 Oct 2020 13:43:35 +0000 (15:43 +0200)]
Fix fndecl's for fortran coarray calls.

gcc/fortran/ChangeLog:

* trans-decl.c (gfc_build_builtin_function_decls): Fix the coarray fndecls.

4 years ago[nvptx] Remove -m32
Tom de Vries [Thu, 15 Oct 2020 09:37:43 +0000 (11:37 +0200)]
[nvptx] Remove -m32

The nvptx port has an -m32 option, but it's not clear whether this
was ever build/tested/used.

Don't expose to user anymore.  Tested on nvptx.

gcc/ChangeLog:

2020-10-15  Tom de Vries  <tdevries@suse.de>

PR target/97436
* config/nvptx/nvptx.opt (m32): Comment out.
* doc/invoke.texi (NVPTX options): Remove -m32.

gcc/testsuite/ChangeLog:

2020-10-15  Tom de Vries  <tdevries@suse.de>

PR target/97436
* gcc.target/nvptx/atomic_fetch-3.c: Remove.

4 years agoFix toplevel comment of attr-fnspec.h
Jan Hubicka [Thu, 15 Oct 2020 12:46:12 +0000 (14:46 +0200)]
Fix toplevel comment of attr-fnspec.h

gcc/ChangeLog:

2020-10-15  Jan Hubicka  <hubicka@ucw.cz>
    Richard Biener  <rguenther@suse.de>

* attr-fnspec.h: Fix toplevel comment.

4 years agofix TARGET_MEM_REF dumping
Richard Biener [Thu, 15 Oct 2020 11:08:48 +0000 (13:08 +0200)]
fix TARGET_MEM_REF dumping

This fixes the missing constant offset from TARGET_MEM_REF dumping.

2020-10-15  Richard Biener  <rguenther@suse.de>

* tree-pretty-print.c (dump_mem_ref): Print constant offset
also for TARGET_MEM_REF.

4 years agoAlso accept symbols in other partition in symtab_node::binds_to_current_def_p
Jan Hubicka [Thu, 15 Oct 2020 11:50:22 +0000 (13:50 +0200)]
Also accept symbols in other partition in symtab_node::binds_to_current_def_p

* symtab.c (symtab_node::binds_to_current_def_p): Also accept symbols
defined in other partition.

4 years agolibgomp: Amend documentation for omp_get_max_active_levels and omp_get_supported_acti...
Kwok Cheung Yeung [Thu, 15 Oct 2020 09:32:09 +0000 (02:32 -0700)]
libgomp: Amend documentation for omp_get_max_active_levels and omp_get_supported_active_levels

2020-10-15  Kwok Cheung Yeung  <kcy@codesourcery.com>

libgomp/
* libgomp.texi (omp_get_max_active_levels): Modify description.
(omp_get_supported_active_levels): Make descriptions consistent.

4 years agoFix ICE in vectorizable_live_operation
Richard Biener [Thu, 15 Oct 2020 08:58:41 +0000 (10:58 +0200)]
Fix ICE in vectorizable_live_operation

This fixes the case where the insertion iterator for the live stmt
is the end of a BB by adjusting the dominance query to the definition
of the def we're substituting.

2020-10-15  Richard Biener  <rguenther@suse.de>

* tree-vect-loop.c (vectorizable_live_operation): Adjust
dominance query.

* gcc.dg/vect/bb-slp-52.c: New testcase.

4 years ago[Ada] Spurious visibility on private with package
Arnaud Charlet [Tue, 23 Jun 2020 14:39:12 +0000 (10:39 -0400)]
[Ada] Spurious visibility on private with package

gcc/ada/

* sem_ch10.adb (Install_With_Clause): Fix implementation of Ada
2005 AI-262 by taking into account generic packages.  Minor
reformatting.
* libgnat/a-cbhase.ads, libgnat/a-cbhase.adb: Remove use clause
on runtime unit spec.

4 years ago[Ada] Wrong use of Scope_Depth_Value
Arnaud Charlet [Tue, 23 Jun 2020 16:14:03 +0000 (12:14 -0400)]
[Ada] Wrong use of Scope_Depth_Value

gcc/ada/

* einfo.ads, einfo.adb (Scope_Depth_Value,
Set_Scope_Depth_Value): Add assertions on valid nodes and update
documentation accordingly.
(Write_Field22_Name): Sync with change in Scope_Depth_Value.
* sem_ch8.adb (Find_Direct_Name): Fix call to Scope_Depth_Value.

4 years ago[Ada] Ada2020: AI12-0003 Specifying the standard storage pool
Javier Miranda [Wed, 24 Jun 2020 19:05:14 +0000 (15:05 -0400)]
[Ada] Ada2020: AI12-0003 Specifying the standard storage pool

gcc/ada/

* sem_prag.adb (Analyze_Pragma): Adding semantic support of
Standard to Default_Storage_Pool.
* freeze.adb (Freeze_Entity): If pragma Default_Storage_Pool
applies and it is set to Standard then use the global pool as
the associated storage pool of the access type.

4 years ago[Ada] Cleanup definition of Might_Have_Tasks
Javier Miranda [Wed, 24 Jun 2020 19:57:36 +0000 (15:57 -0400)]
[Ada] Cleanup definition of Might_Have_Tasks

gcc/ada/

* exp_ch6.ads (Might_Have_Tasks): Update documentation.
* exp_ch6.adb (Might_Have_Tasks): Return also true when the type
has tasks.
(Make_Build_In_Place_Call_In_Allocator): Code cleanup.
* exp_ch3.adb (Ensure_Activation_Chain_And_Master,
Expand_N_Full_Type_Declaration, Expand_N_Object_Declaration):
Code cleanup.

4 years ago[Ada] Get finalization right when a function returns a function call
Steve Baird [Tue, 23 Jun 2020 23:12:36 +0000 (16:12 -0700)]
[Ada] Get finalization right when a function returns a function call

gcc/ada/

* checks.adb (Apply_Predicate_Check): Generate "infinite
recursion" warning message even if run-time predicate checking
is disabled.
* exp_ch6.adb (Expand_Simple_Function_Return): In testing
whether the returned expression is a function call, look for the
case where the call has been transformed into a dereference of
an access value that designates the result of a function call.
* sem_ch3.adb (Analyze_Object_Declaration): Legality checking
for a static expression is unaffected by assertion policy (and,
in particular, enabling/disabling of subtype predicates.  To get
the right legality checking, we need to call
Check_Expression_Against_Static_Predicate for a static
expression even if predicate checking is disabled for the given
predicate-bearing subtype.  On the other hand, we don't want to
call Make_Predicate_Check unless predicate checking is enabled.
* sem_ch7.adb (Uninstall_Declarations.Preserve_Full_Attributes):
Preserve the Predicates_Ignored attribute.
* sem_eval.adb (Check_Expression_Against_Static_Predicate):
Previously callers ensured that this procedure was only called
if predicate checking was enabled; that is no longer the case,
so predicates-disabled case must be handled.
* sem_prag.adb (Analyze_Pragma): Fix bug in setting
Predicates_Ignored attribute in Predicate pragma case.

4 years ago[Ada] Crash on subtype of fixed-point type
Ed Schonberg [Wed, 24 Jun 2020 17:24:49 +0000 (13:24 -0400)]
[Ada] Crash on subtype of fixed-point type

gcc/ada/

* freeze.adb (Freeze_Fixed_Point_Type): Do not scale the bounds
of a declared subtype using the 'Small of the type;  this is
done during resolution of the bound itself, unlike what is done
for the bounds of the base type, which are used to determine its
required size. Previous code performed this scaling twice,
leading to meaningless values for such a subtype.

4 years ago[Ada] Fix access to uninitialized global variable when emitting error
Piotr Trojanek [Wed, 24 Jun 2020 17:18:19 +0000 (19:18 +0200)]
[Ada] Fix access to uninitialized global variable when emitting error

gcc/ada/

* sem_util.adb (Bad_Predicated_Subtype_Use): Emit an
unconditional error, not a conditional warning.

4 years ago[Ada] Cleanup defensive guards for Null_Exclusion_Present
Piotr Trojanek [Wed, 24 Jun 2020 08:25:23 +0000 (10:25 +0200)]
[Ada] Cleanup defensive guards for Null_Exclusion_Present

gcc/ada/

* sem_ch3.adb (Process_Subtype): Combine guards for
Null_Exclusion_Present in May_Have_Null_Exclusion; use this
combined guard when checking AI-231.

4 years ago[Ada] Bring defensive guard for Null_Exclusion_Present up to date
Piotr Trojanek [Wed, 24 Jun 2020 07:57:53 +0000 (09:57 +0200)]
[Ada] Bring defensive guard for Null_Exclusion_Present up to date

gcc/ada/

* sem_ch3.adb (Process_Subtype): Sync May_Have_Null_Exclusion
with assertion in Null_Exclusion_Present; clarify the scope of
local variables.

4 years ago[Ada] Explain predicate function not being inherited by index type
Piotr Trojanek [Tue, 23 Jun 2020 19:45:31 +0000 (21:45 +0200)]
[Ada] Explain predicate function not being inherited by index type

gcc/ada/

* sem_ch3.adb (Analyze_Subtype_Declaration): Fix style.
(Make_Index): Refactor to avoid repeated detection of subtype
indication; add comment.

4 years ago[Ada] Adjust style in support for CUDA_Execute pragma
Piotr Trojanek [Wed, 24 Jun 2020 07:30:10 +0000 (09:30 +0200)]
[Ada] Adjust style in support for CUDA_Execute pragma

gcc/ada/

* sem_prag.adb (Is_Acceptable_Dim3): Use Is_RTE to not pull CUDA
package unless necessary; rename local Tmp variable; iterate
with procedural Next.

4 years ago[Ada] Avoid unnecessary (re)assignments in Make_Info
Piotr Trojanek [Tue, 23 Jun 2020 17:50:18 +0000 (19:50 +0200)]
[Ada] Avoid unnecessary (re)assignments in Make_Info

gcc/ada/

* sem_ch3.adb (Array_Type_Declaration): Refine type of a local
variable.
(Make_Index): Simplify to avoid assignment with a type entity
and then backtracking by reassigning to Empty; remove excessive
whitespace.
* sem_ch9.adb (Analyze_Entry_Body): Remove extra parens.

4 years ago[Ada] Remove excessive defensive calls to Is_Type
Piotr Trojanek [Tue, 23 Jun 2020 15:40:22 +0000 (17:40 +0200)]
[Ada] Remove excessive defensive calls to Is_Type

gcc/ada/

* sem_ch3.adb (Access_Subprogram_Declaration): Remove extra
parens.
(Make_Index): Remove excessive calls to Is_Type.

4 years ago[Ada] Code cleanup
Arnaud Charlet [Tue, 23 Jun 2020 14:43:01 +0000 (10:43 -0400)]
[Ada] Code cleanup

gcc/ada/

* sem_util.adb (Enter_Name): Remove unnecessary conditions in
Enter_Name that come from the beginning of times.

4 years ago[Ada] Remove obsolete DSP comment
Bob Duff [Tue, 23 Jun 2020 15:38:40 +0000 (11:38 -0400)]
[Ada] Remove obsolete DSP comment

gcc/ada/

* exp_ch6.adb (Expand_Simple_Function_Return): Remove DSP part
of comment, and reformat.

4 years ago[Ada] Do not expand 'Initialized in codepeer mode
Boris Yakobowski [Tue, 23 Jun 2020 10:16:53 +0000 (12:16 +0200)]
[Ada] Do not expand 'Initialized in codepeer mode

gcc/ada/

* exp_attr.adb (Expand_N_Attribute_Reference): Do not expand
'Initialized in CodePeer mode.

4 years ago[Ada] Assert failure on incorrect code
Arnaud Charlet [Tue, 23 Jun 2020 07:56:34 +0000 (03:56 -0400)]
[Ada] Assert failure on incorrect code

gcc/ada/

* sem_ch12.adb (Reset_Entity): Protect against malformed tree.

4 years ago[Ada] Double evaluation of predicate
Arnaud Charlet [Mon, 22 Jun 2020 10:18:14 +0000 (06:18 -0400)]
[Ada] Double evaluation of predicate

gcc/ada/

* sem_ch13.adb (Add_Predicates): Prevent analyzing twice the
same pragma in case an inner package references the type with a
predicate (as opposed to defining the type).

4 years ago[Ada] Do not use maximal values from System in runtime units
Eric Botcazou [Tue, 23 Jun 2020 09:53:53 +0000 (11:53 +0200)]
[Ada] Do not use maximal values from System in runtime units

gcc/ada/

* libgnat/a-cfinve.adb (Int): Use subtype of Long_Long_Integer.
* libgnat/a-cofove.adb (Int): Likewise.
* libgnat/a-cgcaso.adb (T): Likewise.
* libgnat/a-cogeso.adb (T): Likewise.
* libgnat/g-debpoo.ads (Byte_Count): Use Long_Long_Integer'Size.

4 years ago[Ada] Simplify membership tests with N_Entity subtype
Piotr Trojanek [Tue, 23 Jun 2020 08:18:48 +0000 (10:18 +0200)]
[Ada] Simplify membership tests with N_Entity subtype

gcc/ada/

* sem_ch12.adb: Replace list of N_Defining_... enumerations with
N_Entity.

4 years ago[Ada] Refine type from Nat to Pos in Make_Index
Piotr Trojanek [Mon, 22 Jun 2020 11:17:44 +0000 (13:17 +0200)]
[Ada] Refine type from Nat to Pos in Make_Index

gcc/ada/

* sem_ch3.ads, sem_ch3.adb (Make_Index): Refined type of
parameter.
(Constrain_Index): Likewise.
(Array_Type_Declaration): Refine type of a local counter
variable; remove a trivially useless initialization.

4 years ago[Ada] Fix range check on constrained array with expanded index name
Piotr Trojanek [Mon, 22 Jun 2020 11:48:43 +0000 (13:48 +0200)]
[Ada] Fix range check on constrained array with expanded index name

gcc/ada/

* sem_ch3.adb (Analyze_Subtype_Declaration): Recognize both
identifiers and expanded names; use high-level Is_Scalar_Type
instead of low-level membership test.

4 years ago[Ada] Add support for compile time evaluation of Shift_Right_Arithmetic
Arnaud Charlet [Sun, 21 Jun 2020 08:27:07 +0000 (04:27 -0400)]
[Ada] Add support for compile time evaluation of Shift_Right_Arithmetic

gcc/ada/

* sem_eval.adb (Eval_Intrinsic_Call, Fold_Shift): Add support
for Shift_Right_Arithmetic and for signed integers.
* exp_ch4.adb (Expand_N_Op_Rotate_Left,
Expand_N_Op_Rotate_Right, Expand_N_Op_Shift_Left,
Expand_N_Op_Shift_Right_Arithmetic): Minor reformatting and code
cleanup to ensure a consistent handling. Update comments and add
assertion.

4 years ago[Ada] Ada2020: AI12-0180 Using subprograms and entries in invariants
Bob Duff [Mon, 22 Jun 2020 19:23:45 +0000 (15:23 -0400)]
[Ada] Ada2020: AI12-0180 Using subprograms and entries in invariants

gcc/ada/

* sem_ch13.adb (Visible_Component): Enable this code for task
and protected types, as well as record and private types.
* sem_ch13.ads (Replace_Type_References_Generic): Update
comment.  Move the efficiency comment into the body, because
it's about the implementation.

4 years ago[Ada] Warn on unknown aspect
Arnaud Charlet [Mon, 22 Jun 2020 06:59:37 +0000 (02:59 -0400)]
[Ada] Warn on unknown aspect

gcc/ada/

* par-ch13.adb (Get_Aspect_Specifications): Generate a warning
rather than an error on unknown aspects unless -gnatd2 is used.
(Aspect_Specifications_Present): Improve detection of unknown
aspects.
* debug.adb (Debug_Flag_2): Update document.

4 years ago[Ada] Complete support for static intrinsic functions
Arnaud Charlet [Sun, 21 Jun 2020 17:52:29 +0000 (13:52 -0400)]
[Ada] Complete support for static intrinsic functions

gcc/ada/

* sem_res.adb (Resolve_Call): Do not try to inline intrinsic
calls.

4 years ago[Ada] Ada_2020: Add aspect Aggregate to standard container units
Ed Schonberg [Sun, 21 Jun 2020 16:58:55 +0000 (12:58 -0400)]
[Ada] Ada_2020: Add aspect Aggregate to standard container units

gcc/ada/

* exp_aggr.adb (Expand_N_Aggregate): A record aggregate requires
a non-private type.
* sem_ch13.adb (Valid_Assign_Indexed): New subprogram local to
Resolve_Aspect_Aggregate, to handle the case when the
corresponding name appearing in the aspect specification for an
indexed aggregate is an overloaded operation.
* libgnat/a-convec.ads, libgnat/a-convec.adb,
libgnat/a-coinve.ads, libgnat/a-coinve.adb,
libgnat/a-cobove.ads, libgnat/a-cobove.adb,
libgnat/a-cdlili.ads, libgnat/a-cdlili.adb,
libgnat/a-cbdlli.ads, libgnat/a-cbdlli.adb,
libgnat/a-cohama.ads, libgnat/a-cihama.ads,
libgnat/a-cbhama.ads, libgnat/a-cborma.ads,
libgnat/a-ciorma.ads, libgnat/a-coorma.ads,
libgnat/a-cihase.ads, libgnat/a-cohase.ads,
libgnat/a-cbhase.ads, libgnat/a-cborse.ads,
libgnat/a-ciorse.ads, libgnat/a-coorse.ads: Add Ada_2020 aspect
Aggregate to types declared in standard containers, as well as
new subprograms where required.

4 years ago[Ada] Add iterators over GNAT.Array_Split.Slice_Set
Arnaud Charlet [Sun, 21 Jun 2020 16:36:27 +0000 (12:36 -0400)]
[Ada] Add iterators over GNAT.Array_Split.Slice_Set

gcc/ada/

* libgnat/g-arrspl.ads, libgnat/g-arrspl.adb (Create,
First_Cursor, Advance, Has_Element): New.

4 years ago[Ada] AI12-0385 Predefined shifts and rotates should be static
Arnaud Charlet [Wed, 17 Jun 2020 11:41:34 +0000 (07:41 -0400)]
[Ada] AI12-0385 Predefined shifts and rotates should be static

gcc/ada/

* Makefile.rtl: Add target pair for interfac.ads.
* libgnat/interfac.ads: Add a comment.
* libgnat/interfac__2020.ads: New, used for bootstrap purposes.
* sem_util.adb (Is_Static_Function): Always return False for pre
Ada 2020 to e.g. ignore the Static aspect in Interfaces for
Ada < 2020.

4 years ago[Ada] Do not remove side effects from any object declarations in SPARK
Piotr Trojanek [Fri, 19 Jun 2020 15:14:42 +0000 (17:14 +0200)]
[Ada] Do not remove side effects from any object declarations in SPARK

gcc/ada/

* exp_util.adb (Remove_Side_Effects): Move special-casing for
GNATprove to be applied to all object declarations.

4 years agotree-optimization/97482 - fix split_constant_offset of nop-conversions
Richard Biener [Thu, 15 Oct 2020 07:10:40 +0000 (09:10 +0200)]
tree-optimization/97482 - fix split_constant_offset of nop-conversions

split_constant_offset is confused about a nop-conversion from
unsigned long to sizetype and tries to prove non-overflowing
of the inner operation.  Obviously the conversion could have been
elided so make sure split_constant_offset handles this properly.

It also makes sure that convert_to_ptrofftype does not introduce
conversions not necessary which in this case is the source for
the unnecessary conversion.

2020-10-15  Richard Biener  <rguenther@suse.de>

PR tree-optimization/97482
* tree-data-ref.c (split_constant_offset_1): Handle
trivial conversions better.
* fold-const.c (convert_to_ptrofftype_loc): Elide conversion
if the offset is already ptrofftype_p.

* gcc.dg/vect/pr97428.c: New testcase.

4 years ago[nvptx, testsuite] Remove xfail for PR84958
Tom de Vries [Thu, 15 Oct 2020 08:29:40 +0000 (10:29 +0200)]
[nvptx, testsuite] Remove xfail for PR84958

The xfail in gcc.dg/tree-ssa/pr84512.c for PR84958 has started to xpass,
presumably because of commit 744fd446c32 "tree-ssa-sccvn.c (class pass_fre):
Add may_iterate pass parameter".

Remove the xfail.  Tested on nvptx.

gcc/testsuite/ChangeLog:

2020-10-15  Tom de Vries  <tdevries@suse.de>

* gcc.dg/tree-ssa/pr84512.c: Remove xfail for nvptx.

4 years ago[nvptx, testsuite] Fix xpass with ident-0b.c
Tom de Vries [Thu, 15 Oct 2020 07:37:03 +0000 (09:37 +0200)]
[nvptx, testsuite] Fix xpass with ident-0b.c

For nvptx, I see:
...
XPASS: c-c++-common/ident-0b.c  -Wc++-compat   scan-assembler-not GCC:
...

Fix this by requiring effective target ident_directive.  Tested on nvptx.

gcc/testsuite/ChangeLog:

2020-10-15  Tom de Vries  <tdevries@suse.de>

* c-c++-common/ident-0b.c: Require effective target ident_directive.

4 years ago[nvptx, testsuite] Remove dg-skip-if for ptxas oom
Tom de Vries [Thu, 15 Oct 2020 06:00:23 +0000 (08:00 +0200)]
[nvptx, testsuite] Remove dg-skip-if for ptxas oom

There's a dg-skip-if for nvptx that is related to ptxas oom.

If I remove it, the test-case passes for me (with ptxas from cuda 9.1).

I've tested it on a range of cudas, from 5.0 to 11.1 and did not
manage to reproduce the fail.

Remove the dg-skip-if.  Tested on nvptx.

gcc/testsuite/ChangeLog:

2020-10-15  Tom de Vries  <tdevries@suse.de>

* gcc.c-torture/compile/limits-externdecl.c: Remove dg-skip-if for
nvptx.

4 years ago[nvptx, testsuite] Disable default xfails
Tom de Vries [Wed, 14 Oct 2020 10:07:21 +0000 (12:07 +0200)]
[nvptx, testsuite] Disable default xfails

For nvptx, I run into a couple of XPASSes due to nvptx not being listed in:
...
  { xfail { ! { long list of targets } } }
...

Add nvptx to the list to get a PASS.  Tested on nvptx.

gcc/testsuite/ChangeLog:

2020-10-15  Tom de Vries  <tdevries@suse.de>

* gcc.dg/attr-alloc_size-11.c: Don't xfail for nvptx.
* gcc.dg/tree-ssa/20040204-1.c: Same.

4 years ago[nvptx, testsuite] Remove dg-skip-if for ptxas crash fixed in cuda 8.0
Tom de Vries [Wed, 14 Oct 2020 14:26:50 +0000 (16:26 +0200)]
[nvptx, testsuite] Remove dg-skip-if for ptxas crash fixed in cuda 8.0

The test-case gcc.c-torture/execute/pr68185.c has a dg-skip-if for nvptx due
to "ptxas crashes or executes incorrectly".

I've managed to reproduce the problem using cuda 7.5:
...
FAIL: gcc.c-torture/execute/pr68185.c   -O0  (test for excess errors)
Excess errors:
nvptx-as: ptxas terminated with signal 11 [Segmentation fault], core dumped
...
but it's fixed starting cuda 8.0.

Remove the dg-skip-if.  Tested on nvptx.

gcc/testsuite/ChangeLog:

2020-10-15  Tom de Vries  <tdevries@suse.de>

* gcc.c-torture/execute/pr68185.c: Remove dg-skip-if for nvptx.

4 years ago[nvptx, testsuite] Remove dg-skip-if for ptxas crashes
Tom de Vries [Wed, 14 Oct 2020 14:18:16 +0000 (16:18 +0200)]
[nvptx, testsuite] Remove dg-skip-if for ptxas crashes

There's a dg-skip-if for nvptx that is related to a ptxas crash.

If I remove it, the test-case passes for me (with ptxas from cuda 9.1).

I've tested this on a range of cudas, from 5.0 to 11.1 and did not
manage to reproduce the fail.

Remove the dg-skip-if.  Tested on nvptx.

gcc/testsuite/ChangeLog:

2020-10-15  Tom de Vries  <tdevries@suse.de>

* gcc.c-torture/execute/981019-1.c: Remove dg-skip-if for nvptx.

4 years ago[nvptx, testsuite] Remove xpassing xfails for ptxas crashes
Tom de Vries [Wed, 14 Oct 2020 13:51:24 +0000 (15:51 +0200)]
[nvptx, testsuite] Remove xpassing xfails for ptxas crashes

There's a couple of nvptx xfails that are related to ptxas crashes,
which are xpassing for me (with ptxas from cuda 9.1).

I've tested these on a range of cudas, from 5.0 to 11.1 and did not
manage to reproduce the fails.

Remove the xfails.  Tested on nvptx.

gcc/testsuite/ChangeLog:

2020-10-15  Tom de Vries  <tdevries@suse.de>

* gcc.c-torture/compile/pr42717.c: Remove nvptx xfail.
* gcc.c-torture/compile/pr61684.c: Same.
* gcc.c-torture/execute/pr20601-1.c: Same.
* gcc.c-torture/execute/pr52129.c: Same.
* gcc.c-torture/execute/pr59221.c: Same.
* gcc.dg/pr68671.c: Same.

4 years agotestsuite: Partially fix up modref-*.c tests
Jakub Jelinek [Thu, 15 Oct 2020 08:19:23 +0000 (10:19 +0200)]
testsuite: Partially fix up modref-*.c tests

This ia a partial attempt to fix:
FAIL: gcc.dg/ipa/modref-1.c (test for excess errors)
FAIL: gcc.dg/ipa/modref-1.c scan-ipa-dump modref "param offset: 1"
FAIL: gcc.dg/ipa/modref-1.c scan-ipa-dump modref "param offset: 2"
FAIL: gcc.dg/tree-ssa/modref-4.c (test for excess errors)
FAIL: gcc.dg/tree-ssa/modref-4.c scan-tree-dump modref1 "param offset: 1"
UNRESOLVED: gcc.dg/tree-ssa/modref-4.c scan-tree-dump modref2 "param offset: 2"
UNRESOLVED: gcc.dg/tree-ssa/modref-4.c scan-tree-dump modref2 "return 0"
The return 0 scan still FAILs.

2020-10-15  Jakub Jelinek  <jakub@redhat.com>

* gcc.dg/ipa/modref-1.c: Remove space between param offset: and number
in scan-ipa-dump.
(b): Declare return type to void.
(main): Declare return type to int.  Change c to array of 3 chars.
* gcc.dg/tree-ssa/modref-4.c: Remove space between param offset: and
number in scan-ipa-dump.  Use modref1 instead of modref2.
(b): Declare return type to void.
(main): Declare return type to int.  Change c to array of 3 chars.

4 years agoIPA: fix profile handling in IRA
Martin Liska [Tue, 13 Oct 2020 14:44:47 +0000 (16:44 +0200)]
IPA: fix profile handling in IRA

gcc/ChangeLog:

PR ipa/97295
* profile-count.c (profile_count::to_frequency): Move part of
gcc_assert to STATIC_ASSERT.
* regs.h (REG_FREQ_FROM_BB): Do not use count.to_frequency for
a function that does not have count_max initialized.

4 years agoparams: Fix up help.exp testing
Jakub Jelinek [Thu, 15 Oct 2020 07:24:06 +0000 (09:24 +0200)]
params: Fix up help.exp testing

This patch fixes:
Running /usr/src/gcc/gcc/testsuite/gcc.misc-tests/help.exp ...
FAIL: compiler driver --help=params option(s): "[^.]$" absent from output: "y"
FAIL: compiler driver --help=param option(s): "^ +-.*[^:.]$" absent from output: "  --param-ipa-jump-function-lookups= Maximum number of statements visited during jump function offset discovery"

2020-10-15  Jakub Jelinek  <jakub@redhat.com>

* params.opt (-param-ipa-jump-function-lookups=): Add full stop at
the end of the parameter description.

4 years agoRISC-V: Add support for -mcpu option.
Kito Cheng [Tue, 13 Oct 2020 07:07:21 +0000 (15:07 +0800)]
RISC-V: Add support for -mcpu option.

 - The behavior of -mcpu basically equal to -march plus -mtune, but it
   has lower priority than -march and -mtune.

 - The behavior and available options has sync with clang except we don't add
   few LLVM specific value, and add more sifive processor to the list.

 - -mtune also accept all available options of -mcpu, and use it setting.

gcc/ChangeLog:

* common/config/riscv/riscv-common.c (riscv_cpu_tables): New.
(riscv_arch_str): Return empty string if current_subset_list
is NULL.
(riscv_find_cpu): New.
(riscv_handle_option): Verify option value of -mcpu.
(riscv_expand_arch): Using std::string.
(riscv_default_mtune): New.
(riscv_expand_arch_from_cpu): Ditto.
* config/riscv/riscv-cores.def: New.
* config/riscv/riscv-protos.h (riscv_find_cpu): New.
(riscv_cpu_info): New.
* config/riscv/riscv.c (riscv_tune_info): Rename ...
(riscv_tune_param): ... to this.
(riscv_cpu_info): Rename ...
(riscv_tune_info): ... to this.
(tune_info): Rename ...
(tune_param): ... to this.
(rocket_tune_info): Update data type name.
(sifive_7_tune_info): Ditto.
(optimize_size_tune_info): Ditto.
(riscv_cpu_info_table): Rename ...
(riscv_tune_info_table): ... to this.
(riscv_parse_cpu): Rename ...
(riscv_parse_tune): ... to this, and translate valid -mcpu option to
-mtune option.
(riscv_rtx_costs): Rename tune_info to tune_param.
(riscv_class_max_nregs): Ditto.
(riscv_memory_move_cost): Ditto.
(riscv_init_machine_status): Use value of -mcpu if -mtune is not
given, and rename tune_info to tune_param.
* config/riscv/riscv.h (riscv_expand_arch_from_cpu): New.
(riscv_default_mtune): Ditto.
(EXTRA_SPEC_FUNCTIONS): Add riscv_expand_arch_from_cpu and
riscv_default_mtune.
(OPTION_DEFAULT_SPECS): Handle default value of -march/-mabi.
(DRIVER_SELF_SPECS): Expand -march from -mcpu if -march is not
given.
* config/riscv/riscv.opt (-mcpu): New option.
* config/riscv/t-riscv ($(common_out_file)): Add
riscv-cores.def to dependency.
* doc/invoke.texi (RISC-V Option): Add -mcpu, and update the
description of default value for -mtune and -march.

gcc/testsuite/ChangeLog:

* gcc.target/riscv/mcpu-1.c: New.
* gcc.target/riscv/mcpu-2.c: Ditto.
* gcc.target/riscv/mcpu-3.c: Ditto.
* gcc.target/riscv/mcpu-4.c: Ditto.
* gcc.target/riscv/mcpu-5.c: Ditto.
* gcc.target/riscv/mcpu-6.c: Ditto.
* gcc.target/riscv/mcpu-7.c: Ditto.

4 years agoEnable Intel HRESET Instruction
Hongyu Wang [Tue, 7 Apr 2020 18:39:53 +0000 (18:39 +0000)]
Enable Intel HRESET Instruction

gcc/

* common/config/i386/cpuinfo.h (get_available_features):
Detect HRESET.
* common/config/i386/i386-common.c (OPTION_MASK_ISA2_HRESET_SET,
OPTION_MASK_ISA2_HRESET_UNSET): New macros.
(ix86_handle_option): Handle -mhreset.
* common/config/i386/i386-cpuinfo.h (enum processor_features):
Add FEATURE_HRESET.
* common/config/i386/i386-isas.h: Add ISA_NAMES_TABLE_ENTRY
for hreset.
* config.gcc: Add hresetintrin.h
* config/i386/hresetintrin.h: New header file.
* config/i386/x86gprintrin.h: Include hresetintrin.h.
* config/i386/cpuid.h (bit_HRESET): New.
* config/i386/i386-builtin.def: Add new builtin.
* config/i386/i386-expand.c (ix86_expand_builtin):
Handle new builtin.
* config/i386/i386-c.c (ix86_target_macros_internal): Define
__HRESET__.
* config/i386/i386-options.c (isa2_opts): Add -mhreset.
(ix86_valid_target_attribute_inner_p): Handle hreset.
* config/i386/i386.h (TARGET_HRESET, TARGET_HRESET_P,
PTA_HRESET): New.
(PTA_ALDERLAKE): Add PTA_HRESET.
* config/i386/i386.opt: Add option -mhreset.
* config/i386/i386.md (UNSPECV_HRESET): New unspec.
(hreset): New define_insn.
* doc/invoke.texi: Document -mhreset.
* doc/extend.texi: Document hreset.

gcc/testsuite/

* gcc.target/i386/hreset-1.c: New test.
* gcc.target/i386/funcspec-56.inc: Add new target attribute.
* gcc.target/i386/x86gprintrin-1.c: Add -mhreset.
* gcc.target/i386/x86gprintrin-2.c: Ditto.
* gcc.target/i386/x86gprintrin-3.c: Ditto.
* gcc.target/i386/x86gprintrin-4.c: Add mhreset.
* gcc.target/i386/x86gprintrin-5.c: Ditto.

4 years agoEnable gcc support for UINTR
liuhongt [Mon, 20 May 2019 09:56:41 +0000 (17:56 +0800)]
Enable gcc support for UINTR

2020-05-20  Hongtao Liu  <hongtao.liu@intel.com>

gcc/
* common/config/i386/cpuinfo.h (get_available_features):
Detect UINTR.
* common/config/i386/i386-common.c (OPTION_MASK_ISA2_UINTR_SET
OPTION_MASK_ISA2_UINTR_UNSET): New.
(ix86_handle_option): Handle -muintr.
* common/config/i386/i386-cpuinfo.h (enum processor_features):
Add FEATURE_UINTR.
* common/config/i386/i386-isas.h: Add ISA_NAMES_TABLE_ENTRY
for uintr.
* config.gcc: Add uintrintrin.h to extra_headers.
* config/i386/uintrintrin.h: New.
* config/i386/cpuid.h (bit_UINTR): New.
* config/i386/i386-builtin-types.def: Add new types.
* config/i386/i386-builtin.def: Add new builtins.
* config/i386/i386-builtins.c (ix86_init_mmx_sse_builtins): Add
__builtin_ia32_testui.
* config/i386/i386-builtins.h (ix86_builtins): Add
IX86_BUILTIN_TESTUI.
* config/i386/i386-c.c (ix86_target_macros_internal): Define
__UINTR__.
* config/i386/i386-expand.c (ix86_expand_special_args_builtin):
Handle UINT8_FTYPE_VOID.
(ix86_expand_builtin): Handle IX86_BUILTIN_TESTUI.
* config/i386/i386-options.c (isa2_opts): Add -muintr.
(ix86_valid_target_attribute_inner_p): Handle UINTR.
(ix86_option_override_internal): Add TARGET_64BIT check for UINTR.
* config/i386/i386.h (TARGET_UINTR, TARGET_UINTR_P, PTA_UINTR): New.
(PTA_SAPPHIRRAPIDS): Add PTA_UINTR.
* config/i386/i386.opt: Add -muintr.
* config/i386/i386.md
(define_int_iterator UINTR_UNSPECV): New.
(define_int_attr uintr_unspecv): New.
(uintr_<uintr_unspecv>, uintr_senduipi, testui):
New define_insn patterns.
* config/i386/x86gprintrin.h: Include uintrintrin.h
* doc/invoke.texi: Document -muintr.
* doc/extend.texi: Document uintr.

gcc/testsuite/

* gcc.target/i386/funcspec-56.inc: Add new target attribute.
* gcc.target/i386/uintr-1.c: New test.
* gcc.target/i386/uintr-2.c: Ditto.
* gcc.target/i386/uintr-3.c: Ditto.
* gcc.target/i386/uintr-4.c: Ditto.
* gcc.target/i386/uintr-5.c: Ditto.
* gcc.target/i386/x86gprintrin-1.c: Add -muintr for 64bit target.
* gcc.target/i386/x86gprintrin-2.c: Ditto.
* gcc.target/i386/x86gprintrin-3.c: Ditto.
* gcc.target/i386/x86gprintrin-4.c: Add muintr for 64bit target.
* gcc.target/i386/x86gprintrin-5.c: Ditto.

4 years agoDaily bump.
GCC Administrator [Thu, 15 Oct 2020 00:16:34 +0000 (00:16 +0000)]
Daily bump.

4 years agolibgo: print reason code if throwing unwind exception fails
Nikhil Benesch [Sat, 10 Oct 2020 16:26:54 +0000 (16:26 +0000)]
libgo: print reason code if throwing unwind exception fails

Calls to _Unwind_RaiseException and friends *can* return due to bugs in
libgo or memory corruption. When this occurs, print a message to stderr
with the reason code before aborting to aid debugging.

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/261257

4 years agoPR middle-end/97391 - bogus -Warray-bounds accessing a multidimensional array parameter
Martin Sebor [Wed, 14 Oct 2020 21:19:39 +0000 (15:19 -0600)]
PR middle-end/97391 - bogus -Warray-bounds accessing a multidimensional array parameter

gcc/ChangeLog:

PR middle-end/97391
* builtins.c (gimple_parm_array_size): Peel off one less layer
of array types.

gcc/testsuite/ChangeLog:

PR middle-end/97391
* gcc.dg/Warray-bounds-68.c: New test.

4 years agoPR c/97413 - bogus error on function declaration with many VLA arguments
Martin Sebor [Wed, 14 Oct 2020 21:18:19 +0000 (15:18 -0600)]
PR c/97413 - bogus error on function declaration with many VLA arguments

gcc/ChangeLog:

PR c/97413
* attribs.c (init_attr_rdwr_indices): Unwrap extra list layer.

gcc/c-family/ChangeLog:

PR c/97413
* c-attribs.c (build_attr_access_from_parms): Wrap chain of VLA
bounds in an extra list.

gcc/testsuite/ChangeLog:

PR c/97413
* gcc.dg/Wvla-parameter-8.c: New test.

4 years ago[testsuite] Don't overwrite compiler_flags in check_compile
Tom de Vries [Wed, 14 Oct 2020 13:25:53 +0000 (15:25 +0200)]
[testsuite] Don't overwrite compiler_flags in check_compile

Consider the test-case gcc.c-torture/compile/pr42717.c, which has:
...
/* { dg-xfail-if "ptxas crashes" { nvptx-*-* } { "-O0" } { "" } } */
...

When running make check-gcc, I get:
...
XPASS: gcc.c-torture/compile/pr42717.c   -O0  (test for excess errors)
...
but when forcing to run only that test-case using
RUNTESTFLAGS=compile.exp=pr42717.c I get instead:
...
PASS: gcc.c-torture/compile/pr42717.c   -O0  (test for excess errors)
...

Using RUNTESTFLAGS="-v -v -v" we can see what happens:
...
check_cached_effective_target exceptions_enabled: \
  returning 1 for nvptx-none-run
Limited to targets: *-*-*
Will search for options  "-O0"
Will exclude for options  ""
Compiler flags are: exceptions_enabled9848.cc -fdiagnostics-plain-output \
  --sysroot=/home/vries/nvptx/trunk/install/nvptx-none -S  -isystem \
  /home/vries/nvptx/trunk/build-gcc/nvptx-none/./newlib/targ-include \
  -isystem /home/vries/nvptx/trunk/source-gcc/newlib/libc/include \
  -o exceptions_enabled9848.s
Checking "*-*-*" against "nvptx-unknown-none"
Looking for -O0 to include in the compiler flags
Looking for  to exclude in the compiler flags
This is not a conditional match
PASS: gcc.c-torture/compile/pr42717.c   -O0  (test for excess errors)
...

The effective target exceptions_enabled is tested from gcc-dg-prune, but
the calculation overwrites $compiler_flags, which is subsequently tested for
-O0.

Fix this by saving and restoring $compiler_flags when calling
${tool}_target_compile in check_compile.

Tested on nvptx.

gcc/testsuite/ChangeLog:

2020-10-14  Tom de Vries  <tdevries@suse.de>

* lib/target-supports.exp (check_compile): Save and restore
$compiler_flags when calling ${tool}_target_compile.

4 years agolibgo: export NetBSD-specific types in mksysinfo.sh
Nikhil Benesch [Tue, 13 Oct 2020 06:36:43 +0000 (06:36 +0000)]
libgo: export NetBSD-specific types in mksysinfo.sh

The syscall package depends on many NetBSD-specific types on NetBSD.
Teach mksysinfo.sh to export these types.

This alone is not sufficient to get the syscall package to compile on
NetBSD, but it's a start.

Note that the IfMsgHdr type is recapitalized to IfMsghdr, which requires
changes in the AIX port. The new capitalization is what's used by
upstream in existing NetBSD-specific code and is more consistent with
the capitalization of other C structs with the "hdr" suffix.

Updates golang/go#38538.

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/261739

4 years agoruntime: correct semaphore implementation on netbsd
Nikhil Benesch [Tue, 13 Oct 2020 07:17:55 +0000 (07:17 +0000)]
runtime: correct semaphore implementation on netbsd

NetBSD's semaphores use the underlying lighweight process mechanism
(LWP) on NetBSD, rather than pthreads. This means the m.prodcid needs
to be set to the LWP ID rather than the pthread ID in order for unpark
notifications to get sent to the right place.

Introduce a new getProcID() method that selects the correct ID for the
platform.

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/261742

4 years agoanalyzer: fix ICE on globals with unknown size [PR93388]
David Malcolm [Tue, 13 Oct 2020 22:49:11 +0000 (18:49 -0400)]
analyzer: fix ICE on globals with unknown size [PR93388]

This patch fixes an ICE seen when attempting to build various existing
tests in our testsuite with -fanalyzer, including
gcc.c-torture/compile/980816-1.c.

gcc/analyzer/ChangeLog:
PR analyzer/93388
* region-model.cc (region_model::get_initial_value_for_global):
Fall back to returning an initial_svalue if
decl_region::get_svalue_for_initializer fails.
* region.cc (decl_region::get_svalue_for_initializer): Don't
attempt to create a compound_svalue if the region has an unknown
size.

gcc/testsuite/ChangeLog:
PR analyzer/93388
* gcc.dg/analyzer/data-model-21.c: New test.

4 years agoanalyzer: fix build with ada [PR93723]
David Malcolm [Tue, 13 Oct 2020 21:11:17 +0000 (17:11 -0400)]
analyzer: fix build with ada [PR93723]

gcc/analyzer/ChangeLog:
PR analyzer/93723
* store.cc (binding_map::apply_ctor_to_region): Remove redundant
assertion.

4 years agoanalyzer: don't use <setjmp.h> in tests [PR97394]
David Malcolm [Tue, 13 Oct 2020 19:56:45 +0000 (15:56 -0400)]
analyzer: don't use <setjmp.h> in tests [PR97394]

PR analyzer/97394 reports issues with analyzer setjmp results
when testing against MUSL.  This patch fixes up gcc.dg/analyzer
so that it doesn't use <setjmp.h>.

gcc/testsuite/ChangeLog:
PR analyzer/97394
* gcc.dg/analyzer/setjmp-pr93378.c: Use test-setjmp.h rather than
<setjmp.h>.
* gcc.dg/analyzer/sigsetjmp-5.c: Likewise.
* gcc.dg/analyzer/sigsetjmp-6.c: Likewise.
* gcc.dg/analyzer/test-setjmp.h: Don't include <setjmp.h>.
Provide decls of jmp_buf, sigjmp_buf, setjmp, sigsetjmp,
longjmp, and siglongjmp.