aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPiotr Trojanek <trojanek@adacore.com>2022-11-07 15:17:40 +0100
committerMarc Poulhiès <poulhies@adacore.com>2022-11-22 13:34:51 +0100
commit29b7e00589f1c1c00029928ac1b7ba8ff53288f5 (patch)
tree4cd3d32c2f0036a9665908336675f3ca0c4cad47
parent3b5f3138dceeac609b4c5fe33009302d13592400 (diff)
downloadgcc-29b7e00589f1c1c00029928ac1b7ba8ff53288f5.zip
gcc-29b7e00589f1c1c00029928ac1b7ba8ff53288f5.tar.gz
gcc-29b7e00589f1c1c00029928ac1b7ba8ff53288f5.tar.bz2
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.
-rw-r--r--gcc/ada/errout.adb11
-rw-r--r--gcc/ada/erroutc.adb35
2 files changed, 29 insertions, 17 deletions
diff --git a/gcc/ada/errout.adb b/gcc/ada/errout.adb
index afa3067..b30e8b5 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 7766c97..d40c668 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;