From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1914) id 44F4A38A9400; Tue, 11 Jan 2022 13:27:45 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 44F4A38A9400 MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Pierre-Marie de Rodat To: gcc-cvs@gcc.gnu.org Subject: [gcc r12-6460] [Ada] Recover proof of Ada.Strings.Fixed with assertions X-Act-Checkin: gcc X-Git-Author: Yannick Moy X-Git-Refname: refs/heads/master X-Git-Oldrev: 7aa3800216ea991050ec904a28c628cd7799021b X-Git-Newrev: 87f152ba31e41df9225ff08682eca7b8fb66234b Message-Id: <20220111132745.44F4A38A9400@sourceware.org> Date: Tue, 11 Jan 2022 13:27:45 +0000 (GMT) X-BeenThere: gcc-cvs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 11 Jan 2022 13:27:45 -0000 https://gcc.gnu.org/g:87f152ba31e41df9225ff08682eca7b8fb66234b commit r12-6460-g87f152ba31e41df9225ff08682eca7b8fb66234b Author: Yannick Moy Date: Wed Jan 5 10:43:25 2022 +0100 [Ada] Recover proof of Ada.Strings.Fixed with assertions gcc/ada/ * libgnat/a-strfix.adb (Insert, Overwrite): Add assertions. Diff: --- gcc/ada/libgnat/a-strfix.adb | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/gcc/ada/libgnat/a-strfix.adb b/gcc/ada/libgnat/a-strfix.adb index 255738a229b..74752543024 100644 --- a/gcc/ada/libgnat/a-strfix.adb +++ b/gcc/ada/libgnat/a-strfix.adb @@ -384,6 +384,10 @@ package body Ada.Strings.Fixed with SPARK_Mode is Source (Source'First .. Before - 1); Result (Front + 1 .. Front + New_Item'Length) := New_Item; + + pragma Assert + (Result (1 .. Before - Source'First) + = Source (Source'First .. Before - 1)); pragma Assert (Result (Before - Source'First + 1 @@ -558,15 +562,21 @@ package body Ada.Strings.Fixed with SPARK_Mode is if Position <= Source'Last - New_Item'Length then Result (Front + New_Item'Length + 1 .. Result'Last) := Source (Position + New_Item'Length .. Source'Last); + + pragma Assert + (Result + (Position - Source'First + New_Item'Length + 1 + .. Result'Last) + = Source (Position + New_Item'Length .. Source'Last)); end if; pragma Assert (if Position <= Source'Last - New_Item'Length then Result - (Position - Source'First + New_Item'Length + 1 - .. Result'Last) - = Source (Position + New_Item'Length .. Source'Last)); + (Position - Source'First + New_Item'Length + 1 + .. Result'Last) + = Source (Position + New_Item'Length .. Source'Last)); end return; end; end Overwrite;