Bug 15100

Summary: [3.4 Regression] cc1plus got hang-up on libstdc++-v3/testsuite/abi_check.cc
Product: gcc Reporter: Kazumoto Kojima <kkojima>
Component: rtl-optimizationAssignee: Kazumoto Kojima <kkojima>
Status: RESOLVED FIXED    
Severity: normal CC: gcc-bugs
Priority: P2 Keywords: build, compile-time-hog, ice-on-valid-code, patch
Version: 3.4.0   
Target Milestone: 3.4.1   
Host: sh4-unknown-linux-gnu Target: sh4-unknown-linux-gnu
Build: sh4-unknown-linux-gnu Known to work: 4.0.0
Known to fail: 3.4.0 Last reconfirmed: 2004-04-30 09:17:03
Attachments: an input file causing the problem

Description Kazumoto Kojima 2004-04-23 14:03:50 UTC
3.4.0 fails to bootstrap on sh4-unknown-linux-gnu because of
the hang-up when compiling libstdc++-v3/testsuite/abi_check.cc.
It seems that the i686-linux x sh4-unknown-linux-gnu behaves
same as the native compiler and with -fno-unit-at-a-time both
native and cross cc1plus compiles abi_check.cc normally.

FYI, when it looks halting, cross cc1plus takes almost cpu time:

  PID USER     PRI  NI  SIZE  RSS SHARE STAT %CPU %MEM   TIME COMMAND
 5565 kkojima   17   0 54656  53M  3376 R    99.5 21.3  45:02 cc1plus

and gdb attatched to it says

#0  0x080e1b18 in bitmap_set_bit (head=0x86acfa0, bit=394)
    at ../../LOCAL/gcc-3.4/gcc/bitmap.c:310
#1  0x0815f13e in mark_set_1 (pbi=0x848e8d8, code=SET, reg=0x417e9ff0, 
    cond=0x0, insn=0x411caf78, flags=16) at ../../LOCAL/gcc-3.4/gcc/flow.c:2673
#2  0x0815eaae in mark_set_regs (pbi=0x848e8d8, x=0x42245024, insn=0x411caf78)
    at ../../LOCAL/gcc-3.4/gcc/flow.c:2468
#3  0x0815db01 in propagate_one_insn (pbi=0x848e8d8, insn=0x411caf78)
    at ../../LOCAL/gcc-3.4/gcc/flow.c:1667
#4  0x0815e21b in propagate_block (bb=0x851fec8, live=0xbfffef9c, 
    local_set=0x84f54f8, cond_local_set=0x84f5508, flags=16)
    at ../../LOCAL/gcc-3.4/gcc/flow.c:2036
#5  0x0815d146 in calculate_global_regs_live (blocks_in=0x86acf20, 
    blocks_out=0x86acf20, flags=16) at ../../LOCAL/gcc-3.4/gcc/flow.c:1275
#6  0x0815c1d7 in update_life_info (blocks=0x86acf20, 
    extent=UPDATE_LIFE_GLOBAL_RM_NOTES, prop_flags=25)
    at ../../LOCAL/gcc-3.4/gcc/flow.c:624
#7  0x0815c690 in update_life_info_in_dirty_blocks (
    extent=UPDATE_LIFE_GLOBAL_RM_NOTES, prop_flags=25)
    at ../../LOCAL/gcc-3.4/gcc/flow.c:776
#8  0x0829ffaf in combine_instructions (f=0x40bd00a0, nregs=397)
    at ../../LOCAL/gcc-3.4/gcc/combine.c:742
#9  0x0825dd2d in rest_of_handle_combine (decl=0x41747244, insns=0x40bd00a0)
Comment 1 Andrew Pinski 2004-04-23 15:14:56 UTC
This looks like an optimization problem.
Comment 2 Kazumoto Kojima 2004-04-30 05:00:21 UTC
There is a patch for comment with some analysis:
  http://gcc.gnu.org/ml/gcc-patches/2004-04/msg01893.html
Comment 3 Giovanni Bajo 2004-04-30 09:17:01 UTC
Thank you for the patch. Please, in future assign the bug to you when you have 
a patch.
Comment 4 Giovanni Bajo 2004-04-30 09:17:55 UTC
Do you know if the bug is present also on the 3.3 branch or on mainline?
Comment 5 Kazumoto Kojima 2004-04-30 10:58:45 UTC
The mainline (20040425 x86-linux cross to sh4-linux) also hangs on .i file
got from 3.4.0 abi_check.cc.  Unfortunately, same .i file can't be compiled
on 3.3-branch for another reasons like new __attribute__ expression and I
don't have any appropriate testcase for this PR against 3.3-branch ATM.
Comment 6 Giovanni Bajo 2004-04-30 12:41:09 UTC
Can you attacch the precompiled file to this report for completeness? Maybe 
someone will have time to reduce this, making it possible to test it on 3.3.
Comment 7 Kazumoto Kojima 2004-04-30 13:41:13 UTC
Created attachment 6197 [details]
an input file causing the problem
Comment 8 Kazumoto Kojima 2004-04-30 13:42:47 UTC
I've attached a problematic .i file.
Comment 9 GCC Commits 2004-05-12 04:32:11 UTC
Subject: Bug 15100

CVSROOT:	/cvs/gcc
Module name:	gcc
Changes by:	kkojima@gcc.gnu.org	2004-05-12 04:32:02

Modified files:
	gcc            : ChangeLog combine.c 

Log message:
	PR optimization/15100
	* combine.c (distribute_notes): Don't create a dangling
	REG_LIBCALL/REG_RETVAL note.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&r1=2.3628&r2=2.3629
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/combine.c.diff?cvsroot=gcc&r1=1.424&r2=1.425

Comment 10 GCC Commits 2004-05-18 10:51:44 UTC
Subject: Bug 15100

CVSROOT:	/cvs/gcc
Module name:	gcc
Branch: 	gcc-3_4-branch
Changes by:	kkojima@gcc.gnu.org	2004-05-18 10:51:39

Modified files:
	gcc            : ChangeLog combine.c 

Log message:
	PR optimization/15100
	Backport from mainline:
	
	2004-05-11  Kaz Kojima  <kkojima@gcc.gnu.org>
	* combine.c (distribute_notes): Don't create a dangling
	REG_LIBCALL/REG_RETVAL note.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=2.2326.2.443&r2=2.2326.2.444
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/combine.c.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.400.4.7&r2=1.400.4.8

Comment 11 Kazumoto Kojima 2004-05-18 10:53:27 UTC
Fixed on 3.4/mainline.