[Ada] Fix handling of PATs
authorArnaud Charlet <charlet@adacore.com>
Tue, 19 Jan 2021 08:32:24 +0000 (03:32 -0500)
committerPierre-Marie de Rodat <derodat@adacore.com>
Thu, 6 May 2021 07:51:30 +0000 (03:51 -0400)
gcc/ada/

* exp_pakd.adb (Expand_Packed_Eq): Fix handling of PATs.

gcc/ada/exp_pakd.adb

index 6ccf237..1dc6af9 100644 (file)
@@ -1909,9 +1909,10 @@ package body Exp_Pakd is
       --  where PAT is the packed array type. This works fine, since in the
       --  modular case we guarantee that the unused bits are always zeroes.
       --  We do have to compare the lengths because we could be comparing
-      --  two different subtypes of the same base type.
+      --  two different subtypes of the same base type. We can only do this
+      --  if the PATs on both sides are the same.
 
-      if Is_Modular_Integer_Type (PAT) then
+      if Is_Modular_Integer_Type (PAT) and then PAT = Etype (R) then
          Rewrite (N,
            Make_And_Then (Loc,
              Left_Opnd =>