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.

Reply via email to