diff options
author | Piotr Trojanek <trojanek@adacore.com> | 2025-03-04 12:33:34 +0100 |
---|---|---|
committer | Eric Botcazou <ebotcazou@adacore.com> | 2025-06-09 10:21:18 +0200 |
commit | e68026cd01d87a89d52c74238d4c1bff8764f9fc (patch) | |
tree | 6b3c35f474ae3a8a40604e1977d983ac9cfc5045 | |
parent | 8a63f6bd618decc974a46c50894f3b450e025f95 (diff) | |
download | gcc-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.adb | 5 |
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; |