[Bug c/85546] New: GCC assumes volatile asm block returns same value in loop

be11f157cd19c4a2ba1e9c70a38b1a74 at protonmail dot com gcc-bugzilla@gcc.gnu.org
Thu Apr 26 23:04:00 GMT 2018


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

            Bug ID: 85546
           Summary: GCC assumes volatile asm block returns same value in
                    loop
           Product: gcc
           Version: 7.3.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: be11f157cd19c4a2ba1e9c70a38b1a74 at protonmail dot com
  Target Milestone: ---

Created attachment 44027
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=44027&action=edit
Code that triggers the bug

This code works correctly when compiled with no optimizations. When
optimizations are enabled the while loop in the input() function becomes an
infinite loop. GCC seems to be assuming that the return value of io() cannot
change between iterations of the loop despite the asm block within io() being
declared "volatile".

The program is tested with this input file:

1
1


More information about the Gcc-bugs mailing list