aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorYannick Moy <moy@adacore.com>2023-06-08 16:52:24 +0200
committerMarc Poulhiès <poulhies@adacore.com>2023-06-20 13:25:28 +0200
commitc11ef75cb2cd60b0c4408aa8ed1898b69b8c946a (patch)
tree4fe65000f44822b2934c740db09c0998ee4aa911 /gcc
parent865c5db7cbc16de9887d5941be9a63a7fa03692e (diff)
downloadgcc-c11ef75cb2cd60b0c4408aa8ed1898b69b8c946a.zip
gcc-c11ef75cb2cd60b0c4408aa8ed1898b69b8c946a.tar.gz
gcc-c11ef75cb2cd60b0c4408aa8ed1898b69b8c946a.tar.bz2
ada: Fix crash on inlining in GNATprove
After the recent change on detection of non-inlining, calls inside the iterator part of a quantified expression were not considered as preventing inlining anymore, leading to a crash later on inside GNATprove. Now fixed. gcc/ada/ * sem_res.adb (Resolve_Call): Fix change that replaced test for quantified expressions by the test for potentially unevaluated contexts. Both should be performed.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/sem_res.adb9
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/ada/sem_res.adb b/gcc/ada/sem_res.adb
index f4dfc04..2c8efec 100644
--- a/gcc/ada/sem_res.adb
+++ b/gcc/ada/sem_res.adb
@@ -7300,6 +7300,15 @@ package body Sem_Res is
("cannot inline & (in potentially unevaluated context)?",
N, Nam_UA);
+ -- Calls are not inlined inside the loop_parameter_specification
+ -- or iterator_specification of the quantified expression, as they
+ -- are only preanalyzed. Calls in the predicate part are handled
+ -- by the previous test on potentially unevaluated expressions.
+
+ elsif In_Quantified_Expression (N) then
+ Cannot_Inline
+ ("cannot inline & (in quantified expression)?", N, Nam_UA);
+
-- Inlining should not be performed during preanalysis
elsif Full_Analysis then