From 4a1872632c20e4b93d5d3214505470966c0bebb4 Mon Sep 17 00:00:00 2001 From: Bob Duff Date: Mon, 16 Dec 2019 10:33:50 +0000 Subject: [PATCH] [Ada] Bad warning: Size in Compile_Time_Error in nested instance 2019-12-16 Bob Duff 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 | 7 +++++++ gcc/ada/sem_attr.adb | 7 +++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 95e195d89f0..aa970430990 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,10 @@ +2019-12-16 Bob Duff + + * 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 * sem_util.adb (Is_Atomic_Or_VFA_Object): Also return true for diff --git a/gcc/ada/sem_attr.adb b/gcc/ada/sem_attr.adb index e84229348f3..dcc40d27c82 100644 --- a/gcc/ada/sem_attr.adb +++ b/gcc/ada/sem_attr.adb @@ -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; -- 2.30.2