]> git.ipfire.org Git - thirdparty/gcc.git/commit
ada: Improve large unconstrained-but-definite warning
authorRonan Desplanques <desplanques@adacore.com>
Wed, 12 Feb 2025 18:09:18 +0000 (19:09 +0100)
committerMarc Poulhiès <dkm@gcc.gnu.org>
Fri, 6 Jun 2025 08:37:03 +0000 (10:37 +0200)
commit537453af7c83432f5bde527f035f9dbb43921fd3
tree06d97dd0711c48fe0c0febc80b614e6ac194d422
parent939d23d1c8966c453a03e216135cb968e9db1761
ada: Improve large unconstrained-but-definite warning

Before this patch, Check_Discriminant_Use called Is_Limited type on
entities before they were fully analyzed. That caused Is_Limited_Type
to incorrectly return False for records that are limited because they
have a limited component.

This patch pushes back the emissions of the Check_Discriminant_Use
warning after analysis of record declarations. A new field to
E_Record_Type entity is added to take relevant discriminant uses into
account.

gcc/ada/ChangeLog:

* gen_il-fields.ads: New field.
* gen_il-gen-gen_entities.adb: New field.
* einfo.ads: Document new field.
* sem_res.adb (Check_Discriminant_Use): Record relevant uses in new
field. Move warning emission to...
* sem_ch3.adb (Analyze_Full_Type_Declaration): ... Here.
gcc/ada/einfo.ads
gcc/ada/gen_il-fields.ads
gcc/ada/gen_il-gen-gen_entities.adb
gcc/ada/sem_ch3.adb
gcc/ada/sem_res.adb