[multiple changes]
authorArnaud Charlet <charlet@gcc.gnu.org>
Thu, 19 Jan 2017 11:46:14 +0000 (12:46 +0100)
committerArnaud Charlet <charlet@gcc.gnu.org>
Thu, 19 Jan 2017 11:46:14 +0000 (12:46 +0100)
2017-01-19  Hristian Kirtchev  <kirtchev@adacore.com>

* lib-xref-spark_specific.adb, sem_util.adb, sem_util.ads,
sem_ch4.adb, sem_ch8.adb, lib-xref.ads: Minor reformatting.

2017-01-19  Bob Duff  <duff@adacore.com>

* bcheck.adb (Check_Consistent_Dynamic_Elaboration_Checking):
Increment Warnings_Detected.  It was decrementing, which is
wrong since we just issued a warning message.
* binderr.ads (Errors_Detected, Warnings_Detected): Declare
these variables to be of subtype Nat instead of Int, because
they should never be negative.

2017-01-19  Javier Miranda  <miranda@adacore.com>

* contracts.adb (Build_Postconditions_Procedure): Replace
Generate_C_Code by Modify_Tree_For_C.
* exp_aggr.adb (Build_Record_Aggr_Code, Expand_Array_Aggregate):
Replace Generate_C_Code by Modify_Tree_For_C.
* exp_attr.adb (Float_Valid, Is_GCC_Target): Replace Generate_C_Code by
Modify_Tree_For_C.
* exp_ch11.adb (Expand_N_Exception_Declaration): Replace
Generate_C_Code by Modify_Tree_For_C.
* exp_ch4.adb (Expand_Allocator_Expression): Replace
Generate_C_Code by Modify_Tree_For_C.
* exp_dbug.adb (Qualify_Entity_Name): Replace Generate_C_Code
by Modify_Tree_For_C.
* exp_util.adb (Remove_Side_Effects, Side_Effect_Free): Replace
Generate_C_Code by Modify_Tree_For_C.
* sem_res.adb (Resolve_Type_Conversion): Replace Generate_C_Code
by Modify_Tree_For_C.
* sinfo.ads (Modify_Tree_For_C): Adding documentation.

From-SVN: r244619

18 files changed:
gcc/ada/ChangeLog
gcc/ada/bcheck.adb
gcc/ada/binderr.ads
gcc/ada/contracts.adb
gcc/ada/exp_aggr.adb
gcc/ada/exp_attr.adb
gcc/ada/exp_ch11.adb
gcc/ada/exp_ch4.adb
gcc/ada/exp_dbug.adb
gcc/ada/exp_util.adb
gcc/ada/lib-xref-spark_specific.adb
gcc/ada/lib-xref.ads
gcc/ada/sem_ch4.adb
gcc/ada/sem_ch8.adb
gcc/ada/sem_res.adb
gcc/ada/sem_util.adb
gcc/ada/sem_util.ads
gcc/ada/sinfo.ads

index 64d929b09d0cb65411a026e80d059f4edd04cb22..7f7fcd8b3e4152d322b868a9596742a2dd6b2c51 100644 (file)
@@ -1,3 +1,37 @@
+2017-01-19  Hristian Kirtchev  <kirtchev@adacore.com>
+
+       * lib-xref-spark_specific.adb, sem_util.adb, sem_util.ads,
+       sem_ch4.adb, sem_ch8.adb, lib-xref.ads: Minor reformatting.
+
+2017-01-19  Bob Duff  <duff@adacore.com>
+
+       * bcheck.adb (Check_Consistent_Dynamic_Elaboration_Checking):
+       Increment Warnings_Detected.  It was decrementing, which is
+       wrong since we just issued a warning message.
+       * binderr.ads (Errors_Detected, Warnings_Detected): Declare
+       these variables to be of subtype Nat instead of Int, because
+       they should never be negative.
+
+2017-01-19  Javier Miranda  <miranda@adacore.com>
+
+       * contracts.adb (Build_Postconditions_Procedure): Replace
+       Generate_C_Code by Modify_Tree_For_C.
+       * exp_aggr.adb (Build_Record_Aggr_Code, Expand_Array_Aggregate):
+       Replace Generate_C_Code by Modify_Tree_For_C.
+       * exp_attr.adb (Float_Valid, Is_GCC_Target): Replace Generate_C_Code by
+       Modify_Tree_For_C.
+       * exp_ch11.adb (Expand_N_Exception_Declaration): Replace
+       Generate_C_Code by Modify_Tree_For_C.
+       * exp_ch4.adb (Expand_Allocator_Expression): Replace
+       Generate_C_Code by Modify_Tree_For_C.
+       * exp_dbug.adb (Qualify_Entity_Name): Replace Generate_C_Code
+       by Modify_Tree_For_C.
+       * exp_util.adb (Remove_Side_Effects, Side_Effect_Free): Replace
+       Generate_C_Code by Modify_Tree_For_C.
+       * sem_res.adb (Resolve_Type_Conversion): Replace Generate_C_Code
+       by Modify_Tree_For_C.
+       * sinfo.ads (Modify_Tree_For_C): Adding documentation.
+
 2017-01-19  Javier Miranda  <miranda@adacore.com>
 
        * sem_util.ads, sem_util.adb (Expression_Of_Expression_Function): New
index 66341b443176b482a34d6a3f85ba74fd3b8b2709..fa83f89983a931bc2386ebc84b3f1f062eeda5f6 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- --
@@ -517,7 +517,7 @@ package body Bcheck is
                                    ("?  { which has static elaboration " &
                                                                      "checks");
 
-                                 Warnings_Detected := Warnings_Detected - 1;
+                                 Warnings_Detected := Warnings_Detected + 1;
                               end if;
                            end;
                         end if;
index 46b1846e0ed938a598735d5c2954876423a3b7be..a6434a0c22336455f81aa56a8e306cfc6ed90149 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---          Copyright (C) 1992-2014, 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- --
@@ -31,10 +31,10 @@ with Types; use Types;
 
 package Binderr is
 
-   Errors_Detected : Int;
+   Errors_Detected : Nat;
    --  Number of errors detected so far
 
-   Warnings_Detected : Int;
+   Warnings_Detected : Nat;
    --  Number of warnings detected
 
    Info_Prefix_Suppress : Boolean := False;
index eb73d0354720453f6f4d040ce363a7426f845279..d5b31034f6d54ed1dc8a4d4ce2aaca572032df7b 100644 (file)
@@ -2222,7 +2222,7 @@ package body Contracts is
          --  enclosing subprogram, which would cause problems for unnesting
          --  routines in the absence of inlining.
 
-         if Generate_C_Code then
+         if Modify_Tree_For_C then
             Set_Has_Pragma_Inline        (Proc_Id);
             Set_Has_Pragma_Inline_Always (Proc_Id);
             Set_Is_Inlined               (Proc_Id);
index 2b750bf807dad8036a52906f38e314638939bb8d..25647048951dc3ef62ff8c3b34c69c694291e994 100644 (file)
@@ -3657,7 +3657,7 @@ package body Exp_Aggr is
                   end if;
                end if;
 
-               if Generate_C_Code
+               if Modify_Tree_For_C
                  and then Nkind (Expr_Q) = N_Aggregate
                  and then Is_Array_Type (Etype (Expr_Q))
                  and then Present (First_Index (Etype (Expr_Q)))
@@ -6245,7 +6245,7 @@ package body Exp_Aggr is
          if (In_Place_Assign_OK_For_Declaration or else Maybe_In_Place_OK)
            and then not AAMP_On_Target
            and then not CodePeer_Mode
-           and then not Generate_C_Code
+           and then not Modify_Tree_For_C
            and then not Possible_Bit_Aligned_Component (Target)
            and then not Is_Possibly_Unaligned_Slice (Target)
            and then Aggr_Assignment_OK_For_Backend (N)
index 5b8e0055a3e2a9bbcf629fc2f9f14398b451133b..c38db1eea75ca6a68e39e9a43579ce88b9db53b6 100644 (file)
@@ -6525,7 +6525,7 @@ package body Exp_Attr is
             begin
                --  The C and AAMP back-ends handle Valid for fpt types
 
-               if Generate_C_Code or else Float_Rep (Btyp) = AAMP then
+               if Modify_Tree_For_C or else Float_Rep (Btyp) = AAMP then
                   Analyze_And_Resolve (Pref, Ptyp);
                   Set_Etype (N, Standard_Boolean);
                   Set_Analyzed (N);
@@ -8155,7 +8155,7 @@ package body Exp_Attr is
       begin
          return not CodePeer_Mode
            and then not AAMP_On_Target
-           and then not Generate_C_Code;
+           and then not Modify_Tree_For_C;
       end Is_GCC_Target;
 
    --  Start of processing for Is_Inline_Floating_Point_Attribute
index 1a507efa7e72e0230070ceaa41fa32128ed46747..4e37a50becdef7866df44703d5ca1c2a93d6a84b 100644 (file)
@@ -1253,7 +1253,7 @@ package body Exp_Ch11 is
    begin
       --  Nothing to do when generating C code
 
-      if Generate_C_Code then
+      if Modify_Tree_For_C then
          return;
       end if;
 
index 1f91de0c293857e53aea2f4e7b57e784714aefa3..f2c39a60f1ca1b7d1cd631d26908786a02733a42 100644 (file)
@@ -1101,7 +1101,7 @@ package body Exp_Ch4 is
       --  generating C code, to simplify the work in the code generator.
 
       elsif Aggr_In_Place
-        or else (Generate_C_Code and then Nkind (Exp) = N_Aggregate)
+        or else (Modify_Tree_For_C and then Nkind (Exp) = N_Aggregate)
       then
          Temp := Make_Temporary (Loc, 'P', N);
          Temp_Decl :=
index 4064e32fa04233b059cbb1176f576c46f141ff79..a51af01f1b09add7864435d8c0b51e72bf2fd88c 100644 (file)
@@ -1452,7 +1452,7 @@ package body Exp_Dbug is
       --  Qualification needed for enumeration literals when generating C code
       --  (to simplify their management in the backend).
 
-      elsif Generate_C_Code
+      elsif Modify_Tree_For_C
         and then Ekind (Ent) = E_Enumeration_Literal
         and then Scope (Ultimate_Alias (Ent)) /= Standard_Standard
       then
index 9ba997a589a58fd05972badf1026f24bb3bd1f4f..7641540d12663b9a1c53787af0c4d803551c86af 100644 (file)
@@ -9240,7 +9240,7 @@ package body Exp_Util is
          --  initializing a fat pointer and the expression must be free of
          --  side effects to safely compute its bounds.
 
-         if Generate_C_Code
+         if Modify_Tree_For_C
            and then Is_Access_Type (Etype (Exp))
            and then Is_Array_Type (Designated_Type (Etype (Exp)))
            and then not Is_Constrained (Designated_Type (Etype (Exp)))
@@ -9371,7 +9371,7 @@ package body Exp_Util is
          --  be identified here to avoid entering into a never-ending loop
          --  generating internal object declarations.
 
-         elsif Generate_C_Code
+         elsif Modify_Tree_For_C
            and then Nkind (Parent (Exp)) = N_Object_Declaration
            and then
              (Nkind (Exp) /= N_Function_Call
@@ -9423,7 +9423,7 @@ package body Exp_Util is
          --  When generating C code, no need for a 'reference since the
          --  secondary stack is not supported.
 
-         if GNATprove_Mode or Generate_C_Code then
+         if GNATprove_Mode or Modify_Tree_For_C then
             Res := New_Occurrence_Of (Def_Id, Loc);
             Ref_Type := Exp_Type;
 
@@ -9461,7 +9461,7 @@ package body Exp_Util is
             --  Do not generate a 'reference in SPARK mode or C generation
             --  since the access type is not created in the first place.
 
-            if GNATprove_Mode or Generate_C_Code then
+            if GNATprove_Mode or Modify_Tree_For_C then
                New_Exp := E;
 
             --  Otherwise generate reference, marking the value as non-null
@@ -9505,7 +9505,7 @@ package body Exp_Util is
          --     type Rec (D : Integer) is ...
          --     Obj : constant Rec := SomeFunc;
 
-         if Generate_C_Code
+         if Modify_Tree_For_C
            and then Nkind (Parent (Exp)) = N_Object_Declaration
            and then Has_Discriminants (Exp_Type)
            and then Nkind (Exp) = N_Function_Call
@@ -10602,7 +10602,7 @@ package body Exp_Util is
       --  a fat pointer and the expression cannot be assumed to be free of side
       --  effects since it must referenced several times to compute its bounds.
 
-      elsif Generate_C_Code
+      elsif Modify_Tree_For_C
         and then Nkind (N) = N_Type_Conversion
         and then Is_Access_Type (Typ)
         and then Is_Array_Type (Designated_Type (Typ))
index e7239ecd1044bfda9ad66fb1059a099830aa33f3..d00c4eed4e731e253a619dbc226db4484fe676b9 100644 (file)
@@ -1444,12 +1444,15 @@ package body SPARK_Specific is
 
       procedure Traverse_Package_Body (N : Node_Id) is
          Spec_E : constant Entity_Id := Unique_Defining_Entity (N);
+
       begin
          case Ekind (Spec_E) is
             when E_Package =>
                Traverse_Declarations_And_HSS (N);
+
             when E_Generic_Package =>
                null;
+
             when others =>
                raise Program_Error;
          end case;
@@ -1470,12 +1473,18 @@ package body SPARK_Specific is
 
       procedure Traverse_Subprogram_Body (N : Node_Id) is
          Spec_E : constant Entity_Id := Unique_Defining_Entity (N);
+
       begin
          case Ekind (Spec_E) is
-            when E_Function | E_Procedure | Entry_Kind =>
+            when Entry_Kind
+               | E_Function
+               | E_Procedure
+            =>
                Traverse_Declarations_And_HSS (N);
+
             when Generic_Subprogram_Kind =>
                null;
+
             when others =>
                raise Program_Error;
          end case;
index 3713bdbbffdf81b9e4d62aea421caf80b2943db1..ecb70b60f15e571a6653416dc4a3d2460b140bbc 100644 (file)
@@ -653,8 +653,9 @@ package Lib.Xref is
 
       generic
          with procedure Process (N : Node_Id) is <>;
-      procedure Traverse_Compilation_Unit (CU           : Node_Id;
-                                           Inside_Stubs : Boolean);
+      procedure Traverse_Compilation_Unit
+        (CU           : Node_Id;
+         Inside_Stubs : Boolean);
       --  Call Process on all declarations within compilation unit CU. If
       --  Inside_Stubs is True, then the body of stubs is also traversed.
       --  Generic declarations are ignored.
index 8fd886fdb7e81f4927a4d722ff386e4e52e706fe..db41afb4797f6a9397f38aa4c8e374adc5e9ed44 100644 (file)
@@ -5881,12 +5881,12 @@ package body Sem_Ch4 is
          end loop;
       end if;
 
-      --  Before listing the possible candidates, check whether this
-      --  a prefix of a selected component that has been rewritten as
-      --  a parameterless function call because there is a callable
-      --  candidate interpretation. If there is a hidden package in
-      --  the list of homonyms of the function name (bad programming
-      --  style in any case) suggest that this is the intended entity.
+      --  Before listing the possible candidates, check whether this is
+      --  a prefix of a selected component that has been rewritten as a
+      --  parameterless function call because there is a callable candidate
+      --  interpretation. If there is a hidden package in the list of homonyms
+      --  of the function name (bad programming style in any case) suggest that
+      --  this is the intended entity.
 
       if No (Parameter_Associations (N))
         and then Nkind (Parent (N)) = N_Selected_Component
@@ -5903,6 +5903,7 @@ package body Sem_Ch4 is
                   Error_Msg_N
                     ("no legal interpretations as function call,!", Nam);
                   Error_Msg_NE ("\package& is not visible", N, Ent);
+
                   Rewrite (Parent (N),
                     New_Occurrence_Of (Any_Type, Sloc (N)));
                   return;
@@ -5913,8 +5914,8 @@ package body Sem_Ch4 is
          end;
       end if;
 
-      --   Analyze each candidate call again, with full error reporting
-      --   for each.
+      --  Analyze each candidate call again, with full error reporting for
+      --  each.
 
       Error_Msg_N
         ("no candidate interpretations match the actuals:!", Nam);
index abe5bea3709fa32d9ff1aee51a794162f43bc844..176f6a70f8300bb1e982c184b0d78f013a564a86 100644 (file)
@@ -7033,14 +7033,14 @@ package body Sem_Ch8 is
                   Save_Interps (P, Nam);
 
                   --  We use Replace here because this is one of those cases
-                  --  where the parser has missclassified the node, and we
-                  --  fix things up and then do the semantic analysis on the
-                  --  fixed up node. Normally we do this using one of the
-                  --  Sinfo.CN routines, but this is too tricky for that.
+                  --  where the parser has missclassified the node, and we fix
+                  --  things up and then do the semantic analysis on the fixed
+                  --  up node. Normally we do this using one of the Sinfo.CN
+                  --  routines, but this is too tricky for that.
 
-                  --  Note that using Rewrite would be wrong, because we
-                  --  would have a tree where the original node is unanalyzed,
-                  --  and this violates the required interface for ASIS.
+                  --  Note that using Rewrite would be wrong, because we would
+                  --  have a tree where the original node is unanalyzed, and
+                  --  this violates the required interface for ASIS.
 
                   Replace (P,
                     Make_Function_Call (Sloc (P), Name => Nam));
@@ -7049,9 +7049,9 @@ package body Sem_Ch8 is
 
                   Analyze_Call (P);
 
-                  --  If the prefix is illegal after this transformation,
-                  --  there may be visibility errors on the prefix. The
-                  --  safest is to treat the selected component as an error.
+                  --  If the prefix is illegal after this transformation, there
+                  --  may be visibility errors on the prefix. The safest is to
+                  --  treat the selected component as an error.
 
                   if Error_Posted (P) then
                      Set_Etype (N, Any_Type);
@@ -7068,8 +7068,8 @@ package body Sem_Ch8 is
          else
             --  Format node as expanded name, to avoid cascaded errors
 
-            --  If the limited_with transformation was applied earlier,
-            --  restore source for proper error reporting.
+            --  If the limited_with transformation was applied earlier, restore
+            --  source for proper error reporting.
 
             if not Comes_From_Source (P)
               and then Nkind (P) = N_Explicit_Dereference
index 71c3a5bcf31568d62f465c96588cb59d5906a188..3728482a151b7958d2bd5612fa1b2d7b585b0e4d 100644 (file)
@@ -11022,7 +11022,7 @@ package body Sem_Res is
       --  remove side effects in order to store the result of the conversion
       --  into a temporary.
 
-      if Generate_C_Code
+      if Modify_Tree_For_C
         and then Nkind (N) = N_Type_Conversion
         and then Nkind (Parent (N)) /= N_Object_Declaration
         and then Is_Access_Type (Etype (N))
index f83d9ee3fea01159e34f4013de0d565a7a66a801..352673c296456346661650a12c187f3ca93ebd3c 100644 (file)
@@ -8068,13 +8068,11 @@ package body Sem_Util is
    ----------------------
 
    procedure Get_Index_Bounds
-     (N : Node_Id;
-      L, H : out Node_Id;
+     (N             : Node_Id;
+      L             : out Node_Id;
+      H             : out Node_Id;
       Use_Full_View : Boolean := False)
    is
-      Kind : constant Node_Kind := Nkind (N);
-      R    : Node_Id;
-
       function Scalar_Range_Of_Right_View return Node_Id;
       --  Call Scalar_Range with argument determined by Use_Full_View
       --  parameter.
@@ -8085,22 +8083,31 @@ package body Sem_Util is
 
       function Scalar_Range_Of_Right_View return Node_Id is
          E : Entity_Id := Entity (N);
+
       begin
          if Use_Full_View and then Present (Full_View (E)) then
             E := Full_View (E);
          end if;
+
          return Scalar_Range (E);
       end Scalar_Range_Of_Right_View;
 
+      --  Local variables
+
+      Kind : constant Node_Kind := Nkind (N);
+      Rng  : Node_Id;
+
+   --  Start of processing for Get_Index_Bounds
+
    begin
       if Kind = N_Range then
          L := Low_Bound (N);
          H := High_Bound (N);
 
       elsif Kind = N_Subtype_Indication then
-         R := Range_Expression (Constraint (N));
+         Rng := Range_Expression (Constraint (N));
 
-         if R = Error then
+         if Rng = Error then
             L := Error;
             H := Error;
             return;
index 826334042a4803543f553e6a61c4cf322553f6ed..b4374122e6c952413a9c759235b9cc6431492e93 100644 (file)
@@ -896,8 +896,9 @@ package Sem_Util is
    --  derivation that does not see the full view of that ancestor.
 
    procedure Get_Index_Bounds
-     (N : Node_Id;
-      L, H : out Node_Id;
+     (N             : Node_Id;
+      L             : out Node_Id;
+      H             : out Node_Id;
       Use_Full_View : Boolean := False);
    --  This procedure assigns to L and H respectively the values of the low and
    --  high bounds of node N, which must be a range, subtype indication, or the
@@ -905,8 +906,8 @@ package Sem_Util is
    --  there was an earlier error in the range.
    --  Use_Full_View is intended for use by clients other than the compiler
    --  (specifically, gnat2scil) to indicate that we want the full view if
-   --  the index type turns out to be a partial view; this case should
-   --  not arise during normal compilation of semantically correct programs.
+   --  the index type turns out to be a partial view; this case should not
+   --  arise during normal compilation of semantically correct programs.
 
    function Get_Enum_Lit_From_Pos
      (T   : Entity_Id;
index 5ad8bbc0d32d19e157bb1c1d07348ba007dd564a..404630e3ceaa8f58278477084759eb4ece18f369 100644 (file)
@@ -790,6 +790,11 @@ package Sinfo is
    --    they are systematically expanded into loops (for arrays) and
    --    individual assignments (for records).
 
+   --    Unconstrained array types are handled by means of fat pointers.
+
+   --    Postconditions are inlined by the frontend since their body may have
+   --    references to itypes defined in the enclosing subprogram.
+
    ------------------------------------
    -- Description of Semantic Fields --
    ------------------------------------