[gcc r12-3735] [Ada] Interface behaves differently from abstract tagged null

Pierre-Marie de Rodat pmderodat@gcc.gnu.org
Tue Sep 21 15:26:29 GMT 2021


https://gcc.gnu.org/g:16e307b9a48813a08852fec16e77eb921db78b37

commit r12-3735-g16e307b9a48813a08852fec16e77eb921db78b37
Author: Javier Miranda <miranda@adacore.com>
Date:   Fri Jul 2 13:13:12 2021 -0400

    [Ada] Interface behaves differently from abstract tagged null
    
    gcc/ada/
    
            * exp_ch6.adb (Expand_Simple_Function_Return): For explicit
            dereference of type conversion, enable code that ensures that
            the tag of the result is that of the result type.

Diff:
---
 gcc/ada/exp_ch6.adb | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/gcc/ada/exp_ch6.adb b/gcc/ada/exp_ch6.adb
index 50551847629..7717fa7c0ab 100644
--- a/gcc/ada/exp_ch6.adb
+++ b/gcc/ada/exp_ch6.adb
@@ -7437,6 +7437,10 @@ package body Exp_Ch6 is
         and then not Is_Class_Wide_Type (Utyp)
         and then (Nkind (Exp) in
                       N_Type_Conversion | N_Unchecked_Type_Conversion
+                    or else (Nkind (Exp) = N_Explicit_Dereference
+                               and then Nkind (Prefix (Exp)) in
+                                          N_Type_Conversion |
+                                          N_Unchecked_Type_Conversion)
                     or else (Is_Entity_Name (Exp)
                                and then Is_Formal (Entity (Exp))))
       then


More information about the Gcc-cvs mailing list