mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-04 03:30:28 +08:00
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.
This commit is contained in:
parent
3b5f3138dc
commit
29b7e00589
@ -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
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user