From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 7871) id BD54E3858422; Tue, 22 Nov 2022 12:36:04 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org BD54E3858422 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1669120564; bh=afBzm8QOwxHBS42yUdrbvyFSFa3tYLlazr11OX7ZzZY=; h=From:To:Subject:Date:From; b=Q+9PWpdf0DcWGuu4q8BFoO5WCFoH2jkBC1ocrY0bAimiHKwppIXPXyTr82tLNTISz InfxF7U6UbvODGZzcd3H2nxyTmctZCivu2u+Nz2qknHFC7pzF447eM7KKw0AE3yuOG pZUS/A1nPzqEHvgbD+nq7A1N6etG/JMxGPwmvOLU= MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Marc Poulhi?s To: gcc-cvs@gcc.gnu.org Subject: [gcc r13-4232] ada: Adjust number of errors when removing warning in dead code X-Act-Checkin: gcc X-Git-Author: Piotr Trojanek X-Git-Refname: refs/heads/master X-Git-Oldrev: 3b5f3138dceeac609b4c5fe33009302d13592400 X-Git-Newrev: 29b7e00589f1c1c00029928ac1b7ba8ff53288f5 Message-Id: <20221122123604.BD54E3858422@sourceware.org> Date: Tue, 22 Nov 2022 12:36:04 +0000 (GMT) List-Id: https://gcc.gnu.org/g:29b7e00589f1c1c00029928ac1b7ba8ff53288f5 commit r13-4232-g29b7e00589f1c1c00029928ac1b7ba8ff53288f5 Author: Piotr Trojanek Date: Mon Nov 7 15:17:40 2022 +0100 ada: Adjust number of errors when removing warning in dead code When a warning about a runtime exception is emitted for a code in generic instance, we add continuation warnings "in instantiation ..." and only the original message increase the total number of errors. When removing these messages, e.g. after detecting that the code inside generic instance is dead, we must decrease the total number of errors, as otherwise the compiler exit status might stop gnatmake or gprbuild. gcc/ada/ * errout.adb (To_Be_Removed): Decrease total number of errors when removing a warning that has been escalated into error. * erroutc.adb (dmsg): Print Warn_Runtime_Raise flag. Diff: --- gcc/ada/errout.adb | 11 +++++++++++ gcc/ada/erroutc.adb | 35 ++++++++++++++++++----------------- 2 files changed, 29 insertions(+), 17 deletions(-) diff --git a/gcc/ada/errout.adb b/gcc/ada/errout.adb index afa30674fa3..b30e8b51d15 100644 --- a/gcc/ada/errout.adb +++ b/gcc/ada/errout.adb @@ -3351,6 +3351,17 @@ package body Errout is Warning_Info_Messages := Warning_Info_Messages - 1; end if; + -- When warning about a runtime exception has been escalated + -- into error, the starting message has increased the total + -- errors counter, so here we decrease this counter. + + if Errors.Table (E).Warn_Runtime_Raise + and then not Errors.Table (E).Msg_Cont + and then Warning_Mode = Treat_Run_Time_Warnings_As_Errors + then + Total_Errors_Detected := Total_Errors_Detected - 1; + end if; + return True; -- No removal required diff --git a/gcc/ada/erroutc.adb b/gcc/ada/erroutc.adb index 7766c972730..d40c668be8a 100644 --- a/gcc/ada/erroutc.adb +++ b/gcc/ada/erroutc.adb @@ -312,32 +312,33 @@ package body Erroutc is begin w ("Dumping error message, Id = ", Int (Id)); - w (" Text = ", E.Text.all); - w (" Next = ", Int (E.Next)); - w (" Prev = ", Int (E.Prev)); - w (" Sfile = ", Int (E.Sfile)); + w (" Text = ", E.Text.all); + w (" Next = ", Int (E.Next)); + w (" Prev = ", Int (E.Prev)); + w (" Sfile = ", Int (E.Sfile)); Write_Str - (" Sptr = "); + (" Sptr = "); Write_Location (E.Sptr.Ptr); -- ??? Do not write the full span for now Write_Eol; Write_Str - (" Optr = "); + (" Optr = "); Write_Location (E.Optr.Ptr); Write_Eol; - w (" Line = ", Int (E.Line)); - w (" Col = ", Int (E.Col)); - w (" Warn = ", E.Warn); - w (" Warn_Err = ", E.Warn_Err); - w (" Warn_Chr = '" & E.Warn_Chr & '''); - w (" Style = ", E.Style); - w (" Serious = ", E.Serious); - w (" Uncond = ", E.Uncond); - w (" Msg_Cont = ", E.Msg_Cont); - w (" Deleted = ", E.Deleted); - w (" Node = ", Int (E.Node)); + w (" Line = ", Int (E.Line)); + w (" Col = ", Int (E.Col)); + w (" Warn = ", E.Warn); + w (" Warn_Err = ", E.Warn_Err); + w (" Warn_Runtime_Raise = ", E.Warn_Runtime_Raise); + w (" Warn_Chr = '" & E.Warn_Chr & '''); + w (" Style = ", E.Style); + w (" Serious = ", E.Serious); + w (" Uncond = ", E.Uncond); + w (" Msg_Cont = ", E.Msg_Cont); + w (" Deleted = ", E.Deleted); + w (" Node = ", Int (E.Node)); Write_Eol; end dmsg;