exp_disp.adb (Expand_Interface_Conversion): If the target type is a tagged synchroniz...
authorEd Schonberg <schonberg@adacore.com>
Fri, 1 Aug 2008 07:38:45 +0000 (09:38 +0200)
committerArnaud Charlet <charlet@gcc.gnu.org>
Fri, 1 Aug 2008 07:38:45 +0000 (09:38 +0200)
2008-08-01  Ed Schonberg  <schonberg@adacore.com>

* exp_disp.adb (Expand_Interface_Conversion): If the target type is a
tagged synchronized type, use corresponding record type.

From-SVN: r138463

gcc/ada/exp_disp.adb

index ac25171..461edc7 100644 (file)
@@ -766,6 +766,13 @@ package body Exp_Disp is
          Iface_Typ := Root_Type (Iface_Typ);
       end if;
 
+      --  If the target type is a tagged synchronized type, the dispatch table
+      --  info is in the correspondoing record type.
+
+      if Is_Concurrent_Type (Iface_Typ) then
+         Iface_Typ := Corresponding_Record_Type (Iface_Typ);
+      end if;
+
       pragma Assert (not Is_Static
         or else (not Is_Class_Wide_Type (Iface_Typ)
                   and then Is_Interface (Iface_Typ)));