[Ada] Bad warning: Size in Compile_Time_Error in nested instance
authorBob Duff <duff@adacore.com>
Mon, 16 Dec 2019 10:33:50 +0000 (10:33 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Mon, 16 Dec 2019 10:33:50 +0000 (10:33 +0000)
2019-12-16  Bob Duff  <duff@adacore.com>

gcc/ada/

* sem_attr.adb (Analyze_Attribute): Use Known_RM_Size. But we
still need Size_Known_At_Compile_Time, because when the size
really is known, sometimes only one or the other of these is
True.

From-SVN: r279421

gcc/ada/ChangeLog
gcc/ada/sem_attr.adb

index 95e195d89f0bde713989e2523c7a81f216a8db48..aa9704309904c59c5715ede3f9f4a6f8580659e7 100644 (file)
@@ -1,3 +1,10 @@
+2019-12-16  Bob Duff  <duff@adacore.com>
+
+       * sem_attr.adb (Analyze_Attribute): Use Known_RM_Size. But we
+       still need Size_Known_At_Compile_Time, because when the size
+       really is known, sometimes only one or the other of these is
+       True.
+
 2019-12-16  Eric Botcazou  <ebotcazou@adacore.com>
 
        * sem_util.adb (Is_Atomic_Or_VFA_Object): Also return true for
index e84229348f3cc34be1c48f8de5d111bc0225f254..dcc40d27c827be8099bf975ce9df2d8abc4ff166 100644 (file)
@@ -5841,13 +5841,16 @@ package body Sem_Attr is
          --  Time_Errors after the back end has been called and this occurrence
          --  of 'Size is known at compile time then it is safe to perform this
          --  evaluation. Needed to perform the static evaluation of the full
-         --  boolean expression of these pragmas.
+         --  boolean expression of these pragmas. Note that Known_RM_Size is
+         --  sometimes True when Size_Known_At_Compile_Time is False, when the
+         --  back end has computed it.
 
          if In_Compile_Time_Warning_Or_Error
            and then Is_Entity_Name (P)
            and then (Is_Type (Entity (P))
                       or else Ekind (Entity (P)) = E_Enumeration_Literal)
-           and then Size_Known_At_Compile_Time (Entity (P))
+           and then (Known_RM_Size (Entity (P))
+                       or else Size_Known_At_Compile_Time (Entity (P)))
          then
             declare
                Siz : Uint;