* [Ada] Do not generate an Itype_Reference node for slices in GNATprove mode
@ 2021-06-16 8:43 Pierre-Marie de Rodat
0 siblings, 0 replies; only message in thread
From: Pierre-Marie de Rodat @ 2021-06-16 8:43 UTC (permalink / raw)
To: gcc-patches; +Cc: Yannick Moy
[-- Attachment #1: Type: text/plain, Size: 750 bytes --]
As part of the work on changing side-effects removal in SPARK, a special
case was introduced to generate an Itype_Reference for Itypes in slices.
This was based on a misunderstanding of existing checks for bounds when
analyzing slices. These Itype_Reference are actually not needed to get
the corresponding run-time checks in GNATprove, and are actually harmful
in some cases (inside quantified expressions) as the insertion point for
the Itype_Reference ends up being outside of the quantifier scope,
leading to unprovable checks.
Tested on x86_64-pc-linux-gnu, committed on trunk
gcc/ada/
* sem_res.adb (Set_Slice_Subtype): Revert special-case
introduced previously, which is not needed as Itypes created for
slices are precisely always used.
[-- Attachment #2: patch.diff --]
[-- Type: text/x-diff, Size: 771 bytes --]
diff --git a/gcc/ada/sem_res.adb b/gcc/ada/sem_res.adb
--- a/gcc/ada/sem_res.adb
+++ b/gcc/ada/sem_res.adb
@@ -12607,10 +12607,9 @@ package body Sem_Res is
-- the point where actions for the slice are analyzed). Note that this
-- is different from freezing the itype immediately, which might be
-- premature (e.g. if the slice is within a transient scope). This needs
- -- to be done only if expansion is enabled, or in GNATprove mode to
- -- capture the associated run-time exceptions if any.
+ -- to be done only if expansion is enabled.
- elsif Expander_Active or GNATprove_Mode then
+ elsif Expander_Active then
Ensure_Defined (Typ => Slice_Subtype, N => N);
end if;
end Set_Slice_Subtype;
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2021-06-16 8:44 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-16 8:43 [Ada] Do not generate an Itype_Reference node for slices in GNATprove mode Pierre-Marie de Rodat
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).