aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPiotr Trojanek <trojanek@adacore.com>2023-04-17 12:14:28 +0200
committerMarc Poulhiès <poulhies@adacore.com>2023-06-13 09:31:42 +0200
commit230fef15abbbd37ae2ee339839f7b478d1ce2ab3 (patch)
tree8f58d924a62e18480bcc05a3f2228d0393245a17 /gcc
parent95e2a51685d5ce977c332735ddc5ef39e777639e (diff)
downloadgcc-230fef15abbbd37ae2ee339839f7b478d1ce2ab3.zip
gcc-230fef15abbbd37ae2ee339839f7b478d1ce2ab3.tar.gz
gcc-230fef15abbbd37ae2ee339839f7b478d1ce2ab3.tar.bz2
ada: Remove explicit decoration of wrapper created in freezing
We create wrapper functions associated with inherited functions with controlling results which are not overridden during freezing. We partly decorated them explicitly, even though they would be fully decorated later anyway. This early decoration didn't work as expected, because flag In_Private_Part that is read by Override_Dispatching_Operation it not set reliably while freezing (as explained in the comment of Is_Private_Declaration). In effect, we were getting a circularity between Alias and Overridden_Operation, which was causing GNATprove to loop infinitely. Apparently the cleanest fix is to not decorate the wrapper with an early call to Override_Dispatching_Operation. gcc/ada/ * exp_ch3.adb (Make_Controlling_Function_Wrappers): Remove early decoration.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/exp_ch3.adb2
1 files changed, 0 insertions, 2 deletions
diff --git a/gcc/ada/exp_ch3.adb b/gcc/ada/exp_ch3.adb
index f8c9947..91dcfa0 100644
--- a/gcc/ada/exp_ch3.adb
+++ b/gcc/ada/exp_ch3.adb
@@ -11140,8 +11140,6 @@ package body Exp_Ch3 is
-- is a wrapper's body in order to get check suppression right.
Set_Corresponding_Spec (Func_Body, Func_Id);
-
- Override_Dispatching_Operation (Tag_Typ, Subp, New_Op => Func_Id);
end if;
<<Next_Prim>>