This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

optimization/6864: Optimizer infinite loop/memory runaway (on gdb sources)



>Number:         6864
>Category:       optimization
>Synopsis:       Optimizer infinite loop/memory runaway (on gdb sources)
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed May 29 16:56:02 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     donnte@microsoft.com
>Release:        3.2 20020528 (experimental)
>Organization:
>Environment:
Interix.
>Description:
Goto in switch (presumably) confuses live register calculation.

Attached sample code, with marked goto (the only goto) turned on drives the compiler into an infinite loop (eating memory) at about 1145 in flow.c.  (See "while (qhead != qtail)".) Removing the goto causes the compiler to terminate normally (but of course the code is incorrect.)  The problem appeared between 5/10 and 5/28.

Sample code is somewhat stripped down from the original gdb source, removing irrelevant functions.  Both the code before the switch and (obviously) the switch body are needed to repro.  (This is all post-preprocessor, but a .c file for easy use of comments and #if for minimization.)
>How-To-Repeat:
Compile attached file, command line:
/dev/fs/C/home/donn.intel/gnu2.intel/local_bin/gcc -B/dev/fs/C/home/donn.intel/gnu2.intel/local_bin/ -c -g -O2  -D_ALL_SOURCE    -implicit -Wreturn-type -Wcomment -Wtrigraphs -Wformat -Wparentheses -Wpointer-arith -Wuninitialized  test.c -v --save-temps
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]