diff --git a/gcc/ada/exp_pakd.adb b/gcc/ada/exp_pakd.adb index 6ccf2372b05..1dc6af9a4c3 100644 --- a/gcc/ada/exp_pakd.adb +++ b/gcc/ada/exp_pakd.adb @@ -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 =>