http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48600
Summary: [4.6 regression] ICE when using cold attribute Product: gcc Version: 4.6.0 Status: UNCONFIRMED Severity: major Priority: P3 Component: middle-end AssignedTo: unassig...@gcc.gnu.org ReportedBy: m...@use.net Compiling the attached file at -O1 or above yields a stack overflow: g++ -O1 ci.cpp g++: internal compiler error: Segmentation fault (program cc1plus) valgrind says: ==7379== Stack overflow in thread 1: can't grow stack to 0x7fe801ff8 ==7379== Can't extend stack to 0x7fe801410 during signal delivery for thread 1: ==7379== no stack segment ==7379== ==7379== Process terminating with default action of signal 11 (SIGSEGV) ==7379== Access not within mapped region at address 0x7FE801410 ==7379== at 0x89E8D5: ??? (in /usr/lib/gcc-snapshot/libexec/gcc/x86_64-linux-gnu/4.6.0/cc1plus) ==7379== If you believe this happened as a result of a stack ==7379== overflow in your program's main thread (unlikely but ==7379== possible), you can try to increase the size of the ==7379== main thread stack using the --main-stacksize= flag. ==7379== The main thread stack size used in this run was 8388608. ==7379== Stack overflow in thread 1: can't grow stack to 0x7fe801f70 If you remove the cold attribute from Arch::Debugger_entry(), the ICE (and explosive memory consumption) goes away. Tested with 4.6.0 RC, final, and another 4.6 variant. They all have the same problem. Testing with 4.5.2 and 4.4.4 shows no such problem.