]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ada: Check validity using signedness from the type and not its base type
authorPiotr Trojanek <trojanek@adacore.com>
Tue, 4 Mar 2025 11:33:34 +0000 (12:33 +0100)
committerEric Botcazou <ebotcazou@adacore.com>
Mon, 9 Jun 2025 08:21:18 +0000 (10:21 +0200)
When attribute Valid is applied to a private type, we used the signedness of
its implementation base type which wrongly included negative values.

gcc/ada/ChangeLog:

* exp_attr.adb (Expand_N_Attribute_Reference): When expanding attribute
Valid, use signedness from the validated view, not from its base type.

gcc/ada/exp_attr.adb

index 455cc226bbfb91c4e03a5dea5453d7231e85d757..18179d3a4e97673e211dde5bd0555f20d887ec3c 100644 (file)
@@ -7872,9 +7872,8 @@ package body Exp_Attr is
          else
             declare
                Uns  : constant Boolean :=
-                        Is_Unsigned_Type (Ptyp)
-                          or else (Is_Private_Type (Ptyp)
-                                    and then Is_Unsigned_Type (PBtyp));
+                 Is_Unsigned_Type (Validated_View (Ptyp));
+
                Size : Uint;
                P    : Node_Id := Pref;