public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c/109673] New: warn_unused_result warnings are incorrect (and/or missing) and vary when -Os is specified
@ 2023-04-28 22:17 parke.nexus at gmail dot com
2023-04-28 22:42 ` [Bug c/109673] " pinskia at gcc dot gnu.org
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: parke.nexus at gmail dot com @ 2023-04-28 22:17 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109673
Bug ID: 109673
Summary: warn_unused_result warnings are incorrect (and/or
missing) and vary when -Os is specified
Product: gcc
Version: 12.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: parke.nexus at gmail dot com
Target Milestone: ---
When I compile the below sample program without -Os, I expect one warning but
receive zero warnings.
When I compile the below sample program with -Os, I expect one warning but
receive two warnings.
#include <unistd.h>
char s[80];
int main () {
; getcwd ( s, sizeof s ); // I expect a warning.
(void) getcwd ( s, sizeof s ); // I expect no warning.
return 0; }
Compilation output:
$ gcc -o /tmp/getcwd test.c
[Compilation succeeds without any output.]
$ gcc -Wall -Wextra -o /tmp/getcwd test.c
[Compilation succeeds without any output.]
$ gcc -Wunused-result -o /tmp/getcwd test.c
[Compilation succeeds without any output.]
$ gcc -Os -o /tmp/getcwd test.c
test.c: In function ‘main’:
test.c:4:11: warning: ignoring return value of ‘getcwd’ declared with attribute
‘warn_unused_result’ [-Wunused-result]
4 | ; getcwd ( s, sizeof s ); // I expect a warning.
| ^~~~~~~~~~~~~~~~~~~~~~
test.c:5:11: warning: ignoring return value of ‘getcwd’ declared with attribute
‘warn_unused_result’ [-Wunused-result]
5 | (void) getcwd ( s, sizeof s ); // I expect no warning.
| ^~~~~~~~~~~~~~~~~~~~~~
Possibly related:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=39808
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94389
Tested on Ubuntu 23.04 with gcc 12.2.0. I believe Ubuntu 22.04 with gcc 11.3.0
behaves identically.
$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/12/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu
12.2.0-17ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-12/README.Bugs
--enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr
--with-gcc-major-version-only --program-suffix=-12
--program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id
--libexecdir=/usr/lib --without-included-gettext --enable-threads=posix
--libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug
--enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new
--enable-gnu-unique-object --disable-vtable-verify --enable-plugin
--enable-default-pie --with-system-zlib --enable-libphobos-checking=release
--with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch
--disable-werror --enable-cet --with-arch-32=i686 --with-abi=m64
--with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic
--enable-offload-targets=nvptx-none=/build/gcc-12-Pa930Z/gcc-12-12.2.0/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-12-Pa930Z/gcc-12-12.2.0/debian/tmp-gcn/usr
--enable-offload-defaulted --without-cuda-driver --enable-checking=release
--build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 12.2.0 (Ubuntu 12.2.0-17ubuntu1)
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug c/109673] warn_unused_result warnings are incorrect (and/or missing) and vary when -Os is specified
2023-04-28 22:17 [Bug c/109673] New: warn_unused_result warnings are incorrect (and/or missing) and vary when -Os is specified parke.nexus at gmail dot com
@ 2023-04-28 22:42 ` pinskia at gcc dot gnu.org
2023-04-28 22:56 ` parke.nexus at gmail dot com
2023-04-28 23:00 ` pinskia at gcc dot gnu.org
2 siblings, 0 replies; 4+ messages in thread
From: pinskia at gcc dot gnu.org @ 2023-04-28 22:42 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109673
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Resolution|--- |INVALID
Status|UNCONFIRMED |RESOLVED
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
So __wur is defined based on if there are optimizations turned on or not based
on if you also define _FORTIFY_SOURCE (ubuntu compilers default to defining
_FORTIFY_SOURCE).
So from a GCC point of view, this is not a GCC bug.
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug c/109673] warn_unused_result warnings are incorrect (and/or missing) and vary when -Os is specified
2023-04-28 22:17 [Bug c/109673] New: warn_unused_result warnings are incorrect (and/or missing) and vary when -Os is specified parke.nexus at gmail dot com
2023-04-28 22:42 ` [Bug c/109673] " pinskia at gcc dot gnu.org
@ 2023-04-28 22:56 ` parke.nexus at gmail dot com
2023-04-28 23:00 ` pinskia at gcc dot gnu.org
2 siblings, 0 replies; 4+ messages in thread
From: parke.nexus at gmail dot com @ 2023-04-28 22:56 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109673
--- Comment #2 from Parke <parke.nexus at gmail dot com> ---
Thank you for the explanation.
It seems to me that it would (should?) be possible for -Os to detect the
cast-to-void and therefore suppress the second warning (line 5).
It also seems to me the above change, if implemented, would be an improvement
from the user's point of view (i.e. from my point of view).
I compile my code with -Wall -Wextra and -Werror. Consequently, in order to
get my code to compile (on Ubuntu), I have to write the following:
void * discard = getcwd ( s, sizeof s );
(void) discard;
Instead of the more readable:
(void) getcwd ( s, sizeof s );
Your thoughts? Thanks!
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug c/109673] warn_unused_result warnings are incorrect (and/or missing) and vary when -Os is specified
2023-04-28 22:17 [Bug c/109673] New: warn_unused_result warnings are incorrect (and/or missing) and vary when -Os is specified parke.nexus at gmail dot com
2023-04-28 22:42 ` [Bug c/109673] " pinskia at gcc dot gnu.org
2023-04-28 22:56 ` parke.nexus at gmail dot com
@ 2023-04-28 23:00 ` pinskia at gcc dot gnu.org
2 siblings, 0 replies; 4+ messages in thread
From: pinskia at gcc dot gnu.org @ 2023-04-28 23:00 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109673
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Parke from comment #2)
>
> I compile my code with -Wall -Wextra and -Werror. Consequently, in order to
> get my code to compile (on Ubuntu), I have to write the following:
>
> void * discard = getcwd ( s, sizeof s );
> (void) discard;
>
> Instead of the more readable:
>
> (void) getcwd ( s, sizeof s );
>
> Your thoughts? Thanks!
That is PR 66425 but really you should not avoiding the return value here
because getcwd will return NULL on failure as defined by POSIX.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2023-04-28 23:00 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-04-28 22:17 [Bug c/109673] New: warn_unused_result warnings are incorrect (and/or missing) and vary when -Os is specified parke.nexus at gmail dot com
2023-04-28 22:42 ` [Bug c/109673] " pinskia at gcc dot gnu.org
2023-04-28 22:56 ` parke.nexus at gmail dot com
2023-04-28 23:00 ` pinskia at gcc dot gnu.org
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).