[multiple changes]
authorArnaud Charlet <charlet@gcc.gnu.org>
Mon, 4 Jul 2016 10:38:22 +0000 (12:38 +0200)
committerArnaud Charlet <charlet@gcc.gnu.org>
Mon, 4 Jul 2016 10:38:22 +0000 (12:38 +0200)
2016-07-04  Gary Dismukes  <dismukes@adacore.com>

* sem_ch12.ads, freeze.adb: Minor reformatting and typo fixes.

2016-07-04  Ed Schonberg  <schonberg@adacore.com>

* sem_ch13.adb (New_Stream_Subprogram): If the attribute
definition clause comes from an aspect specification, place the
generated subprogram renaming in the freeze actions of the type.

2016-07-04  Philippe Gil  <gil@adacore.com>

* g-debpoo.adb (Dump.Do_Report) - add space prefix to backtrace
address dump - avoid new line sent directly to stdout.

2016-07-04  Arnaud Charlet  <charlet@adacore.com>

* gnat1drv.adb, sem_ch12.adb, sem_elab.adb, sem_prag.adb, sem_res.adb:
Relax elaboration checks in SPARK_Mode so that we rely on the
static elaboration model (if used). We'll have a more precise
check performed in flow analysis of gnat2why.

From-SVN: r237968

gcc/ada/ChangeLog
gcc/ada/freeze.adb
gcc/ada/g-debpoo.adb
gcc/ada/gnat1drv.adb
gcc/ada/sem_ch12.adb
gcc/ada/sem_ch12.ads
gcc/ada/sem_ch13.adb
gcc/ada/sem_elab.adb
gcc/ada/sem_prag.adb
gcc/ada/sem_res.adb

index 8672bdc301fad9078efb934a522b98253e832e77..680902f1f8292fe30edc1613e8952d63ff8bda43 100644 (file)
@@ -1,3 +1,25 @@
+2016-07-04  Gary Dismukes  <dismukes@adacore.com>
+
+       * sem_ch12.ads, freeze.adb: Minor reformatting and typo fixes.
+
+2016-07-04  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_ch13.adb (New_Stream_Subprogram): If the attribute
+       definition clause comes from an aspect specification, place the
+       generated subprogram renaming in the freeze actions of the type.
+
+2016-07-04  Philippe Gil  <gil@adacore.com>
+
+       * g-debpoo.adb (Dump.Do_Report) - add space prefix to backtrace
+       address dump - avoid new line sent directly to stdout.
+
+2016-07-04  Arnaud Charlet  <charlet@adacore.com>
+
+       * gnat1drv.adb, sem_ch12.adb, sem_elab.adb, sem_prag.adb, sem_res.adb:
+       Relax elaboration checks in SPARK_Mode so that we rely on the
+       static elaboration model (if used). We'll have a more precise
+       check performed in flow analysis of gnat2why.
+
 2016-07-04  Ed Schonberg  <schonberg@adacore.com>
 
        * ghost.adb (Prune_Node): A freeze node for an ignored ghost
index 173eae8a5e9dc94aadb3e47b5a3faaf732bcf0a8..cfb20f4f4955e032a8d13cfb263cc46995335819 100644 (file)
@@ -4413,9 +4413,9 @@ package body Freeze is
 
            --  We want to implicitly pack if the specified size of the record
            --  is less than the sum of the object sizes (no point in packing
-           --  if this is not the case) if we can compute it, i.e. if we have
+           --  if this is not the case), if we can compute it, i.e. if we have
            --  only elementary components. Otherwise, we have at least one
-           --  composite component and we want to implicit pack only if bit
+           --  composite component and we want to implicitly pack only if bit
            --  packing is required for it, as we are sure in this case that
            --  the back end cannot do the expected layout without packing.
 
index c5664a9939d21afdb29f63a0828baf229b3d6fa3..567bb758a4137b9a3940bd540b61f9eaedf432f0 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2016, Free Software Foundation, Inc.         --
 --                                                                          --
 -- GNAT is free software;  you can  redistribute it  and/or modify it under --
 -- terms of the  GNU General Public License as published  by the Free Soft- --
@@ -1908,7 +1908,7 @@ package body GNAT.Debug_Pools is
          --  Sorted array for the biggest memory users
 
       begin
-         New_Line;
+         Put_Line ("");
          case Sort is
             when Memory_Usage | All_Reports  =>
                Put_Line (Size'Img & " biggest memory users at this time:");
@@ -2010,10 +2010,10 @@ package body GNAT.Debug_Pools is
             end;
 
             for J in Max (M).Traceback'Range loop
-               Put (Image_C (PC_For (Max (M).Traceback (J))));
+               Put (" " & Image_C (PC_For (Max (M).Traceback (J))));
             end loop;
 
-            New_Line;
+            Put_Line ("");
          end loop;
       end Do_Report;
 
index 702545a1718e4bf024d2513441b50c3eac78cc72..2ade204e6ab37f9a5ffb5c85042fe9f7ac302673 100644 (file)
@@ -415,11 +415,6 @@ procedure Gnat1drv is
 
          Suppress_Options.Suppress := (others => False);
 
-         --  Turn off dynamic elaboration checks. SPARK mode depends on the
-         --  use of the static elaboration mode.
-
-         Dynamic_Elaboration_Checks := False;
-
          --  Detect overflow on unconstrained floating-point types, such as
          --  the predefined types Float, Long_Float and Long_Long_Float from
          --  package Standard. Not necessary if float overflows are checked
index ae04a9d23a3130d9f486f1fc63302e836555c374..1b4807746e401f73414bf6c24658fafdde7321f3 100644 (file)
@@ -4356,10 +4356,6 @@ package body Sem_Ch12 is
       SPARK_Mode_Pragma        := Save_SMP;
       Style_Check              := Save_Style_Check;
 
-      if SPARK_Mode = On then
-         Dynamic_Elaboration_Checks := False;
-      end if;
-
       --  Check that if N is an instantiation of System.Dim_Float_IO or
       --  System.Dim_Integer_IO, the formal type has a dimension system.
 
@@ -4396,10 +4392,6 @@ package body Sem_Ch12 is
          SPARK_Mode               := Save_SM;
          SPARK_Mode_Pragma        := Save_SMP;
          Style_Check              := Save_Style_Check;
-
-         if SPARK_Mode = On then
-            Dynamic_Elaboration_Checks := False;
-         end if;
    end Analyze_Package_Instantiation;
 
    --------------------------
@@ -5328,10 +5320,6 @@ package body Sem_Ch12 is
          Ignore_Pragma_SPARK_Mode := Save_IPSM;
          SPARK_Mode               := Save_SM;
          SPARK_Mode_Pragma        := Save_SMP;
-
-         if SPARK_Mode = On then
-            Dynamic_Elaboration_Checks := False;
-         end if;
       end if;
 
    <<Leave>>
@@ -5352,10 +5340,6 @@ package body Sem_Ch12 is
          Ignore_Pragma_SPARK_Mode := Save_IPSM;
          SPARK_Mode               := Save_SM;
          SPARK_Mode_Pragma        := Save_SMP;
-
-         if SPARK_Mode = On then
-            Dynamic_Elaboration_Checks := False;
-         end if;
    end Analyze_Subprogram_Instantiation;
 
    -------------------------
@@ -15247,12 +15231,6 @@ package body Sem_Ch12 is
 
          SPARK_Mode := Save_SPARK_Mode;
          SPARK_Mode_Pragma := Save_SPARK_Mode_Pragma;
-
-         --  Make sure dynamic elaboration checks are off in SPARK Mode
-
-         if SPARK_Mode = On then
-            Dynamic_Elaboration_Checks := False;
-         end if;
       end if;
 
       Current_Instantiated_Parent :=
index 8365ac482c3691d6a760ce07ecedc2281fbc1f06..82a093afae32dadb6a726203aa7cd7953ab3766b 100644 (file)
@@ -181,9 +181,9 @@ package Sem_Ch12 is
    --  establishes a new source file entry representing the inherited pragma
    --  as an instantiation, marked as an inherited pragma (so that errout can
    --  distinguish cases for generating error messages, otherwise the treatment
-   --  is identical). In this call N is the subprogram declaration from
+   --  is identical). In this call, N is the subprogram declaration from
    --  which the pragma is inherited and E is the defining identifier of
-   --  the overridding subprogram (when the subprogram is redefined) or the
+   --  the overriding subprogram (when the subprogram is redefined) or the
    --  defining identifier of the extension type (when the subprogram is
    --  inherited). The resulting Sloc adjustment factor is saved as part of the
    --  internal state of the Sem_Ch12 package for use in subsequent calls to
index b631b9c9417a5a37740b626087916c76c6a50cec..aaa8576ee26fd6f3703a13a992d550ca37b9ff42 100644 (file)
@@ -11941,7 +11941,9 @@ package body Sem_Ch13 is
       --  at the freeze point, and we must generate only a completion of this
       --  declaration. We do the same for private types, because the full view
       --  might be tagged. Otherwise we generate a declaration at the point of
-      --  the attribute definition clause.
+      --  the attribute definition clause. If the attribute definition comes
+      --  from an aspect specification the declaration is part of the freeze
+      --  actions of the type.
 
       function Build_Spec return Node_Id;
       --  Used for declaration and renaming declaration, so that this is
@@ -12033,8 +12035,16 @@ package body Sem_Ch13 is
              Object_Definition   => New_Occurrence_Of (Standard_Boolean, Loc));
       end if;
 
-      Insert_Action (N, Subp_Decl);
-      Set_Entity (N, Subp_Id);
+      if not Defer_Declaration
+        and then From_Aspect_Specification (N)
+        and then Has_Delayed_Freeze (Ent)
+      then
+         Append_Freeze_Action (Ent, Subp_Decl);
+
+      else
+         Insert_Action (N, Subp_Decl);
+         Set_Entity (N, Subp_Id);
+      end if;
 
       Subp_Decl :=
         Make_Subprogram_Renaming_Declaration (Loc,
@@ -12043,8 +12053,15 @@ package body Sem_Ch13 is
 
       if Defer_Declaration then
          Set_TSS (Base_Type (Ent), Subp_Id);
+
       else
-         Insert_Action (N, Subp_Decl);
+         if From_Aspect_Specification (N) then
+            Append_Freeze_Action (Ent, Subp_Decl);
+
+         else
+            Insert_Action (N, Subp_Decl);
+         end if;
+
          Copy_TSS (Subp_Id, Base_Type (Ent));
       end if;
    end New_Stream_Subprogram;
index d963def7980036ca244e28599b843fd18e3bdb6a..8e82d281795f632d28e4115da368835ae40d404a 100644 (file)
@@ -1018,7 +1018,9 @@ package body Sem_Elab is
       --  expression, which in turn may have side effects.
 
       Issue_In_SPARK :=
-        SPARK_Mode = On and (Comes_From_Source (Ent) or Is_DIC_Proc);
+        SPARK_Mode = On
+          and then Dynamic_Elaboration_Checks
+          and then (Comes_From_Source (Ent) or Is_DIC_Proc);
 
       --  Now check if an Elaborate_All (or dynamic check) is needed
 
index 3a14fdffe9496b7a8acd4128b17172230c40633a..f603e317af479a20c59b10405a1365ec2ffcd479 100644 (file)
@@ -14489,8 +14489,7 @@ package body Sem_Prag is
             --  checks in SPARK mode).
 
             Dynamic_Elaboration_Checks :=
-              (Chars (Get_Pragma_Arg (Arg1)) = Name_Dynamic)
-                and then SPARK_Mode /= On;
+              Chars (Get_Pragma_Arg (Arg1)) = Name_Dynamic;
 
          ---------------
          -- Eliminate --
@@ -21200,10 +21199,6 @@ package body Sem_Prag is
             begin
                SPARK_Mode := Mode_Id;
                SPARK_Mode_Pragma := N;
-
-               if SPARK_Mode = On then
-                  Dynamic_Elaboration_Checks := False;
-               end if;
             end Set_SPARK_Context;
 
             --  Local variables
index ffd2ea15fbd938b75eaf9a72786a67c6759490ac..06e9f06303d53dac3ae00af1f231e1fb9ac9667c 100644 (file)
@@ -7119,6 +7119,7 @@ package body Sem_Res is
             --  read as it simply establishes an alias.
 
             if Ekind (E) = E_Variable
+              and then Dynamic_Elaboration_Checks
               and then Nkind (Par) /= N_Object_Renaming_Declaration
             then
                Check_Elab_Call (N);