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

            Bug ID: 96672
           Summary: Missing -Wclobbered diagnostic, or:
                    __attribute__((returns_twice)) does not inhibit
                    constant folding across call site
           Product: gcc
           Version: 10.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: felix.von.s at posteo dot de
  Target Milestone: ---

Created attachment 49072
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=49072&action=edit
Sample program

The attached sample, compiled with -O3 -DVOLATILE= outputs 5; without either
flag it outputs 6.

I expected at least one of the following:

- that the compiler warn about the clobbered x variable at the return
statement;
- that the program output 6 whether or not x is declared volatile.

Currently neither is the case; compiling with -Wall -Wextra -Wclobbered emits
no warnings. While the standard mandates that the variable be declared
volatile, GCC seems to make some effort to preserve the expected semantics even
when this requirement is not met; this would seem like a missed case.

Reply via email to