[Ada] Spurious warning about change of representastion in call
authorEd Schonberg <schonberg@adacore.com>
Thu, 12 Dec 2019 10:03:53 +0000 (10:03 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Thu, 12 Dec 2019 10:03:53 +0000 (10:03 +0000)
2019-12-12  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* sem_ch13.adb (Same_Reprewentation): if the actual in a call is
a generic actual type, use its bsae type to determine whether a
change of representastion may be necessary for proper parameter
passing.

From-SVN: r279305

gcc/ada/ChangeLog
gcc/ada/sem_ch13.adb

index f18df8288961f8077b3a6aa8daf486921a10e8e4..3423e2e83e295cdf280062aa4ace88f6ec7c2da0 100644 (file)
@@ -1,3 +1,10 @@
+2019-12-12  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_ch13.adb (Same_Reprewentation): if the actual in a call is
+       a generic actual type, use its bsae type to determine whether a
+       change of representastion may be necessary for proper parameter
+       passing.
+
 2019-12-12  Ed Schonberg  <schonberg@adacore.com>
 
        * sem_type.adb (Find_Unique_Type): A call to the universal
index 759b7ce05097faa016594d1df19161f3f58c6bd1..b6d970594e09ee1b0712d625d544e7b6f69f7951 100644 (file)
@@ -13448,6 +13448,14 @@ package body Sem_Ch13 is
         and then Base_Type (T1) = Full_View (Base_Type (T2))
       then
          return True;
+
+      --  If T2 is a generic actual it is declared as a subtype, so
+      --  check against its base type.
+
+      elsif Is_Generic_Actual_Type (T1)
+        and then Same_Representation (Base_Type (T1), T2)
+      then
+         return True;
       end if;
 
       --  Tagged types always have the same representation, because it is not