[gcc r15-9802] ada: Check validity using signedness from the type and not its base type
Eric Botcazou
ebotcazou@gcc.gnu.org
Mon Jun 9 08:28:37 GMT 2025
https://gcc.gnu.org/g:e68026cd01d87a89d52c74238d4c1bff8764f9fc
commit r15-9802-ge68026cd01d87a89d52c74238d4c1bff8764f9fc
Author: Piotr Trojanek <trojanek@adacore.com>
Date: Tue Mar 4 12:33:34 2025 +0100
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.
Diff:
---
gcc/ada/exp_attr.adb | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/gcc/ada/exp_attr.adb b/gcc/ada/exp_attr.adb
index 455cc226bbfb..18179d3a4e97 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;
More information about the Gcc-cvs
mailing list