https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90435
Bug ID: 90435 Summary: gcc generate infinite loop code when using -O2 or -O3 Product: gcc Version: 8.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: pangqingyuan1991 at 163 dot com Target Milestone: --- Created attachment 46342 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=46342&action=edit source code I am writing a simple memory allocator now. When I compile it with -O0 or -O1, it works as expected. But when I use -O2 or -O3. The example code seems run into dead loop and never finish. Also try gcc-6.5.0 gcc-7.4.0 gcc-9.1.0 . Since that all gcc versions have such problem. But clang-6 and clang-8 work well as expected. Compiling: gcc pmalloc.c -O2 -o ppp -ldl Running: PMALLOC_SIZE=128M ./ppp