http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58245
--- Comment #1 from Rich Felker <bugdal at aerifal dot cx> --- One more thing: I would be happy with either of two solutions, either: (1) Checking the canary before calling a noreturn function, just like performing a check before a tail-call, or (2) Eliminating the dead-code-removal of the function epilogue at -O0, and for non-zero -O levels, adding an optimization to remove the canary loading from the prologue if no epilogue to check the canary is to be generated.