aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsquirek <squirek@adacore.com>2025-01-13 21:04:51 +0000
committerMarc Poulhiès <dkm@gcc.gnu.org>2025-06-05 10:18:39 +0200
commitabc2efc4fba94bc4043031dc891d45ba9ad10919 (patch)
tree65988a6422a1d94206199a38b27250195286529e
parent35260dd303a1f5c911310f87e7ddc3f1b580abbd (diff)
downloadgcc-abc2efc4fba94bc4043031dc891d45ba9ad10919.zip
gcc-abc2efc4fba94bc4043031dc891d45ba9ad10919.tar.gz
gcc-abc2efc4fba94bc4043031dc891d45ba9ad10919.tar.bz2
ada: Confusing "modified by call, but value overwritten" warning
The patch fixes an issue in the compiler whereby not referencing a local variable used in multiple procedure calls as an "out" actual in between calls would lead to a warning despite "-gnatw.o" not being present. Additionally, this meant that using pragma Unreferenced on such variables would not be able to silence such warnings. gcc/ada/ChangeLog: * sem_warn.adb (Warn_On_Useless_Assignment): Disable out value "overwritten" warning when we are not warning on unread out parameters (e.g. "-gnatw.o").
-rw-r--r--gcc/ada/sem_warn.adb8
1 files changed, 5 insertions, 3 deletions
diff --git a/gcc/ada/sem_warn.adb b/gcc/ada/sem_warn.adb
index 35ef616..1bc97a8 100644
--- a/gcc/ada/sem_warn.adb
+++ b/gcc/ada/sem_warn.adb
@@ -4670,9 +4670,11 @@ package body Sem_Warn is
if Nkind (Parent (LA)) in N_Procedure_Call_Statement
| N_Parameter_Association
then
- Error_Msg_NE
- ("?m?& modified by call, but value overwritten #!",
- LA, Ent);
+ if Warn_On_All_Unread_Out_Parameters then
+ Error_Msg_NE
+ ("?m?& modified by call, but value overwritten #!",
+ LA, Ent);
+ end if;
else
Error_Msg_NE -- CODEFIX
("?m?useless assignment to&, value overwritten #!",