]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
sem_ch13.ads: Minor comment update
authorRobert Dewar <dewar@adacore.com>
Mon, 4 Aug 2008 12:34:16 +0000 (14:34 +0200)
committerArnaud Charlet <charlet@gcc.gnu.org>
Mon, 4 Aug 2008 12:34:16 +0000 (14:34 +0200)
2008-08-04  Robert Dewar  <dewar@adacore.com>

* sem_ch13.ads: Minor comment update

* sem_res.adb: (Large_Storage_Type): Improve previous change.

From-SVN: r138612

gcc/ada/sem_res.adb

index 6c632fdb5f73bea8f8545b566afd9c6d5885f74c..d59c30bc0f9dbedf476e88aae96f5d8176efc5e6 100644 (file)
@@ -446,16 +446,18 @@ package body Sem_Res is
                return;
             end if;
 
-            --   Detect a common beginner error:
+            --   Detect a common error:
 
             --   type R (D : Positive := 100) is record
             --     Name : String (1 .. D);
             --   end record;
 
-            --  The default value causes an object of type R to be
-            --  allocated with room for Positive'Last characters.
+            --  The default value causes an object of type R to be allocated
+            --  with room for Positive'Last characters. The RM does not mandate
+            --  the allocation of the maximum size, but that is what GNAT does
+            --  so we should warn the programmer that there is a problem.
 
-            declare
+            Check_Large : declare
                SI : Node_Id;
                T  : Entity_Id;
                TB : Node_Id;
@@ -480,9 +482,11 @@ package body Sem_Res is
                     and then Compile_Time_Known_Value (Type_High_Bound (T))
                     and then
                       Minimum_Size (T, Biased => True) >=
-                        Esize (Standard_Integer) - 1;
+                        RM_Size (Standard_Positive);
                end Large_Storage_Type;
 
+            --  Start of processing for Check_Large
+
             begin
                --  Check that the Disc has a large range
 
@@ -553,7 +557,7 @@ package body Sem_Res is
                <<No_Danger>>
                   null;
 
-            end;
+            end Check_Large;
          end if;
 
       --  Legal case is in index or discriminant constraint