public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
* [Bug c/105585] New: [12/13 Regression] Spurious stringop-overflow warning with <atomic> @ 2022-05-12 16:58 ed at catmur dot uk 2022-05-12 16:59 ` [Bug c/105585] " ed at catmur dot uk ` (4 more replies) 0 siblings, 5 replies; 6+ messages in thread From: ed at catmur dot uk @ 2022-05-12 16:58 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105585 Bug ID: 105585 Summary: [12/13 Regression] Spurious stringop-overflow warning with <atomic> Product: gcc Version: 12.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: ed at catmur dot uk Target Milestone: --- Reduced (from code in abseil-cpp): #include <atomic> struct S { int i; std::atomic<int> a; }; S* q(); void f(); void g(bool b) { auto p = b ? q() : nullptr; ++p->a; if (p) f(); } In file included from atomic:41, from <source>:1: In member function 'std::__atomic_base<_IntTp>::__int_type std::__atomic_base<_IntTp>::operator++() [with _ITp = int]', inlined from 'void g(bool)' at <source>:10:3: bits/atomic_base.h:385:34: warning: 'unsigned int __atomic_add_fetch_4(volatile void*, unsigned int, int)' writing 4 bytes into a region of size 0 overflows the destination [-Wstringop-overflow=] 385 | { return __atomic_add_fetch(&_M_i, 1, int(memory_order_seq_cst)); } | ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug c/105585] [12/13 Regression] Spurious stringop-overflow warning with <atomic> 2022-05-12 16:58 [Bug c/105585] New: [12/13 Regression] Spurious stringop-overflow warning with <atomic> ed at catmur dot uk @ 2022-05-12 16:59 ` ed at catmur dot uk 2022-05-12 17:50 ` ed at catmur dot uk ` (3 subsequent siblings) 4 siblings, 0 replies; 6+ messages in thread From: ed at catmur dot uk @ 2022-05-12 16:59 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105585 --- Comment #1 from Ed Catmur <ed at catmur dot uk> --- Flags: -O1 -Wstringop-overflow=1 https://godbolt.org/z/8r8roz7Pa ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug c/105585] [12/13 Regression] Spurious stringop-overflow warning with <atomic> 2022-05-12 16:58 [Bug c/105585] New: [12/13 Regression] Spurious stringop-overflow warning with <atomic> ed at catmur dot uk 2022-05-12 16:59 ` [Bug c/105585] " ed at catmur dot uk @ 2022-05-12 17:50 ` ed at catmur dot uk 2022-05-13 7:55 ` [Bug tree-optimization/105585] " rguenth at gcc dot gnu.org ` (2 subsequent siblings) 4 siblings, 0 replies; 6+ messages in thread From: ed at catmur dot uk @ 2022-05-12 17:50 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105585 --- Comment #2 from Ed Catmur <ed at catmur dot uk> --- Affected code: https://github.com/abseil/abseil-cpp/issues/1175 The proposed patch to abseil-cpp corresponds to adding an assumption that `b` is true above. ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug tree-optimization/105585] [12/13 Regression] Spurious stringop-overflow warning with <atomic> 2022-05-12 16:58 [Bug c/105585] New: [12/13 Regression] Spurious stringop-overflow warning with <atomic> ed at catmur dot uk 2022-05-12 16:59 ` [Bug c/105585] " ed at catmur dot uk 2022-05-12 17:50 ` ed at catmur dot uk @ 2022-05-13 7:55 ` rguenth at gcc dot gnu.org 2022-05-13 12:02 ` [Bug tree-optimization/105585] [12/13 Regression] Spurious stringop-overflow warning with <atomic> since r12-4725-g88b504b7a8c5affb marxin at gcc dot gnu.org 2022-05-17 14:15 ` msebor at gcc dot gnu.org 4 siblings, 0 replies; 6+ messages in thread From: rguenth at gcc dot gnu.org @ 2022-05-13 7:55 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105585 Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|--- |12.2 Keywords| |diagnostic Component|c |tree-optimization ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug tree-optimization/105585] [12/13 Regression] Spurious stringop-overflow warning with <atomic> since r12-4725-g88b504b7a8c5affb 2022-05-12 16:58 [Bug c/105585] New: [12/13 Regression] Spurious stringop-overflow warning with <atomic> ed at catmur dot uk ` (2 preceding siblings ...) 2022-05-13 7:55 ` [Bug tree-optimization/105585] " rguenth at gcc dot gnu.org @ 2022-05-13 12:02 ` marxin at gcc dot gnu.org 2022-05-17 14:15 ` msebor at gcc dot gnu.org 4 siblings, 0 replies; 6+ messages in thread From: marxin at gcc dot gnu.org @ 2022-05-13 12:02 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105585 Martin Liška <marxin at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|[12/13 Regression] Spurious |[12/13 Regression] Spurious |stringop-overflow warning |stringop-overflow warning |with <atomic> |with <atomic> since | |r12-4725-g88b504b7a8c5affb Status|UNCONFIRMED |NEW Last reconfirmed| |2022-05-13 CC| |marxin at gcc dot gnu.org, | |msebor at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #3 from Martin Liška <marxin at gcc dot gnu.org> --- Started with r12-4725-g88b504b7a8c5affb. ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug tree-optimization/105585] [12/13 Regression] Spurious stringop-overflow warning with <atomic> since r12-4725-g88b504b7a8c5affb 2022-05-12 16:58 [Bug c/105585] New: [12/13 Regression] Spurious stringop-overflow warning with <atomic> ed at catmur dot uk ` (3 preceding siblings ...) 2022-05-13 12:02 ` [Bug tree-optimization/105585] [12/13 Regression] Spurious stringop-overflow warning with <atomic> since r12-4725-g88b504b7a8c5affb marxin at gcc dot gnu.org @ 2022-05-17 14:15 ` msebor at gcc dot gnu.org 4 siblings, 0 replies; 6+ messages in thread From: msebor at gcc dot gnu.org @ 2022-05-17 14:15 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105585 Martin Sebor <msebor at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |INVALID Status|NEW |RESOLVED --- Comment #4 from Martin Sebor <msebor at gcc dot gnu.org> --- The warning is caused by the if statement: if p is null, accessing the p->a member is undefined. It triggers because the GCC optimizer splits the code into two branches: one with a nonnull p and another with a null p. The second one triggers the warning. If p can be null then moving the increment to the body of the if statement avoids the undefined behavior (and the warning). If p cannot be null then making the if statement unconditional also avoids the warning. ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2022-05-17 14:15 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2022-05-12 16:58 [Bug c/105585] New: [12/13 Regression] Spurious stringop-overflow warning with <atomic> ed at catmur dot uk 2022-05-12 16:59 ` [Bug c/105585] " ed at catmur dot uk 2022-05-12 17:50 ` ed at catmur dot uk 2022-05-13 7:55 ` [Bug tree-optimization/105585] " rguenth at gcc dot gnu.org 2022-05-13 12:02 ` [Bug tree-optimization/105585] [12/13 Regression] Spurious stringop-overflow warning with <atomic> since r12-4725-g88b504b7a8c5affb marxin at gcc dot gnu.org 2022-05-17 14:15 ` msebor 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).