aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPiotr Trojanek <trojanek@adacore.com>2025-03-04 12:33:34 +0100
committerEric Botcazou <ebotcazou@adacore.com>2025-06-09 10:21:18 +0200
commite68026cd01d87a89d52c74238d4c1bff8764f9fc (patch)
tree6b3c35f474ae3a8a40604e1977d983ac9cfc5045
parent8a63f6bd618decc974a46c50894f3b450e025f95 (diff)
downloadgcc-e68026cd01d87a89d52c74238d4c1bff8764f9fc.zip
gcc-e68026cd01d87a89d52c74238d4c1bff8764f9fc.tar.gz
gcc-e68026cd01d87a89d52c74238d4c1bff8764f9fc.tar.bz2
ada: Check validity using signedness from the type and not its base type
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.
-rw-r--r--gcc/ada/exp_attr.adb5
1 files changed, 2 insertions, 3 deletions
diff --git a/gcc/ada/exp_attr.adb b/gcc/ada/exp_attr.adb
index 455cc22..18179d3 100644
--- a/gcc/ada/exp_attr.adb
+++ b/gcc/ada/exp_attr.adb
@@ -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;