Now that we're adding more and more Ada 2020 specific aspects in runtime
units, this is the convenient thing to do. Note that this doesn't impact
the Ada version used by user code.
Also fix a latent bug in sem_ch3 along the way, showing up when
System.Atomic_Primitives generic children are compiled in Ada 2020 mode.
Tested on x86_64-pc-linux-gnu, committed on trunk
gcc/ada/
* opt.ads (Ada_Version_Runtime): Set to Ada_2020.
* sem_ch3.adb (Analyze_Subtype_Declaration): Propagate
Is_Independent flag to subtypes.
* libgnarl/s-taprop__linux.adb: Adapt to Ada 2020 warning.
* libgnat/a-nbnbin.adb, libgnat/a-nbnbin.ads,
libgnat/a-nbnbin__gmp.adb, libgnat/a-nbnbre.adb,
libgnat/a-nbnbre.ads, libgnat/a-stobbu.adb,
libgnat/a-stobbu.ads, libgnat/a-stobfi.adb,
libgnat/a-stobfi.ads, libgnat/a-stoubu.adb,
libgnat/a-stoubu.ads, libgnat/a-stoufi.adb,
libgnat/a-stoufi.ads, libgnat/a-stoufo.adb,
libgnat/a-stoufo.ads, libgnat/a-stouut.adb,
libgnat/a-stouut.ads, libgnat/a-strsto.ads,
libgnat/a-ststbo.adb, libgnat/a-ststbo.ads,
libgnat/a-ststun.adb, libgnat/a-ststun.ads,
libgnat/a-stteou.ads, libgnat/s-aoinar.ads,
libgnat/s-aomoar.ads, libgnat/s-atopex.ads,
libgnat/s-putaim.adb, libgnat/s-putaim.ads,
libgnat/s-putima.adb, libgnat/s-putima.ads: Remove pragma
Ada_2020, now redundant.
diff --git a/gcc/ada/libgnarl/s-taprop__linux.adb b/gcc/ada/libgnarl/s-taprop__linux.adb
--- a/gcc/ada/libgnarl/s-taprop__linux.adb
+++ b/gcc/ada/libgnarl/s-taprop__linux.adb
@@ -243,9 +243,9 @@ package body System.Task_Primitives.Operations is
return Ceiling_Support;
end Get_Ceiling_Support;
- pragma Warnings (Off, "non-static call not allowed in preelaborated unit");
+ pragma Warnings (Off, "non-preelaborable call not allowed*");
Ceiling_Support : constant Boolean := Get_Ceiling_Support;
- pragma Warnings (On, "non-static call not allowed in preelaborated unit");
+ pragma Warnings (On, "non-preelaborable call not allowed*");
-- True if the locking policy is Ceiling_Locking, and the current process
-- has permission to use this policy. The process has permission if it is
-- running as 'root', or if the capability was set by the setcap command,
diff --git a/gcc/ada/libgnat/a-nbnbin.adb b/gcc/ada/libgnat/a-nbnbin.adb
--- a/gcc/ada/libgnat/a-nbnbin.adb
+++ b/gcc/ada/libgnat/a-nbnbin.adb
@@ -29,8 +29,6 @@
-- --
------------------------------------------------------------------------------
-pragma Ada_2020;
-
with Ada.Unchecked_Deallocation;
with Ada.Strings.Text_Output.Utils;
diff --git a/gcc/ada/libgnat/a-nbnbin.ads b/gcc/ada/libgnat/a-nbnbin.ads
--- a/gcc/ada/libgnat/a-nbnbin.ads
+++ b/gcc/ada/libgnat/a-nbnbin.ads
@@ -13,8 +13,6 @@
-- --
------------------------------------------------------------------------------
-pragma Ada_2020;
-
with Ada.Strings.Text_Output; use Ada.Strings.Text_Output;
private with Ada.Finalization;
diff --git a/gcc/ada/libgnat/a-nbnbin__gmp.adb b/gcc/ada/libgnat/a-nbnbin__gmp.adb
--- a/gcc/ada/libgnat/a-nbnbin__gmp.adb
+++ b/gcc/ada/libgnat/a-nbnbin__gmp.adb
@@ -31,8 +31,6 @@
-- This is the GMP version of this package
-pragma Ada_2020;
-
with Ada.Unchecked_Conversion;
with Ada.Unchecked_Deallocation;
with Interfaces.C; use Interfaces.C;
diff --git a/gcc/ada/libgnat/a-nbnbre.adb b/gcc/ada/libgnat/a-nbnbre.adb
--- a/gcc/ada/libgnat/a-nbnbre.adb
+++ b/gcc/ada/libgnat/a-nbnbre.adb
@@ -31,8 +31,6 @@
-- This is the default version of this package, based on Big_Integers only.
-pragma Ada_2020;
-
with Ada.Strings.Text_Output.Utils;
package body Ada.Numerics.Big_Numbers.Big_Reals is
diff --git a/gcc/ada/libgnat/a-nbnbre.ads b/gcc/ada/libgnat/a-nbnbre.ads
--- a/gcc/ada/libgnat/a-nbnbre.ads
+++ b/gcc/ada/libgnat/a-nbnbre.ads
@@ -13,8 +13,6 @@
-- --
------------------------------------------------------------------------------
-pragma Ada_2020;
-
with Ada.Numerics.Big_Numbers.Big_Integers;
with Ada.Strings.Text_Output; use Ada.Strings.Text_Output;
diff --git a/gcc/ada/libgnat/a-stobbu.adb b/gcc/ada/libgnat/a-stobbu.adb
--- a/gcc/ada/libgnat/a-stobbu.adb
+++ b/gcc/ada/libgnat/a-stobbu.adb
@@ -29,8 +29,6 @@
-- --
------------------------------------------------------------------------------
-pragma Ada_2020;
-
package body Ada.Strings.Text_Output.Bit_Buckets is
type Bit_Bucket_Type is new Sink with null record;
diff --git a/gcc/ada/libgnat/a-stobbu.ads b/gcc/ada/libgnat/a-stobbu.ads
--- a/gcc/ada/libgnat/a-stobbu.ads
+++ b/gcc/ada/libgnat/a-stobbu.ads
@@ -29,8 +29,6 @@
-- --
------------------------------------------------------------------------------
-pragma Ada_2020;
-
package Ada.Strings.Text_Output.Bit_Buckets is
function Bit_Bucket return Sink_Access;
end Ada.Strings.Text_Output.Bit_Buckets;
diff --git a/gcc/ada/libgnat/a-stobfi.adb b/gcc/ada/libgnat/a-stobfi.adb
--- a/gcc/ada/libgnat/a-stobfi.adb
+++ b/gcc/ada/libgnat/a-stobfi.adb
@@ -29,8 +29,6 @@
-- --
------------------------------------------------------------------------------
-pragma Ada_2020;
-
with Ada.Strings.Text_Output.Utils; use Ada.Strings.Text_Output.Utils;
package body Ada.Strings.Text_Output.Basic_Files is
use type OS.File_Descriptor;
diff --git a/gcc/ada/libgnat/a-stobfi.ads b/gcc/ada/libgnat/a-stobfi.ads
--- a/gcc/ada/libgnat/a-stobfi.ads
+++ b/gcc/ada/libgnat/a-stobfi.ads
@@ -29,8 +29,6 @@
-- --
------------------------------------------------------------------------------
-pragma Ada_2020;
-
private with GNAT.OS_Lib;
package Ada.Strings.Text_Output.Basic_Files is
-- Normally, you should use Ada.Strings.Text_Output.Files, which
diff --git a/gcc/ada/libgnat/a-stoubu.adb b/gcc/ada/libgnat/a-stoubu.adb
--- a/gcc/ada/libgnat/a-stoubu.adb
+++ b/gcc/ada/libgnat/a-stoubu.adb
@@ -29,8 +29,6 @@
-- --
------------------------------------------------------------------------------
-pragma Ada_2020;
-
with Unchecked_Deallocation;
with Ada.Strings.UTF_Encoding.Strings;
with Ada.Strings.UTF_Encoding.Wide_Strings;
diff --git a/gcc/ada/libgnat/a-stoubu.ads b/gcc/ada/libgnat/a-stoubu.ads
--- a/gcc/ada/libgnat/a-stoubu.ads
+++ b/gcc/ada/libgnat/a-stoubu.ads
@@ -29,8 +29,6 @@
-- --
------------------------------------------------------------------------------
-pragma Ada_2020;
-
package Ada.Strings.Text_Output.Buffers is
type Buffer (<>) is new Sink with private;
diff --git a/gcc/ada/libgnat/a-stoufi.adb b/gcc/ada/libgnat/a-stoufi.adb
--- a/gcc/ada/libgnat/a-stoufi.adb
+++ b/gcc/ada/libgnat/a-stoufi.adb
@@ -29,8 +29,6 @@
-- --
------------------------------------------------------------------------------
-pragma Ada_2020;
-
with Ada.Strings.Text_Output.Utils; use Ada.Strings.Text_Output.Utils;
package body Ada.Strings.Text_Output.Files is
use type OS.File_Descriptor;
diff --git a/gcc/ada/libgnat/a-stoufi.ads b/gcc/ada/libgnat/a-stoufi.ads
--- a/gcc/ada/libgnat/a-stoufi.ads
+++ b/gcc/ada/libgnat/a-stoufi.ads
@@ -29,8 +29,6 @@
-- --
------------------------------------------------------------------------------
-pragma Ada_2020;
-
private with GNAT.OS_Lib;
private with Ada.Finalization;
package Ada.Strings.Text_Output.Files is
diff --git a/gcc/ada/libgnat/a-stoufo.adb b/gcc/ada/libgnat/a-stoufo.adb
--- a/gcc/ada/libgnat/a-stoufo.adb
+++ b/gcc/ada/libgnat/a-stoufo.adb
@@ -29,8 +29,6 @@
-- --
------------------------------------------------------------------------------
-pragma Ada_2020;
-
with Ada.Strings.Text_Output.Files;
with Ada.Strings.Text_Output.Buffers; use Ada.Strings.Text_Output.Buffers;
with Ada.Strings.Text_Output.Utils; use Ada.Strings.Text_Output.Utils;
diff --git a/gcc/ada/libgnat/a-stoufo.ads b/gcc/ada/libgnat/a-stoufo.ads
--- a/gcc/ada/libgnat/a-stoufo.ads
+++ b/gcc/ada/libgnat/a-stoufo.ads
@@ -29,8 +29,6 @@
-- --
------------------------------------------------------------------------------
-pragma Ada_2020;
-
package Ada.Strings.Text_Output.Formatting is
-- Template-based output, based loosely on C's printf family. Unlike
diff --git a/gcc/ada/libgnat/a-stouut.adb b/gcc/ada/libgnat/a-stouut.adb
--- a/gcc/ada/libgnat/a-stouut.adb
+++ b/gcc/ada/libgnat/a-stouut.adb
@@ -29,9 +29,8 @@
-- --
------------------------------------------------------------------------------
-pragma Ada_2020;
-
with Ada.Strings.UTF_Encoding.Wide_Wide_Strings;
+
package body Ada.Strings.Text_Output.Utils is
procedure Put_Octet (S : in out Sink'Class; Item : Character) with Inline;
diff --git a/gcc/ada/libgnat/a-stouut.ads b/gcc/ada/libgnat/a-stouut.ads
--- a/gcc/ada/libgnat/a-stouut.ads
+++ b/gcc/ada/libgnat/a-stouut.ads
@@ -29,8 +29,6 @@
-- --
------------------------------------------------------------------------------
-pragma Ada_2020;
-
package Ada.Strings.Text_Output.Utils with Preelaborate is
-- This package provides utility functions on Sink'Class. These are
diff --git a/gcc/ada/libgnat/a-strsto.ads b/gcc/ada/libgnat/a-strsto.ads
--- a/gcc/ada/libgnat/a-strsto.ads
+++ b/gcc/ada/libgnat/a-strsto.ads
@@ -30,7 +30,6 @@
-- --
------------------------------------------------------------------------------
-pragma Ada_2020;
package Ada.Streams.Storage with Pure is
type Storage_Stream_Type is abstract new Root_Stream_Type with private;
diff --git a/gcc/ada/libgnat/a-ststbo.adb b/gcc/ada/libgnat/a-ststbo.adb
--- a/gcc/ada/libgnat/a-ststbo.adb
+++ b/gcc/ada/libgnat/a-ststbo.adb
@@ -26,7 +26,6 @@
-- --
------------------------------------------------------------------------------
-pragma Ada_2020;
package body Ada.Streams.Storage.Bounded is
----------
diff --git a/gcc/ada/libgnat/a-ststbo.ads b/gcc/ada/libgnat/a-ststbo.ads
--- a/gcc/ada/libgnat/a-ststbo.ads
+++ b/gcc/ada/libgnat/a-ststbo.ads
@@ -30,7 +30,6 @@
-- --
------------------------------------------------------------------------------
-pragma Ada_2020;
package Ada.Streams.Storage.Bounded with Pure is
type Stream_Type (Max_Elements : Stream_Element_Count) is
diff --git a/gcc/ada/libgnat/a-ststun.adb b/gcc/ada/libgnat/a-ststun.adb
--- a/gcc/ada/libgnat/a-ststun.adb
+++ b/gcc/ada/libgnat/a-ststun.adb
@@ -26,8 +26,8 @@
-- --
------------------------------------------------------------------------------
-pragma Ada_2020;
with Ada.Unchecked_Deallocation;
+
package body Ada.Streams.Storage.Unbounded is
procedure Free is new Ada.Unchecked_Deallocation
diff --git a/gcc/ada/libgnat/a-ststun.ads b/gcc/ada/libgnat/a-ststun.ads
--- a/gcc/ada/libgnat/a-ststun.ads
+++ b/gcc/ada/libgnat/a-ststun.ads
@@ -30,8 +30,8 @@
-- --
------------------------------------------------------------------------------
-pragma Ada_2020;
private with Ada.Finalization;
+
package Ada.Streams.Storage.Unbounded with Preelaborate is
type Stream_Type is new Storage_Stream_Type with private with
diff --git a/gcc/ada/libgnat/a-stteou.ads b/gcc/ada/libgnat/a-stteou.ads
--- a/gcc/ada/libgnat/a-stteou.ads
+++ b/gcc/ada/libgnat/a-stteou.ads
@@ -29,10 +29,9 @@
-- --
------------------------------------------------------------------------------
-pragma Ada_2020;
-
with Ada.Strings.UTF_Encoding;
with Ada.Strings.UTF_Encoding.Wide_Wide_Strings;
+
package Ada.Strings.Text_Output with Preelaborate is
-- This package provides a "Sink" abstraction, to which characters of type
diff --git a/gcc/ada/libgnat/s-aoinar.ads b/gcc/ada/libgnat/s-aoinar.ads
--- a/gcc/ada/libgnat/s-aoinar.ads
+++ b/gcc/ada/libgnat/s-aoinar.ads
@@ -33,8 +33,6 @@
-- --
------------------------------------------------------------------------------
-pragma Ada_2020;
-
generic
type Atomic_Type is range <> with Atomic;
package System.Atomic_Operations.Integer_Arithmetic
diff --git a/gcc/ada/libgnat/s-aomoar.ads b/gcc/ada/libgnat/s-aomoar.ads
--- a/gcc/ada/libgnat/s-aomoar.ads
+++ b/gcc/ada/libgnat/s-aomoar.ads
@@ -33,8 +33,6 @@
-- --
------------------------------------------------------------------------------
-pragma Ada_2020;
-
generic
type Atomic_Type is mod <> with Atomic;
package System.Atomic_Operations.Modular_Arithmetic
diff --git a/gcc/ada/libgnat/s-atopex.ads b/gcc/ada/libgnat/s-atopex.ads
--- a/gcc/ada/libgnat/s-atopex.ads
+++ b/gcc/ada/libgnat/s-atopex.ads
@@ -33,13 +33,10 @@
-- --
------------------------------------------------------------------------------
-pragma Ada_2020;
-
generic
type Atomic_Type is private with Atomic;
package System.Atomic_Operations.Exchange
with Pure
--- Blocking
is
function Atomic_Exchange
(Item : aliased in out Atomic_Type;
diff --git a/gcc/ada/libgnat/s-putaim.adb b/gcc/ada/libgnat/s-putaim.adb
--- a/gcc/ada/libgnat/s-putaim.adb
+++ b/gcc/ada/libgnat/s-putaim.adb
@@ -29,7 +29,6 @@
-- --
------------------------------------------------------------------------------
-pragma Ada_2020;
with Unchecked_Conversion;
with Ada.Strings.Text_Output.Utils;
use Ada.Strings.Text_Output;
diff --git a/gcc/ada/libgnat/s-putaim.ads b/gcc/ada/libgnat/s-putaim.ads
--- a/gcc/ada/libgnat/s-putaim.ads
+++ b/gcc/ada/libgnat/s-putaim.ads
@@ -29,9 +29,9 @@
-- --
------------------------------------------------------------------------------
-pragma Ada_2020;
with Ada.Strings.Text_Output;
with Ada.Task_Identification;
+
package System.Put_Task_Images is
-- This package contains subprograms that are called by the generated code
diff --git a/gcc/ada/libgnat/s-putima.adb b/gcc/ada/libgnat/s-putima.adb
--- a/gcc/ada/libgnat/s-putima.adb
+++ b/gcc/ada/libgnat/s-putima.adb
@@ -29,7 +29,6 @@
-- --
------------------------------------------------------------------------------
-pragma Ada_2020;
with Unchecked_Conversion;
with Ada.Strings.Text_Output.Utils;
use Ada.Strings.Text_Output;
diff --git a/gcc/ada/libgnat/s-putima.ads b/gcc/ada/libgnat/s-putima.ads
--- a/gcc/ada/libgnat/s-putima.ads
+++ b/gcc/ada/libgnat/s-putima.ads
@@ -29,9 +29,9 @@
-- --
------------------------------------------------------------------------------
-pragma Ada_2020;
with Ada.Strings.Text_Output;
with System.Unsigned_Types;
+
package System.Put_Images is
-- This package contains subprograms that are called by the generated code
diff --git a/gcc/ada/opt.ads b/gcc/ada/opt.ads
--- a/gcc/ada/opt.ads
+++ b/gcc/ada/opt.ads
@@ -114,7 +114,7 @@ package Opt is
-- remains set to Ada_Version_Default). This is used in the rare cases
-- (notably pragma Obsolescent) where we want the explicit version set.
- Ada_Version_Runtime : Ada_Version_Type := Ada_2012;
+ Ada_Version_Runtime : Ada_Version_Type := Ada_2020;
-- GNAT
-- Ada version used to compile the runtime. Used to set Ada_Version (but
-- not Ada_Version_Explicit) when compiling predefined or internal units.
diff --git a/gcc/ada/sem_ch3.adb b/gcc/ada/sem_ch3.adb
--- a/gcc/ada/sem_ch3.adb
+++ b/gcc/ada/sem_ch3.adb
@@ -5718,11 +5718,13 @@ package body Sem_Ch3 is
-- If the base type is a scalar type, or else if there is no
-- constraint, the atomic flag is inherited by the subtype.
+ -- Ditto for the Independent aspect.
if Is_Scalar_Type (Id)
or else Is_Entity_Name (Subtype_Indication (N))
then
Set_Is_Atomic (Id, Is_Atomic (T));
+ Set_Is_Independent (Id, Is_Independent (T));
end if;
-- Remaining processing depends on characteristics of base type