https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64294
--- Comment #2 from Sebastian Andrzej Siewior <gcc at breakpoint dot cc> --- It seems exit(0) is dropped with -O1 -ftree-vrp. (In reply to Andreas Schwab from comment #1) > This condition is true if backsize == 0: Ehm, yes. The Code is: -- printf("bufsz: %u backsize: %d\n", bufsz, backsize); if(!CLI_ISCONTAINED(buf, bufsz, ddst, backsize) || !CLI_ISCONTAINED(buf, bufsz, ddst+backbytes, back size)) { free(usects); return 1; } asm volatile("labele:"); -- So I would expect that it leaves the function but I see a segfault in the while loop later on and according the printf, backsize was 0.