diff options
author | squirek <squirek@adacore.com> | 2025-01-13 21:04:51 +0000 |
---|---|---|
committer | Marc Poulhiès <dkm@gcc.gnu.org> | 2025-06-05 10:18:39 +0200 |
commit | abc2efc4fba94bc4043031dc891d45ba9ad10919 (patch) | |
tree | 65988a6422a1d94206199a38b27250195286529e | |
parent | 35260dd303a1f5c911310f87e7ddc3f1b580abbd (diff) | |
download | gcc-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.adb | 8 |
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 #!", |