[Ada] Fix assertion failure on entry call through unchecked conversion
authorEric Botcazou <ebotcazou@adacore.com>
Thu, 19 Mar 2020 10:41:37 +0000 (11:41 +0100)
committerPierre-Marie de Rodat <derodat@adacore.com>
Thu, 11 Jun 2020 09:53:55 +0000 (05:53 -0400)
2020-06-11  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* exp_util.adb (Safe_Unchecked_Type_Conversion): Add missing
Is_Type guard before calling Has_Discriminants on Etype.

gcc/ada/exp_util.adb

index 5e186ec1ca4d867bf5e4b5516adc9431a8366d08..471790e73ee92a139a64e4b2249b809398ae2df5 100644 (file)
@@ -12551,13 +12551,10 @@ package body Exp_Util is
       elsif Nkind (Pexp) = N_Selected_Component
         and then Prefix (Pexp) = Exp
       then
-         if No (Etype (Pexp)) then
-            return True;
-         else
-            return
-              not Has_Discriminants (Etype (Pexp))
-                or else Is_Constrained (Etype (Pexp));
-         end if;
+         return No (Etype (Pexp))
+           or else not Is_Type (Etype (Pexp))
+           or else not Has_Discriminants (Etype (Pexp))
+           or else Is_Constrained (Etype (Pexp));
       end if;
 
       --  Set the output type, this comes from Etype if it is set, otherwise we