http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59039
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- I suppose // alloca() to force generation of frame pointer. The argument to alloca // is contrived to prevent the compiler from optimizing it away. This // code should never actually be executed. int* dummy = (int*) alloca((sizeof(int) + (std::size_t) m_start_proc) & 0x1); *dummy = 0xface; is optimized away. Try using volatile int *.