public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c/110368] New: Incorrect "is used uninitialized" warning message
@ 2023-06-22 17:27 clugstj at gmail dot com
  2023-06-22 17:29 ` [Bug c/110368] " clugstj at gmail dot com
                   ` (7 more replies)
  0 siblings, 8 replies; 9+ messages in thread
From: clugstj at gmail dot com @ 2023-06-22 17:27 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110368

            Bug ID: 110368
           Summary: Incorrect "is used uninitialized" warning message
           Product: gcc
           Version: 13.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: clugstj at gmail dot com
  Target Milestone: ---

Created attachment 55384
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=55384&action=edit
Code that causes warning

The attached code, when compiled with:

>gcc -O2 -Wall -Wextra -c uninit.c

results in the following error messages:

uninit.c: In function 'cksum':
uninit.c:20:13: warning: 'l' is used uninitialized [-Wuninitialized]
   20 |    unsigned l = len;
      |             ^
uninit.c:21:13: warning: 'n' is used uninitialized [-Wuninitialized]
   21 |    unsigned n = protocol;
      |             ^

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug c/110368] Incorrect "is used uninitialized" warning message
  2023-06-22 17:27 [Bug c/110368] New: Incorrect "is used uninitialized" warning message clugstj at gmail dot com
@ 2023-06-22 17:29 ` clugstj at gmail dot com
  2023-06-22 17:31 ` pinskia at gcc dot gnu.org
                   ` (6 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: clugstj at gmail dot com @ 2023-06-22 17:29 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110368

--- Comment #1 from Jon Clugston <clugstj at gmail dot com> ---
Created attachment 55385
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=55385&action=edit
gcc -v

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug c/110368] Incorrect "is used uninitialized" warning message
  2023-06-22 17:27 [Bug c/110368] New: Incorrect "is used uninitialized" warning message clugstj at gmail dot com
  2023-06-22 17:29 ` [Bug c/110368] " clugstj at gmail dot com
@ 2023-06-22 17:31 ` pinskia at gcc dot gnu.org
  2023-06-22 17:32 ` pinskia at gcc dot gnu.org
                   ` (5 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: pinskia at gcc dot gnu.org @ 2023-06-22 17:31 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110368

--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
The warning is due to the code having undefined behavior in it. The code stores
in a variable as int but reads part of it via short type. That is an aliasing
violation.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug c/110368] Incorrect "is used uninitialized" warning message
  2023-06-22 17:27 [Bug c/110368] New: Incorrect "is used uninitialized" warning message clugstj at gmail dot com
  2023-06-22 17:29 ` [Bug c/110368] " clugstj at gmail dot com
  2023-06-22 17:31 ` pinskia at gcc dot gnu.org
@ 2023-06-22 17:32 ` pinskia at gcc dot gnu.org
  2023-06-22 17:35 ` pinskia at gcc dot gnu.org
                   ` (4 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: pinskia at gcc dot gnu.org @ 2023-06-22 17:32 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110368

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |INVALID
             Status|UNCONFIRMED                 |RESOLVED

--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
As explained undefined code.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug c/110368] Incorrect "is used uninitialized" warning message
  2023-06-22 17:27 [Bug c/110368] New: Incorrect "is used uninitialized" warning message clugstj at gmail dot com
                   ` (2 preceding siblings ...)
  2023-06-22 17:32 ` pinskia at gcc dot gnu.org
@ 2023-06-22 17:35 ` pinskia at gcc dot gnu.org
  2023-06-22 17:37 ` pinskia at gcc dot gnu.org
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: pinskia at gcc dot gnu.org @ 2023-06-22 17:35 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110368

--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
The code can fixed using memcpy
Replace:
c   += *data_16++

With:
unsigned tmp;
memcpy(&tmp, data_16, sizeof(tmp));
data_16++;
c += tmp;

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug c/110368] Incorrect "is used uninitialized" warning message
  2023-06-22 17:27 [Bug c/110368] New: Incorrect "is used uninitialized" warning message clugstj at gmail dot com
                   ` (3 preceding siblings ...)
  2023-06-22 17:35 ` pinskia at gcc dot gnu.org
@ 2023-06-22 17:37 ` pinskia at gcc dot gnu.org
  2023-10-05 16:19 ` clugstj at gmail dot com
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: pinskia at gcc dot gnu.org @ 2023-06-22 17:37 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110368

--- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Andrew Pinski from comment #4)
> The code can fixed using memcpy
> Replace:
> c   += *data_16++
> 
> With:
> unsigned tmp;
> memcpy(&tmp, data_16, sizeof(tmp));
> data_16++;
> c += tmp;

Small typo, the type of tmp should have been `unsigned short`.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug c/110368] Incorrect "is used uninitialized" warning message
  2023-06-22 17:27 [Bug c/110368] New: Incorrect "is used uninitialized" warning message clugstj at gmail dot com
                   ` (4 preceding siblings ...)
  2023-06-22 17:37 ` pinskia at gcc dot gnu.org
@ 2023-10-05 16:19 ` clugstj at gmail dot com
  2023-10-06 15:51 ` sjames at gcc dot gnu.org
  2023-10-07  6:36 ` xry111 at gcc dot gnu.org
  7 siblings, 0 replies; 9+ messages in thread
From: clugstj at gmail dot com @ 2023-10-05 16:19 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110368

--- Comment #6 from Jon Clugston <clugstj at gmail dot com> ---
So, "undefined behavior" gives the compiler license to output any warning it
wants?

The warning message is utterly wrong and completely misleading.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug c/110368] Incorrect "is used uninitialized" warning message
  2023-06-22 17:27 [Bug c/110368] New: Incorrect "is used uninitialized" warning message clugstj at gmail dot com
                   ` (5 preceding siblings ...)
  2023-10-05 16:19 ` clugstj at gmail dot com
@ 2023-10-06 15:51 ` sjames at gcc dot gnu.org
  2023-10-07  6:36 ` xry111 at gcc dot gnu.org
  7 siblings, 0 replies; 9+ messages in thread
From: sjames at gcc dot gnu.org @ 2023-10-06 15:51 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110368

--- Comment #7 from Sam James <sjames at gcc dot gnu.org> ---
That said, I suppose we should do better here with -Wstrict-aliasing. No level
detects it.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug c/110368] Incorrect "is used uninitialized" warning message
  2023-06-22 17:27 [Bug c/110368] New: Incorrect "is used uninitialized" warning message clugstj at gmail dot com
                   ` (6 preceding siblings ...)
  2023-10-06 15:51 ` sjames at gcc dot gnu.org
@ 2023-10-07  6:36 ` xry111 at gcc dot gnu.org
  7 siblings, 0 replies; 9+ messages in thread
From: xry111 at gcc dot gnu.org @ 2023-10-07  6:36 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110368

Xi Ruoyao <xry111 at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |xry111 at gcc dot gnu.org

--- Comment #8 from Xi Ruoyao <xry111 at gcc dot gnu.org> ---
(In reply to Sam James from comment #7)
> That said, I suppose we should do better here with -Wstrict-aliasing. No
> level detects it.

I think it's very difficult to make -Wstrict-aliasing really useful.  A
sanitizer at runtime would be much more useful but the develop of such a
sanitizer seems stalled
(https://discourse.llvm.org/t/reviving-typesanitizer-a-sanitizer-to-catch-type-based-aliasing-violations/).

For now we can only compare the output with or without -fno-strict-aliasing. 
And we are already saying "try -fno-strict-aliasing" in the bug report
guidance.

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2023-10-07  6:36 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-06-22 17:27 [Bug c/110368] New: Incorrect "is used uninitialized" warning message clugstj at gmail dot com
2023-06-22 17:29 ` [Bug c/110368] " clugstj at gmail dot com
2023-06-22 17:31 ` pinskia at gcc dot gnu.org
2023-06-22 17:32 ` pinskia at gcc dot gnu.org
2023-06-22 17:35 ` pinskia at gcc dot gnu.org
2023-06-22 17:37 ` pinskia at gcc dot gnu.org
2023-10-05 16:19 ` clugstj at gmail dot com
2023-10-06 15:51 ` sjames at gcc dot gnu.org
2023-10-07  6:36 ` xry111 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).