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).