public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c/37448]  New: gcc 4.3.1 cannot compile big function
@ 2008-09-09 18:35 grue at diku dot dk
  2008-09-10  8:02 ` [Bug middle-end/37448] " grue at diku dot dk
                   ` (41 more replies)
  0 siblings, 42 replies; 43+ messages in thread
From: grue at diku dot dk @ 2008-09-09 18:35 UTC (permalink / raw)
  To: gcc-bugs

After upgrading to gcc 4.3.1, I can no longer compile a function whose
source code is 0.7 Megabyte before preprocessing and 3.5 Megabyte after
preprocessing.

The function (named "testsuite") is just a long list of statements
essentially of form if(!condition){complain();exit();}

The behaviour is: CPU time goes to 100%, then RAM size grows to
1 Gigabyte, then swap space starts growing and CPU time goes to 10%.

On my previous gcc (4.2.something, I think), compilation went fine.

The problematic source can be found at http://logiweb.eu/grue/lgwam.c

The source only #includes standard headers.

The source is compiled thus:

gcc -ldl -o lgwam lgwam.c

To double check that optimization is off, I tried with -O0
which gave the same result as not using -O0.

I failed to find out how to fill in Host, Target, and Build
triplet. Sorry. Here comes the output from gcc -v:

---

grue@pc189-kgr:~> gcc -v
Using built-in specs.
Target: x86_64-suse-linux
Configured with: ../configure --prefix=/usr --with-local-prefix=/usr/local
--infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib64
--libexecdir=/usr/lib64
--enable-languages=c,c++,objc,fortran,obj-c++,java,ada
--enable-checking=release --with-gxx-include-dir=/usr/include/c++/4.3
--enable-ssp --disable-libssp --with-bugurl=http://bugs.opensuse.org/
--with-pkgversion='SUSE Linux' --disable-libgcj --with-slibdir=/lib64
--with-system-zlib --enable-__cxa_atexit --enable-libstdcxx-allocator=new
--disable-libstdcxx-pch --program-suffix=-4.3
--enable-version-specific-runtime-libs --enable-linux-futex
--without-system-libunwind --with-cpu=generic --build=x86_64-suse-linux
Thread model: posix
gcc version 4.3.1 20080507 (prerelease) [gcc-4_3-branch revision 135036]
(SUSE Linux)

---

Bradley Lucier (lucier aat math doot purdue doot edu) suggested
that this could resemble
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26854

He wrote thus at the gcc mailing list:

---

I compiled your file with a recent version of the current development
compiler

euler-27% /pkgs/gcc-mainline/bin/gcc -v
Using built-in specs.
Target: x86_64-unknown-linux-gnu
Configured with: ../../mainline/configure --enable-checking=release --
with-gmp=/pkgs/gmp-4.2.2/ --with-mpfr=/pkgs/gmp-4.2.2/ --prefix=/pkgs/
gcc-mainline --enable-languages=c --enable-gather-detailed-mem-stats
Thread model: posix
gcc version 4.4.0 20080827 (experimental) [trunk revision 139624] (GCC)

with

 /pkgs/gcc-mainline/bin/gcc -c lgwam.c -fmem-report -ftime-report

and got the following statistics.  If you file a bug report, then they may
prove helpful.

---

I have placed the mentioned statistics at
http://logiweb.eu/grue/lgwam.c.stats-O0


-- 
           Summary: gcc 4.3.1 cannot compile big function
           Product: gcc
           Version: 4.3.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: grue at diku dot dk
 GCC build triplet: See section on gcc -v in Description
  GCC host triplet: See section on gcc -v in Description
GCC target triplet: See section on gcc -v in Description


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37448


^ permalink raw reply	[flat|nested] 43+ messages in thread

* [Bug middle-end/37448] gcc 4.3.1 cannot compile big function
  2008-09-09 18:35 [Bug c/37448] New: gcc 4.3.1 cannot compile big function grue at diku dot dk
@ 2008-09-10  8:02 ` grue at diku dot dk
  2008-09-10  8:03 ` grue at diku dot dk
                   ` (40 subsequent siblings)
  41 siblings, 0 replies; 43+ messages in thread
From: grue at diku dot dk @ 2008-09-10  8:02 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #1 from grue at diku dot dk  2008-09-10 08:01 -------
Created an attachment (id=16281)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=16281&action=view)
The source mentioned in the bug description


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37448


^ permalink raw reply	[flat|nested] 43+ messages in thread

* [Bug middle-end/37448] gcc 4.3.1 cannot compile big function
  2008-09-09 18:35 [Bug c/37448] New: gcc 4.3.1 cannot compile big function grue at diku dot dk
  2008-09-10  8:02 ` [Bug middle-end/37448] " grue at diku dot dk
@ 2008-09-10  8:03 ` grue at diku dot dk
  2008-09-10  8:04 ` rguenth at gcc dot gnu dot org
                   ` (39 subsequent siblings)
  41 siblings, 0 replies; 43+ messages in thread
From: grue at diku dot dk @ 2008-09-10  8:03 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #2 from grue at diku dot dk  2008-09-10 08:01 -------
Created an attachment (id=16282)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=16282&action=view)
The statistics mentioned in the bug description


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37448


^ permalink raw reply	[flat|nested] 43+ messages in thread

* [Bug middle-end/37448] gcc 4.3.1 cannot compile big function
  2008-09-09 18:35 [Bug c/37448] New: gcc 4.3.1 cannot compile big function grue at diku dot dk
  2008-09-10  8:02 ` [Bug middle-end/37448] " grue at diku dot dk
  2008-09-10  8:03 ` grue at diku dot dk
@ 2008-09-10  8:04 ` rguenth at gcc dot gnu dot org
  2008-09-10  8:12 ` [Bug middle-end/37448] [4.3 Regression] " rguenth at gcc dot gnu dot org
                   ` (38 subsequent siblings)
  41 siblings, 0 replies; 43+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2008-09-10  8:04 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #3 from rguenth at gcc dot gnu dot org  2008-09-10 08:02 -------
It indeed uses about 1.4GB ram and takes 26s (I think that's reasonable) to
build the testcase.  It's the DF initialize pass that requires this much
memory.  The function in question has 31671 basic blocks.  dfinish doesn't
seem to free it btw.

(gdb) print *df
$56 = {problems_in_order = {0x1b25920, 0x1b259a0, 0x0, 0x0, 0x0, 0x0}, 
  problems_by_index = {0x1b25920, 0x1b259a0, 0x0, 0x0, 0x0, 0x0}, 
  num_problems_defined = 2, blocks_to_analyze = 0x0, analyze_subset = 0 '\0', 
  redo_entry_and_exit = 0 '\0', def_info = {refs = 0x0, begin = 0x19ee470, 
    count = 0x38e3e2e0, refs_size = 0, table_size = 0, total_size = 7482051, 
    ref_order = DF_REF_ORDER_NO_TABLE}, use_info = {refs = 0x0, 
    begin = 0x38ef7fe0, count = 0x38fb1ce0, refs_size = 0, table_size = 0, 
    total_size = 644313, ref_order = DF_REF_ORDER_NO_TABLE}, 
  def_regs = 0x2f766c50, use_regs = 0x38b56f20, eq_use_regs = 0x38cca900, 
  regs_size = 190267, regs_inited = 152214, insns = 0x1d48fb0, 
  insns_size = 792538, hardware_regs_used = 0x2ef1e640, 
  regular_block_artificial_uses = 0x2ef1e660, 
  eh_block_artificial_uses = 0x2ef1e680, entry_block_defs = 0x2ef1e6a0, 
  exit_block_uses = 0x2ef1e6c0, insns_to_delete = 0x2f928b40, 
  insns_to_rescan = 0x2f928b60, insns_to_notes_rescan = 0x2f928b80, 
  postorder = 0x30d2c60, postorder_inverted = 0x30f1b50, n_blocks = 31671, 
  n_blocks_inverted = 31671, hard_regs_live_count = 0x1940610, 
  ref_order = 39346414, changeable_flags = 0}

Kenny, any idea where the memory leaks?


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |zadeck at naturalbridge dot
                   |                            |com
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2008-09-10 08:02:43
               date|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37448


^ permalink raw reply	[flat|nested] 43+ messages in thread

* [Bug middle-end/37448] [4.3 Regression] gcc 4.3.1 cannot compile big function
  2008-09-09 18:35 [Bug c/37448] New: gcc 4.3.1 cannot compile big function grue at diku dot dk
                   ` (2 preceding siblings ...)
  2008-09-10  8:04 ` rguenth at gcc dot gnu dot org
@ 2008-09-10  8:12 ` rguenth at gcc dot gnu dot org
  2008-09-10  9:58 ` hubicka at gcc dot gnu dot org
                   ` (37 subsequent siblings)
  41 siblings, 0 replies; 43+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2008-09-10  8:12 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #4 from rguenth at gcc dot gnu dot org  2008-09-10 08:10 -------
On the trunk compile-time sky-rocketed there
in building the cgraph.  Honza, what's going on there - it doesn't seem to
even finish ;)


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |hubicka at gcc dot gnu dot
                   |                            |org
      Known to fail|                            |4.3.2
      Known to work|                            |4.2.4
            Summary|gcc 4.3.1 cannot compile big|[4.3 Regression] gcc 4.3.1
                   |function                    |cannot compile big function
   Target Milestone|---                         |4.3.3


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37448


^ permalink raw reply	[flat|nested] 43+ messages in thread

* [Bug middle-end/37448] [4.3 Regression] gcc 4.3.1 cannot compile big function
  2008-09-09 18:35 [Bug c/37448] New: gcc 4.3.1 cannot compile big function grue at diku dot dk
                   ` (3 preceding siblings ...)
  2008-09-10  8:12 ` [Bug middle-end/37448] [4.3 Regression] " rguenth at gcc dot gnu dot org
@ 2008-09-10  9:58 ` hubicka at gcc dot gnu dot org
  2008-09-10 10:04 ` hubicka at gcc dot gnu dot org
                   ` (36 subsequent siblings)
  41 siblings, 0 replies; 43+ messages in thread
From: hubicka at gcc dot gnu dot org @ 2008-09-10  9:58 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #5 from hubicka at gcc dot gnu dot org  2008-09-10 09:57 -------
With ENABLE_CHECKING we spend ages checking that there are no duplicated edges
in callgraph.  Will fix it shortly.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37448


^ permalink raw reply	[flat|nested] 43+ messages in thread

* [Bug middle-end/37448] [4.3 Regression] gcc 4.3.1 cannot compile big function
  2008-09-09 18:35 [Bug c/37448] New: gcc 4.3.1 cannot compile big function grue at diku dot dk
                   ` (4 preceding siblings ...)
  2008-09-10  9:58 ` hubicka at gcc dot gnu dot org
@ 2008-09-10 10:04 ` hubicka at gcc dot gnu dot org
  2008-09-10 11:33 ` hubicka at gcc dot gnu dot org
                   ` (35 subsequent siblings)
  41 siblings, 0 replies; 43+ messages in thread
From: hubicka at gcc dot gnu dot org @ 2008-09-10 10:04 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #6 from hubicka at gcc dot gnu dot org  2008-09-10 10:02 -------
Now we spend eons in walking lexical blocks, since add_lexical_block called by
inliner walks till end of the chain.
Is the order of blocks important at all?  (i.e. we don't insert them to proper
place anyway, just as last block, we can perhaps as well insert them as first?)

Honza


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37448


^ permalink raw reply	[flat|nested] 43+ messages in thread

* [Bug middle-end/37448] [4.3 Regression] gcc 4.3.1 cannot compile big function
  2008-09-09 18:35 [Bug c/37448] New: gcc 4.3.1 cannot compile big function grue at diku dot dk
                   ` (5 preceding siblings ...)
  2008-09-10 10:04 ` hubicka at gcc dot gnu dot org
@ 2008-09-10 11:33 ` hubicka at gcc dot gnu dot org
  2008-09-10 11:40 ` hubicka at gcc dot gnu dot org
                   ` (34 subsequent siblings)
  41 siblings, 0 replies; 43+ messages in thread
From: hubicka at gcc dot gnu dot org @ 2008-09-10 11:33 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #7 from hubicka at gcc dot gnu dot org  2008-09-10 11:32 -------
#0  0x000000000099c80d in ira_allocno_live_ranges_intersect_p (a1=0x33da8ae0,
a2=0x34395120) at ../../gcc/ira-conflicts.c:535
#1  0x000000000099ff0e in coalesced_allocno_conflict_p (a1=0x34e221b0,
a2=0x33da8ae0, reload_p=1 '\001') at ../../gcc/ira-color.c:1436
#2  0x00000000009a2904 in ira_sort_regnos_for_alter_reg
(pseudo_regnos=0x5eb441f0, n=<value optimized out>,
reg_max_ref_width=0x580ffb00)
    at ../../gcc/ira-color.c:2278
#3  0x00000000005e4f86 in reload (first=0x2aaaacf99680, global=1) at
../../gcc/reload1.c:907
#4  0x000000000099472c in rest_of_handle_ira () at ../../gcc/ira.c:1867
#5  0x000000000059c211 in execute_one_pass (pass=0xdf3020) at
../../gcc/passes.c:1279
#6  0x000000000059c445 in execute_pass_list (pass=0xdf3020) at
../../gcc/passes.c:1327
#7  0x000000000059c45d in execute_pass_list (pass=0xdee140) at
../../gcc/passes.c:1328
#8  0x000000000066bc07 in tree_rest_of_compilation (fndecl=0x2aaaab9ae200) at
../../gcc/tree-optimize.c:418


OK, one hour later (at -O2) we spent all the time in IRA/reload.
Vladimir, could you please take a look?

Honza


-- 

hubicka at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |vmakarov at redhat dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37448


^ permalink raw reply	[flat|nested] 43+ messages in thread

* [Bug middle-end/37448] [4.3 Regression] gcc 4.3.1 cannot compile big function
  2008-09-09 18:35 [Bug c/37448] New: gcc 4.3.1 cannot compile big function grue at diku dot dk
                   ` (6 preceding siblings ...)
  2008-09-10 11:33 ` hubicka at gcc dot gnu dot org
@ 2008-09-10 11:40 ` hubicka at gcc dot gnu dot org
  2008-09-10 21:17 ` vmakarov at redhat dot com
                   ` (33 subsequent siblings)
  41 siblings, 0 replies; 43+ messages in thread
From: hubicka at gcc dot gnu dot org @ 2008-09-10 11:40 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #8 from hubicka at gcc dot gnu dot org  2008-09-10 11:39 -------
And at -O0 we still need about 2GB (because of dataflow leaks?), otherwise we
seem fine compilation time wise
 garbage collection    :   0.92 ( 3%) usr   0.00 ( 0%) sys   0.93 ( 3%) wall   
   0 kB ( 0%) ggc
 callgraph construction:   0.48 ( 1%) usr   0.03 ( 2%) sys   0.53 ( 2%) wall  
22055 kB ( 4%) ggc
 callgraph optimization:   0.44 ( 1%) usr   0.02 ( 1%) sys   0.48 ( 1%) wall  
16397 kB ( 3%) ggc
 cfg cleanup           :   0.10 ( 0%) usr   0.00 ( 0%) sys   0.10 ( 0%) wall   
   3 kB ( 0%) ggc
 trivially dead code   :   0.42 ( 1%) usr   0.00 ( 0%) sys   0.44 ( 1%) wall   
   0 kB ( 0%) ggc
 df live regs          :   0.80 ( 2%) usr   0.01 ( 1%) sys   0.79 ( 2%) wall   
   0 kB ( 0%) ggc
 df reg dead/unused notes:   1.57 ( 5%) usr   0.01 ( 1%) sys   1.59 ( 5%) wall 
 16931 kB ( 3%) ggc
 register information  :   0.68 ( 2%) usr   0.00 ( 0%) sys   0.68 ( 2%) wall   
   0 kB ( 0%) ggc
 alias analysis        :   0.27 ( 1%) usr   0.00 ( 0%) sys   0.26 ( 1%) wall   
4290 kB ( 1%) ggc
 rebuild jump labels   :   0.36 ( 1%) usr   0.00 ( 0%) sys   0.37 ( 1%) wall   
   0 kB ( 0%) ggc
 preprocessing         :   0.32 ( 1%) usr   0.16 (10%) sys   0.41 ( 1%) wall  
25859 kB ( 5%) ggc
 lexical analysis      :   0.15 ( 0%) usr   0.33 (21%) sys   0.56 ( 2%) wall   
   0 kB ( 0%) ggc
 parser                :   0.48 ( 1%) usr   0.17 (11%) sys   0.64 ( 2%) wall  
52995 kB (10%) ggc
 inline heuristics     :   0.28 ( 1%) usr   0.00 ( 0%) sys   0.27 ( 1%) wall   
   0 kB ( 0%) ggc
 tree gimplify         :   0.89 ( 3%) usr   0.06 ( 4%) sys   0.96 ( 3%) wall 
125511 kB (25%) ggc
 tree eh               :   0.05 ( 0%) usr   0.00 ( 0%) sys   0.07 ( 0%) wall   
   0 kB ( 0%) ggc
 tree CFG construction :   0.18 ( 1%) usr   0.01 ( 1%) sys   0.18 ( 1%) wall  
12213 kB ( 2%) ggc
 tree CFG cleanup      :   0.16 ( 0%) usr   0.00 ( 0%) sys   0.12 ( 0%) wall   
   0 kB ( 0%) ggc
 tree find ref. vars   :   0.15 ( 0%) usr   0.01 ( 1%) sys   0.15 ( 0%) wall  
14419 kB ( 3%) ggc
 tree PHI insertion    :   0.04 ( 0%) usr   0.00 ( 0%) sys   0.04 ( 0%) wall   
 150 kB ( 0%) ggc
 tree SSA rewrite      :   0.08 ( 0%) usr   0.01 ( 1%) sys   0.10 ( 0%) wall  
18660 kB ( 4%) ggc
 tree SSA other        :   0.22 ( 1%) usr   0.06 ( 4%) sys   0.21 ( 1%) wall   
 512 kB ( 0%) ggc
 tree operand scan     :   0.10 ( 0%) usr   0.02 ( 1%) sys   0.17 ( 1%) wall   
9402 kB ( 2%) ggc
 tree SSA to normal    :   0.22 ( 1%) usr   0.00 ( 0%) sys   0.23 ( 1%) wall   
  14 kB ( 0%) ggc
 dominance frontiers   :   0.01 ( 0%) usr   0.00 ( 0%) sys   0.00 ( 0%) wall   
   0 kB ( 0%) ggc
 dominance computation :   0.19 ( 1%) usr   0.01 ( 1%) sys   0.17 ( 1%) wall   
   0 kB ( 0%) ggc
 expand                :   5.47 (17%) usr   0.40 (26%) sys   5.82 (17%) wall 
171648 kB (34%) ggc
 jump                  :   0.01 ( 0%) usr   0.00 ( 0%) sys   0.02 ( 0%) wall   
   0 kB ( 0%) ggc
 integrated RA         :   5.63 (17%) usr   0.10 ( 6%) sys   5.82 (17%) wall   
5190 kB ( 1%) ggc
 reload                :   9.42 (29%) usr   0.13 ( 8%) sys   9.55 (28%) wall   
8842 kB ( 2%) ggc
 thread pro- & epilogue:   1.01 ( 3%) usr   0.00 ( 0%) sys   1.02 ( 3%) wall   
 594 kB ( 0%) ggc
 reg stack             :   0.00 ( 0%) usr   0.00 ( 0%) sys   0.01 ( 0%) wall   
   0 kB ( 0%) ggc
 final                 :   1.22 ( 4%) usr   0.01 ( 1%) sys   1.25 ( 4%) wall   
1639 kB ( 0%) ggc
 TOTAL                 :  32.33             1.55            33.95            
508532 kB


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37448


^ permalink raw reply	[flat|nested] 43+ messages in thread

* [Bug middle-end/37448] [4.3 Regression] gcc 4.3.1 cannot compile big function
  2008-09-09 18:35 [Bug c/37448] New: gcc 4.3.1 cannot compile big function grue at diku dot dk
                   ` (7 preceding siblings ...)
  2008-09-10 11:40 ` hubicka at gcc dot gnu dot org
@ 2008-09-10 21:17 ` vmakarov at redhat dot com
  2008-09-11 12:37 ` hubicka at gcc dot gnu dot org
                   ` (32 subsequent siblings)
  41 siblings, 0 replies; 43+ messages in thread
From: vmakarov at redhat dot com @ 2008-09-10 21:17 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #9 from vmakarov at redhat dot com  2008-09-10 21:16 -------
There are 66K allocnos and 3M live ranges in function testsuite. Fixing the
problem in IRA will take some time.  I hope the patch will be ready in a few
days.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37448


^ permalink raw reply	[flat|nested] 43+ messages in thread

* [Bug middle-end/37448] [4.3 Regression] gcc 4.3.1 cannot compile big function
  2008-09-09 18:35 [Bug c/37448] New: gcc 4.3.1 cannot compile big function grue at diku dot dk
                   ` (8 preceding siblings ...)
  2008-09-10 21:17 ` vmakarov at redhat dot com
@ 2008-09-11 12:37 ` hubicka at gcc dot gnu dot org
  2008-09-11 12:41 ` hubicka at gcc dot gnu dot org
                   ` (31 subsequent siblings)
  41 siblings, 0 replies; 43+ messages in thread
From: hubicka at gcc dot gnu dot org @ 2008-09-11 12:37 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #10 from hubicka at gcc dot gnu dot org  2008-09-11 12:36 -------
Subject: Bug 37448

Author: hubicka
Date: Thu Sep 11 12:34:53 2008
New Revision: 140281

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=140281
Log:
        PR middle-end/37448
        * tree-inline.c (add_lexical_block): Replace with ...
        (prepend_lexical_block): ... prepend at begginig.
        (remap_blocks): Use it and reverse later.
        (expand_call_inline): Use prepend_lexical_block.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/tree-inline.c


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37448


^ permalink raw reply	[flat|nested] 43+ messages in thread

* [Bug middle-end/37448] [4.3 Regression] gcc 4.3.1 cannot compile big function
  2008-09-09 18:35 [Bug c/37448] New: gcc 4.3.1 cannot compile big function grue at diku dot dk
                   ` (9 preceding siblings ...)
  2008-09-11 12:37 ` hubicka at gcc dot gnu dot org
@ 2008-09-11 12:41 ` hubicka at gcc dot gnu dot org
  2008-09-13 16:00 ` hjl at gcc dot gnu dot org
                   ` (30 subsequent siblings)
  41 siblings, 0 replies; 43+ messages in thread
From: hubicka at gcc dot gnu dot org @ 2008-09-11 12:41 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #11 from hubicka at gcc dot gnu dot org  2008-09-11 12:40 -------
Subject: Bug 37448

Author: hubicka
Date: Thu Sep 11 12:38:57 2008
New Revision: 140284

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=140284
Log:

        PR middle-end/37448
        * cgraph.c (cgraph_create_edge): Use !cgraph_edge for sanity check.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/cgraph.c


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37448


^ permalink raw reply	[flat|nested] 43+ messages in thread

* [Bug middle-end/37448] [4.3 Regression] gcc 4.3.1 cannot compile big function
  2008-09-09 18:35 [Bug c/37448] New: gcc 4.3.1 cannot compile big function grue at diku dot dk
                   ` (10 preceding siblings ...)
  2008-09-11 12:41 ` hubicka at gcc dot gnu dot org
@ 2008-09-13 16:00 ` hjl at gcc dot gnu dot org
  2008-09-17 17:50 ` lucier at math dot purdue dot edu
                   ` (29 subsequent siblings)
  41 siblings, 0 replies; 43+ messages in thread
From: hjl at gcc dot gnu dot org @ 2008-09-13 16:00 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #12 from hjl at gcc dot gnu dot org  2008-09-13 15:58 -------
Subject: Bug 37448

Author: hjl
Date: Sat Sep 13 15:57:26 2008
New Revision: 140345

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=140345
Log:
2008-09-13  Vladimir Makarov <vmakarov@redhat.com>

        PR middle-end/37448
        * ira-int.h (IRA_ALLOCNO_TEMP): Rename to ALLOCNO_TEMP.
        (ira_compress_allocno_live_ranges): New prototype.

        * ira-color.c: Rename IRA_ALLOCNO_TEMP to ALLOCNO_TEMP.
        (coalesced_allocnos_living_at_program_points): New.
        (coalesced_allocnos_live_at_points_p,
        set_coalesced_allocnos_live_points): New functions.
        (coalesce_spill_slots): Rewrite.

        * ira-lives.c (remove_some_program_points_and_update_live_ranges,
        ira_compress_allocno_live_ranges): New functions.

        * ira-build.c (ira_flattening): Call
        ira_compress_allocno_live_ranges.
        (ira_build): Ditto.

Modified:
    branches/ira-merge/gcc/ChangeLog.ira
    branches/ira-merge/gcc/ira-build.c
    branches/ira-merge/gcc/ira-color.c
    branches/ira-merge/gcc/ira-int.h
    branches/ira-merge/gcc/ira-lives.c


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37448


^ permalink raw reply	[flat|nested] 43+ messages in thread

* [Bug middle-end/37448] [4.3 Regression] gcc 4.3.1 cannot compile big function
  2008-09-09 18:35 [Bug c/37448] New: gcc 4.3.1 cannot compile big function grue at diku dot dk
                   ` (11 preceding siblings ...)
  2008-09-13 16:00 ` hjl at gcc dot gnu dot org
@ 2008-09-17 17:50 ` lucier at math dot purdue dot edu
  2008-09-18  1:31 ` lucier at math dot purdue dot edu
                   ` (28 subsequent siblings)
  41 siblings, 0 replies; 43+ messages in thread
From: lucier at math dot purdue dot edu @ 2008-09-17 17:50 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #13 from lucier at math dot purdue dot edu  2008-09-17 17:49 -------
In the attached statistics file you find where this allocation overflowed

Alloc-pool Kind        Pools  Allocated      Peak        Leak
-------------------------------------------------------------
df_scan_ref pool         868 -1403330584  607042176          0

which is similar to what happens in 26854, so perhaps this PR could also be
improved with factored use-def chains.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37448


^ permalink raw reply	[flat|nested] 43+ messages in thread

* [Bug middle-end/37448] [4.3 Regression] gcc 4.3.1 cannot compile big function
  2008-09-09 18:35 [Bug c/37448] New: gcc 4.3.1 cannot compile big function grue at diku dot dk
                   ` (12 preceding siblings ...)
  2008-09-17 17:50 ` lucier at math dot purdue dot edu
@ 2008-09-18  1:31 ` lucier at math dot purdue dot edu
  2008-09-18 16:50 ` hubicka at gcc dot gnu dot org
                   ` (27 subsequent siblings)
  41 siblings, 0 replies; 43+ messages in thread
From: lucier at math dot purdue dot edu @ 2008-09-18  1:31 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #14 from lucier at math dot purdue dot edu  2008-09-18 01:30 -------
Created an attachment (id=16351)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=16351&action=view)
detailed memory stats with checking enabled and long statistic counters

I reran the test problem with checking enabled and this patch, which changes
the memory statistic counters from int to long, installed:

http://gcc.gnu.org/ml/gcc-patches/2008-09/msg01270.html

So we see that 5,272,694,920 bytes are allocated in alloc_pools, and
331,198,680 btytes are allocated in bitmaps.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37448


^ permalink raw reply	[flat|nested] 43+ messages in thread

* [Bug middle-end/37448] [4.3 Regression] gcc 4.3.1 cannot compile big function
  2008-09-09 18:35 [Bug c/37448] New: gcc 4.3.1 cannot compile big function grue at diku dot dk
                   ` (13 preceding siblings ...)
  2008-09-18  1:31 ` lucier at math dot purdue dot edu
@ 2008-09-18 16:50 ` hubicka at gcc dot gnu dot org
  2008-09-18 17:31 ` hubicka at gcc dot gnu dot org
                   ` (26 subsequent siblings)
  41 siblings, 0 replies; 43+ messages in thread
From: hubicka at gcc dot gnu dot org @ 2008-09-18 16:50 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #15 from hubicka at gcc dot gnu dot org  2008-09-18 16:49 -------
We seem to make nice progress on the testcase ;)

Conversion to FUD would probably help here, but looking at the DF dumps, the
testcase don't look like your average testcase showing DU/UD chain explosion. 
The chains seem relatively short at least in manual inspection through first
part of dump. Yet we produe about 40 DU/UD records live at once for every
instruction ever emit, so it seems we are doing some wrong still.

If someone more familiar with dataflow branch could look into why we have so
many DU/UDs, it would be great.

Honza


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37448


^ permalink raw reply	[flat|nested] 43+ messages in thread

* [Bug middle-end/37448] [4.3 Regression] gcc 4.3.1 cannot compile big function
  2008-09-09 18:35 [Bug c/37448] New: gcc 4.3.1 cannot compile big function grue at diku dot dk
                   ` (14 preceding siblings ...)
  2008-09-18 16:50 ` hubicka at gcc dot gnu dot org
@ 2008-09-18 17:31 ` hubicka at gcc dot gnu dot org
  2008-09-18 18:19 ` hubicka at gcc dot gnu dot org
                   ` (25 subsequent siblings)
  41 siblings, 0 replies; 43+ messages in thread
From: hubicka at gcc dot gnu dot org @ 2008-09-18 17:31 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #16 from hubicka at gcc dot gnu dot org  2008-09-18 17:30 -------
Subject: Bug 37448

Author: hubicka
Date: Thu Sep 18 17:28:40 2008
New Revision: 140463

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=140463
Log:

        PR middle-end/37448
        * ipa-reference.c (ipa_reference_local_vars_info_d,
        ipa_reference_global_vars_info_d,
        ipa_reference_local_vars_info_t, ipa_reference_global_vars_info_t,
        ipa_reference_vars_info_t): Move here from ipa-reference.h
        (node_duplication_hook_holder, node_removal_hook_holder): New.
        (get_reference_vars_info_from_cgraph): Rename to ...
        (get_reference_vars_info): ... this one, use cgraph uids.
        (get_local_reference_vars_info, get_global_reference_vars_info):
        Use cgraph instead of decl.
        (ipa_reference_get_read_local, ipa_reference_get_written_local):
Remove.
        (ipa_reference_get_read_global, ipa_reference_get_not_read_global
        ipa_reference_get_written_global,
ipa_reference_get_not_written_global): Use
        cgraph argument.
        (check_call): Simplify avail check.
        (scan_stmt_for_static_refs): Update.
        (propagate_bits): Update.
        (merge_callee_local_info): Remove.
        (init_function_info): Use cgraph nodes.
        (clean_function_local_data): Break out from ...
        (clean_function): ... here.
        (copy_local_bitmap, copy_global_bitmap): New functions.
        (duplicate_node_data, remove_node_data): New functions.
        (generate_summary): Register hooks; use visibility instead of
        master clones.
        (propafate): Use cgraph nodes; copy bitmap to each node in cycle.
        * ipa-reference.h (ipa_reference_local_vars_info_d,
        ipa_reference_global_vars_info_d,
        ipa_reference_local_vars_info_t, ipa_reference_global_vars_info_t,
        ipa_reference_vars_info_t): Move to ipa-reference.c
        (ipa_reference_get_read_local, ipa_reference_get_written_local):
        Remove.
        (ipa_reference_get_read_global, ipa_reference_get_written_global,
        ipa_reference_get_not_read_global,
ipa_reference_get_not_written_global):
        Update prototype.
        * ipa-pure-const.c (funct_state_vec): Turn into VECtor.
        (init_state): Remove.
        (node_duplication_hook_holder, node_removal_hook_holder): New.
        (get_function_state, set_function_state): Use VECtor.
        (analyze_function): Check body availability.
        (add_new_function): Likewise.
        (duplicate_node_data, remove_node_data): New.
        (generate_summary): Register hooks; do not care about clones.
        (propafate): Do not care about clones; recursive functions are not
looping.
        * ipa-utils.c (searchc, ipa_utils_reduced_inorder): Do not skip clones.
        * ipa-prop.c (edge_removal_hook_holder, node_removal_hook_holder,
        * edge_duplication_hook_holder, node_duplication_hook_holder): Make
        static.
        * tree-flow.h (function_ann_d): Remove reference_vars_info.
        * tree-ssa-opreands.c (add_call_clobber_ops, add_call_read_ops): Update
call of
        ipa-reference accesors.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/ipa-prop.c
    trunk/gcc/ipa-pure-const.c
    trunk/gcc/ipa-reference.c
    trunk/gcc/ipa-reference.h
    trunk/gcc/ipa-utils.c
    trunk/gcc/tree-ssa-operands.c


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37448


^ permalink raw reply	[flat|nested] 43+ messages in thread

* [Bug middle-end/37448] [4.3 Regression] gcc 4.3.1 cannot compile big function
  2008-09-09 18:35 [Bug c/37448] New: gcc 4.3.1 cannot compile big function grue at diku dot dk
                   ` (15 preceding siblings ...)
  2008-09-18 17:31 ` hubicka at gcc dot gnu dot org
@ 2008-09-18 18:19 ` hubicka at gcc dot gnu dot org
  2008-09-18 21:13 ` hubicka at gcc dot gnu dot org
                   ` (24 subsequent siblings)
  41 siblings, 0 replies; 43+ messages in thread
From: hubicka at gcc dot gnu dot org @ 2008-09-18 18:19 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #17 from hubicka at gcc dot gnu dot org  2008-09-18 18:18 -------
Subject: Bug 37448

Author: hubicka
Date: Thu Sep 18 18:16:45 2008
New Revision: 140465

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=140465
Log:

        PR middle-end/37448
        * ipa-reference.c (ipa_reference_local_vars_info_d,
        ipa_reference_global_vars_info_d,
        ipa_reference_local_vars_info_t, ipa_reference_global_vars_info_t,
        ipa_reference_vars_info_t): Move here from ipa-reference.h
        (node_duplication_hook_holder, node_removal_hook_holder): New.
        (get_reference_vars_info_from_cgraph): Rename to ...
        (get_reference_vars_info): ... this one, use cgraph uids.
        (get_local_reference_vars_info, get_global_reference_vars_info):
        Use cgraph instead of decl.
        (ipa_reference_get_read_local, ipa_reference_get_written_local):
Remove.
        (ipa_reference_get_read_global, ipa_reference_get_not_read_global
        ipa_reference_get_written_global,
ipa_reference_get_not_written_global): Use
        cgraph argument.
        (check_call): Simplify avail check.
        (scan_stmt_for_static_refs): Update.
        (propagate_bits): Update.
        (merge_callee_local_info): Remove.
        (init_function_info): Use cgraph nodes.
        (clean_function_local_data): Break out from ...
        (clean_function): ... here.
        (copy_local_bitmap, copy_global_bitmap): New functions.
        (duplicate_node_data, remove_node_data): New functions.
        (generate_summary): Register hooks; use visibility instead of
        master clones.
        (propafate): Use cgraph nodes; copy bitmap to each node in cycle.
        * ipa-reference.h (ipa_reference_local_vars_info_d,
        ipa_reference_global_vars_info_d,
        ipa_reference_local_vars_info_t, ipa_reference_global_vars_info_t,
        ipa_reference_vars_info_t): Move to ipa-reference.c
        (ipa_reference_get_read_local, ipa_reference_get_written_local):
        Remove.
        (ipa_reference_get_read_global, ipa_reference_get_written_global,
        ipa_reference_get_not_read_global,
ipa_reference_get_not_written_global):
        Update prototype.
        * ipa-pure-const.c (funct_state_vec): Turn into VECtor.
        (init_state): Remove.
        (node_duplication_hook_holder, node_removal_hook_holder): New.
        (get_function_state, set_function_state): Use VECtor.
        (analyze_function): Check body availability.
        (add_new_function): Likewise.
        (duplicate_node_data, remove_node_data): New.
        (generate_summary): Register hooks; do not care about clones.
        (propafate): Do not care about clones; recursive functions are not
looping.
        * ipa-utils.c (searchc, ipa_utils_reduced_inorder): Do not skip clones.
        * ipa-prop.c (edge_removal_hook_holder, node_removal_hook_holder,
        * edge_duplication_hook_holder, node_duplication_hook_holder): Make
        static.
        * tree-flow.h (function_ann_d): Remove reference_vars_info.
        * tree-ssa-opreands.c (add_call_clobber_ops, add_call_read_ops): Update
call of
        ipa-reference accesors.

Modified:
    trunk/gcc/tree-flow.h


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37448


^ permalink raw reply	[flat|nested] 43+ messages in thread

* [Bug middle-end/37448] [4.3 Regression] gcc 4.3.1 cannot compile big function
  2008-09-09 18:35 [Bug c/37448] New: gcc 4.3.1 cannot compile big function grue at diku dot dk
                   ` (16 preceding siblings ...)
  2008-09-18 18:19 ` hubicka at gcc dot gnu dot org
@ 2008-09-18 21:13 ` hubicka at gcc dot gnu dot org
  2008-09-20 14:44 ` rguenth at gcc dot gnu dot org
                   ` (23 subsequent siblings)
  41 siblings, 0 replies; 43+ messages in thread
From: hubicka at gcc dot gnu dot org @ 2008-09-18 21:13 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #18 from hubicka at gcc dot gnu dot org  2008-09-18 21:11 -------
Hi,
some stats on instruction counts and references Kenny asked about:

At -O2:
jh@gcc17:~/gcc-baseline/build-ada/prev-gcc$ grep "(insn"
e.i.157r.outof_cfglayout | wc -l
307811
jh@gcc17:~/gcc-baseline/build-ada/prev-gcc$ grep "(call_insn"
e.i.157r.outof_cfglayout | wc -l
157016
jh@gcc17:~/gcc-baseline/build-ada/prev-gcc$ grep "(jump_insn"
e.i.157r.outof_cfglayout | wc -l
18650

at -O0:
jh@gcc17:~/gcc-baseline/build-ada/prev-gcc/O0$ grep "(insn"
e.i.157r.outof_cfglayout | wc -l
411876
jh@gcc17:~/gcc-baseline/build-ada/prev-gcc/O0$ grep "(call_insn"
e.i.157r.outof_cfglayout | wc -l
166471
jh@gcc17:~/gcc-baseline/build-ada/prev-gcc/O0$ grep "(jump_insn"
e.i.157r.outof_cfglayout | wc -l
18218

I am not sure if I can grep for references in some of the RTL dumps...

Honza


-- 

hubicka at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Last reconfirmed|2008-09-10 08:02:43         |2008-09-18 21:11:40
               date|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37448


^ permalink raw reply	[flat|nested] 43+ messages in thread

* [Bug middle-end/37448] [4.3 Regression] gcc 4.3.1 cannot compile big function
  2008-09-09 18:35 [Bug c/37448] New: gcc 4.3.1 cannot compile big function grue at diku dot dk
                   ` (17 preceding siblings ...)
  2008-09-18 21:13 ` hubicka at gcc dot gnu dot org
@ 2008-09-20 14:44 ` rguenth at gcc dot gnu dot org
  2008-09-26  0:17 ` vmakarov at gcc dot gnu dot org
                   ` (22 subsequent siblings)
  41 siblings, 0 replies; 43+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2008-09-20 14:44 UTC (permalink / raw)
  To: gcc-bugs



-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P3                          |P2


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37448


^ permalink raw reply	[flat|nested] 43+ messages in thread

* [Bug middle-end/37448] [4.3 Regression] gcc 4.3.1 cannot compile big function
  2008-09-09 18:35 [Bug c/37448] New: gcc 4.3.1 cannot compile big function grue at diku dot dk
                   ` (18 preceding siblings ...)
  2008-09-20 14:44 ` rguenth at gcc dot gnu dot org
@ 2008-09-26  0:17 ` vmakarov at gcc dot gnu dot org
  2008-09-26 21:14 ` hubicka at gcc dot gnu dot org
                   ` (21 subsequent siblings)
  41 siblings, 0 replies; 43+ messages in thread
From: vmakarov at gcc dot gnu dot org @ 2008-09-26  0:17 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #19 from vmakarov at gcc dot gnu dot org  2008-09-26 00:15 -------
Subject: Bug 37448

Author: vmakarov
Date: Fri Sep 26 00:14:30 2008
New Revision: 140674

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=140674
Log:
2008-09-25  Vladimir Makarov  <vmakarov@redhat.com>

        PR middle-end/37448

        * ira-int.h (IRA_ALLOCNO_TEMP): Rename to ALLOCNO_TEMP.
        (ira_compress_allocno_live_ranges): New prototype.

        * ira-color.c: Rename IRA_ALLOCNO_TEMP to ALLOCNO_TEMP.
        (coalesced_allocnos_living_at_program_points): New.
        (coalesced_allocnos_live_at_points_p,
        set_coalesced_allocnos_live_points): New functions.
        (coalesce_spill_slots): Rewrite.

        * ira-lives.c (remove_some_program_points_and_update_live_ranges,
        ira_compress_allocno_live_ranges): New functions.

        * ira-build.c (ira_flattening): Call
        ira_compress_allocno_live_ranges.
        (ira_build): Ditto.


Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/ira-build.c
    trunk/gcc/ira-color.c
    trunk/gcc/ira-int.h
    trunk/gcc/ira-lives.c


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37448


^ permalink raw reply	[flat|nested] 43+ messages in thread

* [Bug middle-end/37448] [4.3 Regression] gcc 4.3.1 cannot compile big function
  2008-09-09 18:35 [Bug c/37448] New: gcc 4.3.1 cannot compile big function grue at diku dot dk
                   ` (19 preceding siblings ...)
  2008-09-26  0:17 ` vmakarov at gcc dot gnu dot org
@ 2008-09-26 21:14 ` hubicka at gcc dot gnu dot org
  2008-09-26 22:16 ` hubicka at gcc dot gnu dot org
                   ` (20 subsequent siblings)
  41 siblings, 0 replies; 43+ messages in thread
From: hubicka at gcc dot gnu dot org @ 2008-09-26 21:14 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #20 from hubicka at gcc dot gnu dot org  2008-09-26 21:12 -------
The testcase now compiles at -O2 in resonable time.
Checking enabled compiler:
 CFG verifier          :  15.02 ( 5%) usr   0.01 ( 0%) sys  15.13 ( 5%) wall   
   0 kB ( 0%) ggc
 df reaching defs      :   7.57 ( 2%) usr   0.27 ( 7%) sys   7.81 ( 2%) wall   
   0 kB ( 0%) ggc
 df live regs          :  13.13 ( 4%) usr   0.00 ( 0%) sys  13.16 ( 4%) wall   
   0 kB ( 0%) ggc
 df live&initialized regs:   3.62 ( 1%) usr   0.00 ( 0%) sys   3.60 ( 1%) wall 
     0 kB ( 0%) ggc
 df use-def / def-use chains:   3.83 ( 1%) usr   0.03 ( 1%) sys   3.85 ( 1%)
wall       0 kB ( 0%) ggc
 df reg dead/unused notes:   8.56 ( 3%) usr   0.01 ( 0%) sys   8.53 ( 3%) wall 
 23492 kB ( 3%) ggc
  tree SSA verifier     :  22.27 ( 7%) usr   0.04 ( 1%) sys  22.39 ( 7%) wall  
    0 kB ( 0%) ggc
 tree STMT verifier    :  27.32 ( 9%) usr   0.42 (11%) sys  27.65 ( 9%) wall   
   0 kB ( 0%) ggc
 expand                :  22.57 ( 7%) usr   0.10 ( 3%) sys  22.74 ( 7%) wall 
142836 kB (16%) ggc
 integrated RA         :  72.71 (24%) usr   0.00 ( 0%) sys  74.09 (23%) wall   
5404 kB ( 1%) ggc
 reload                :  17.30 ( 6%) usr   0.00 ( 0%) sys  20.38 ( 6%) wall  
26179 kB ( 3%) ggc
 TOTAL                 : 306.65             3.67           316.44            
908200 kB

So we do resonable job here.  I wonder where those 7% of expansion time goes
to.
We still need over 2GB RAM because of dataflow info.  I am going to test how
much difference Kenny's patch make.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37448


^ permalink raw reply	[flat|nested] 43+ messages in thread

* [Bug middle-end/37448] [4.3 Regression] gcc 4.3.1 cannot compile big function
  2008-09-09 18:35 [Bug c/37448] New: gcc 4.3.1 cannot compile big function grue at diku dot dk
                   ` (20 preceding siblings ...)
  2008-09-26 21:14 ` hubicka at gcc dot gnu dot org
@ 2008-09-26 22:16 ` hubicka at gcc dot gnu dot org
  2008-09-26 23:36 ` hubicka at gcc dot gnu dot org
                   ` (19 subsequent siblings)
  41 siblings, 0 replies; 43+ messages in thread
From: hubicka at gcc dot gnu dot org @ 2008-09-26 22:16 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #21 from hubicka at gcc dot gnu dot org  2008-09-26 22:15 -------
I've just tested Kenny's df scan ref union patch.  We still have over 2.2GB
footprint that is not that much different from unpatched compiler.
allocpool statistics now give some more useful data:
df_scan_ref base pool          868 -1871497632  553770408          0
copies                         434     214464     134512          0
df_scan_ref artificial pool    868   77289168   11231352          0
df_scan_ref regular pool       868  737848848   72493272          0

So largest one is df_scan_ref base, not artifical defs as was suspected.  About
0.5GB comming to that storage.

Other large pool (now at -O2) is:
allocno live ranges      434  167266736  167062320          0

And bitmaps:
df-problems.c:311 (df_rd_alloc)           110920 1071636320 1071611720
1071611720          0
df-problems.c:312 (df_rd_alloc)           110920  543723720  534523840 
534523840          0
df-problems.c:539 (df_rd_transfer_functio  52865  541674400  537236800 
537236760     101861
tree-ssa-pre.c:584 (bitmap_set_new)       547137 1368222720 1366138880
1366138880     784222
tree-ssa-pre.c:585 (bitmap_set_new)       547137  951660760  949608960 
949608960    1467881

and GGC garbage:
emit-rtl.c:3343 (make_insn_raw)                    33796400: 4.4%          0:
0.0%         88: 0.0%    3072408: 3.1%     384051
tree-inline.c:3600 (copy_tree_r)                   36731592: 4.8%          0:
0.0%          0: 0.0%    2702392: 2.7%     478660
lists.c:143 (alloc_EXPR_LIST)                      37188960: 4.8%          0:
0.0%          0: 0.0%    7437792: 7.5%     929724
tree-ssanames.c:141 (make_ssa_name_fn)             52532760: 6.8%          0:
0.0%       3480: 0.0%    3502416: 3.5%     437802


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37448


^ permalink raw reply	[flat|nested] 43+ messages in thread

* [Bug middle-end/37448] [4.3 Regression] gcc 4.3.1 cannot compile big function
  2008-09-09 18:35 [Bug c/37448] New: gcc 4.3.1 cannot compile big function grue at diku dot dk
                   ` (21 preceding siblings ...)
  2008-09-26 22:16 ` hubicka at gcc dot gnu dot org
@ 2008-09-26 23:36 ` hubicka at gcc dot gnu dot org
  2008-09-27 12:45 ` zadeck at naturalbridge dot com
                   ` (18 subsequent siblings)
  41 siblings, 0 replies; 43+ messages in thread
From: hubicka at gcc dot gnu dot org @ 2008-09-26 23:36 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #22 from hubicka at gcc dot gnu dot org  2008-09-26 23:34 -------
With Kenny's updated df patch and updated statistics I now get:
Alloc-pool Kind         Pools  Elt size  Allocated (elts)           Peak (elts)
          Leak (elts)
--------------------------------------------------------------------------------------------------------------
elt_loc_list               40       3863  110676080(   2766902)   13178600(   
329465)          0(         0)
df_scan ref base           80        868 -1871497632( -23393720) 553609440(  
6920118)          0(         0)
df_scan ref artificial     88        868   77289168(    878286)   11224840(   
127555)          0(         0)
df_scan ref regular        88        868  737848848(   8384646)   72474072(   
823569)          0(         0)


About 17 refs live for every instruction.
Will check memory footprint after return from California.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37448


^ permalink raw reply	[flat|nested] 43+ messages in thread

* [Bug middle-end/37448] [4.3 Regression] gcc 4.3.1 cannot compile big function
  2008-09-09 18:35 [Bug c/37448] New: gcc 4.3.1 cannot compile big function grue at diku dot dk
                   ` (22 preceding siblings ...)
  2008-09-26 23:36 ` hubicka at gcc dot gnu dot org
@ 2008-09-27 12:45 ` zadeck at naturalbridge dot com
  2008-10-08  2:55 ` zadeck at gcc dot gnu dot org
                   ` (17 subsequent siblings)
  41 siblings, 0 replies; 43+ messages in thread
From: zadeck at naturalbridge dot com @ 2008-09-27 12:45 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #23 from zadeck at naturalbridge dot com  2008-09-27 12:44 -------
I do not believe honza.  

My measurements at -O0 on x86-42 are about 15 refs per insn.  
This is based on the following stats.  (These can be reproduced using a patch
that i am about to submit).

;;    total ref usage 8428419{7601408d,827011u,0e} in 570685{406804 regular +
163881 call} insns.

This yields about 15 refs per insn.   While this number is large, it is
reasonable considering that slightly less than 30% of the insns are call
instructions.   Call instructions have a lot of clobbers.   It is possible that
some mechanism could be devised to share these refs, but this will mess up
things like building chains so it is certainly not something that is going to
be easy to do.

The df patch that i have submitted makes modest progress on reducing the size
of df-refs.   Hopefully bonzini will finish reviewing this soon.

I should also point out that honza's alloc pool stats were completely bogus.  I
have submitted a patch that fixes the way stats are accumulated for
alloc-pools.  We can account for all of the df-refs and the peak usage
according to the new alloc-pool stats is very close to the number used by the
largest function.

Once those patches are installed, I will consider this bugzilla resolved with
respect to the df issues.  


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37448


^ permalink raw reply	[flat|nested] 43+ messages in thread

* [Bug middle-end/37448] [4.3 Regression] gcc 4.3.1 cannot compile big function
  2008-09-09 18:35 [Bug c/37448] New: gcc 4.3.1 cannot compile big function grue at diku dot dk
                   ` (23 preceding siblings ...)
  2008-09-27 12:45 ` zadeck at naturalbridge dot com
@ 2008-10-08  2:55 ` zadeck at gcc dot gnu dot org
  2008-10-08  3:39 ` lucier at math dot purdue dot edu
                   ` (16 subsequent siblings)
  41 siblings, 0 replies; 43+ messages in thread
From: zadeck at gcc dot gnu dot org @ 2008-10-08  2:55 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #24 from zadeck at gcc dot gnu dot org  2008-10-08 02:53 -------
Subject: Bug 37448

Author: zadeck
Date: Wed Oct  8 02:52:28 2008
New Revision: 140960

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=140960
Log:
2008-10-07  Kenneth Zadeck <zadeck@naturalbridge.com>

        PR rtl-optimization/37448
        alloc_pool_desc (elt_size): New field.
        alloc_pool_desc (created, allocated, current, peak): Make unsigned
        long.
        output_info (count): Renamed total_created and made unsigned long.
        output_info (size): Renamed total_allocated and made unsigned long.
        alloc-pool.c (create_alloc_pool, empty_alloc_pool, pool_alloc,
        pool_free): Properly keep track of desc->size.
        (print_statistics, dump_alloc_pool_statistics): Enhance the
        printing of statistics to print the number of elements and to use
        unsigned longs.


Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/alloc-pool.c


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37448


^ permalink raw reply	[flat|nested] 43+ messages in thread

* [Bug middle-end/37448] [4.3 Regression] gcc 4.3.1 cannot compile big function
  2008-09-09 18:35 [Bug c/37448] New: gcc 4.3.1 cannot compile big function grue at diku dot dk
                   ` (24 preceding siblings ...)
  2008-10-08  2:55 ` zadeck at gcc dot gnu dot org
@ 2008-10-08  3:39 ` lucier at math dot purdue dot edu
  2008-10-11 23:42 ` zadeck at gcc dot gnu dot org
                   ` (15 subsequent siblings)
  41 siblings, 0 replies; 43+ messages in thread
From: lucier at math dot purdue dot edu @ 2008-10-08  3:39 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #25 from lucier at math dot purdue dot edu  2008-10-08 03:37 -------
I'm sorry, I haven't been reading gcc-patches recently, but this is quite
similar to my patch suggested here:

http://gcc.gnu.org/ml/gcc-patches/2008-09/msg01270.html

which also "fixed" the counters for bitmaps.  The consensus seemed to be to use
HOST_WIDEST_INT for the counters (for 64-bit Windows, pointers are 64-bit and
longs are 32-bit).


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37448


^ permalink raw reply	[flat|nested] 43+ messages in thread

* [Bug middle-end/37448] [4.3 Regression] gcc 4.3.1 cannot compile big function
  2008-09-09 18:35 [Bug c/37448] New: gcc 4.3.1 cannot compile big function grue at diku dot dk
                   ` (25 preceding siblings ...)
  2008-10-08  3:39 ` lucier at math dot purdue dot edu
@ 2008-10-11 23:42 ` zadeck at gcc dot gnu dot org
  2009-01-24 10:26 ` rguenth at gcc dot gnu dot org
                   ` (14 subsequent siblings)
  41 siblings, 0 replies; 43+ messages in thread
From: zadeck at gcc dot gnu dot org @ 2008-10-11 23:42 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #26 from zadeck at gcc dot gnu dot org  2008-10-11 23:40 -------
Subject: Bug 37448

Author: zadeck
Date: Sat Oct 11 23:39:21 2008
New Revision: 141067

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=141067
Log:
2008-10-11  Kenneth Zadeck <zadeck@naturalbridge.com>

        PR rtl-optimization/37448
        * df.h: (df_ref_class): New enum.
        (DF_REF_TYPE_NAMES, df_ref_extract): Removed.
        (struct df_ref): Replaced with union df_ref_d.
        (df_base_ref, df_artificial_ref, df_regular_ref, df_extract_ref):
        New members of df_ref_d union.
        (DF_REF_REAL_REG, DF_REF_REGNO, DF_REF_REAL_LOC, DF_REF_REG,
        DF_REF_LOC, DF_REF_BB, DF_REF_INSN_INFO, DF_REF_INSN,
        DF_REF_CLASS, DF_REF_TYPE, DF_REF_CHAIN, DF_REF_ID, DF_REF_FLAGS,
        DF_REF_ORDER, DF_REF_IS_ARTIFICIAL, DF_REF_NEXT_REG,
        DF_REF_PREV_REG, DF_REF_EXTRACT_WIDTH, DF_REF_EXTRACT_OFFSET,
        DF_REF_EXTRACT_MODE): Replaced definition to access union
        df_ref_d.
        (DF_MWS_REG_DEF_P, DF_MWS_REG_USE_P, DF_MWS_TYPE): New macros.
        (df_scan_bb_info, df_bb_regno_first_def_find,
        df_bb_regno_last_def_find, df_find_def, df_find_use,
        df_refs_chain_dump, df_regs_chain_dump, df_ref_debug,
        debug_df_ref, df_chain_create, df_chain_unlink, df_chain_copy,
        df_ref_create, df_ref_remove, df_compute_accessed_bytes,
        df_get_artificial_defs, df_get_artificial_uses, union_defs)
        Replaced struct df_ref * with df_ref.
        * df-scan.c (df_collection_rec, df_null_ref_rec,
        df_ref_chain_delete_du_chain, df_ref_chain_delete, df_install_ref,
        df_grow_ref_info, df_ref_create, df_reg_chain_unlink,
        df_ref_compress_rec, df_ref_remove, df_ref_chain_delete_du_chain,
        df_ref_chain_delete, df_free_collection_rec, df_insn_rescan,
        df_reorganize_refs_by_reg_by_reg,
        df_reorganize_refs_by_reg_by_insn, df_reorganize_refs_by_reg,
        df_ref_change_reg_with_loc_1, df_notes_rescan, df_swap_refs,
        df_sort_and_compress_refs, df_install_ref, df_install_refs,
        df_ref_record, df_get_conditional_uses, df_get_call_refs,
        df_bb_refs_record, df_exit_block_uses_collect,
        df_record_exit_block_uses, df_reg_chain_mark,
        df_reg_chain_verify_unmarked, df_refs_verify): Replaced struct
        df_ref * with df_ref.
        (df_ref_record, df_uses_record, df_ref_create_structure): Added
        df_ref_class parameter.
        (df_scan_problem_data): Added new pools for different types of
        refs.
        (df_scan_free_internal, df_scan_alloc, df_free_ref,
        df_ref_create_structure): Processed new ref pools.
        (df_scan_start_dump): Added counts of refs and insns.
        (df_ref_create, df_notes_rescan, df_def_record_1, df_uses_record,
        df_get_call_refs, df_insn_refs_collect, df_bb_refs_collect,
        df_entry_block_defs_collect, df_exit_block_uses_collect): Added
        code to pass df_ref_class down to ref creation functions.
        (df_reg_chain_unlink, df_ref_remove, df_ref_change_reg_with_loc_1,
        df_reg_chain_mark): Use macros to hide references to df_refs.
        (df_ref_chain_change_bb): Removed.
        (df_insn_change_bb): Remove calls to df_ref_insn_change_bb.
        (df_ref_equal_p, df_ref_compare, df_ref_create_structure):
        Enhanced to understand df_ref union structure.
        * fwprop.c (local_ref_killed_between_p, use_killed_between,
        all_uses_available_at, update_df, try_fwprop_subst,
        forward_propagate_subreg, forward_propagate_and_simplify,
        forward_propagate_into, fwprop, fwprop_addr): Replaced struct
        df_ref * with df_ref.
        (use_killed_between, all_uses_available_at): Use macros to hide
        references to df_refs.
        * regstat.c (regstat_bb_compute_ri,
        regstat_bb_compute_calls_crossed): Replaced struct df_ref * with
        df_ref.
        * see.c (see_handle_relevant_defs, see_handle_relevant_uses,
        see_handle_relevant_refs, see_analyze_one_def,
        see_update_relevancy, see_propagate_extensions_to_uses): Replaced
        struct df_ref * with df_ref.
        * ra-conflict.c (record_one_conflict, clear_reg_in_live,
        global_conflicts): Replaced struct df_ref * with df_ref.
        * ddg.c (create_ddg_dep_from_intra_loop_link,
        add_cross_iteration_register_deps, build_inter_loop_deps):
        Replaced struct df_ref * with df_ref.
        (create_ddg_dep_from_intra_loop_link,
        add_cross_iteration_register_deps): Use macros to hide references
        to df_refs.
        * auto-inc-dec.c (find_inc, merge_in_block): Replaced struct
        df_ref * with df_ref.
        * df-core.c (df_bb_regno_first_def_find,
        df_bb_regno_last_def_find, df_find_def, df_find_use,
        df_refs_chain_dump, df_regs_chain_dump, df_ref_debug,
        debug_df_ref): Replaced struct df_ref * with df_ref.
        (df_mws_dump, df_ref_debug): Use macros to hide references to
        df_refs.
        * cse.c (cse_extended_basic_block): Replaced struct df_ref * with
        df_ref.
        * web.c (union_defs, entry_register, replace_ref, web_main):
        Replaced struct df_ref * with df_ref.
        (union_defs, replace_ref): Use macros to hide references to
        df_refs.
        * global.c (compute_regs_asm_clobbered, build_insn_chain):
        Replaced struct df_ref * with df_ref.
        * ifcvt.c (dead_or_predicable): Replaced struct df_ref * with
        df_ref.
        * sel-sched-ir.c (maybe_downgrade_id_to_use, setup_id_reg_sets, ):
        Replaced struct df_ref * with df_ref.
        * ira-lives.c (mark_ref_live, def_conflicts_with_inputs_p,
        mark_ref_dead, process_bb_node_lives): Replaced struct df_ref *
        with df_ref.
        * local-alloc.c (block_alloc): Replaced struct df_ref * with
        df_ref.
        * df-byte-scan.c (df_compute_accessed_bytes_extract,
        df_compute_accessed_bytes_strict_low_part,
        df_compute_accessed_bytes_subreg, df_compute_accessed_bytes):
        Replaced struct df_ref * with df_ref.
        (df_compute_accessed_bytes): Use macros to hide references to
        df_refs.
        * init-regs.c (initialize_uninitialized_regs): Replaced struct
        df_ref * with df_ref.
        * loop-invariant.c (invariant_for_use, hash_invariant_expr_1,
        check_dependency, check_dependencies, record_uses): Replaced
        struct df_ref * with df_ref.
        (invariant_for_use, check_dependency): Use macros to hide
        references to df_refs.
        * loop-iv.c (iv_analysis_loop_init, iv_get_reaching_def,
        get_biv_step_1, get_biv_step, record_iv, iv_analyze_def,
        iv_analyze, biv_p): Replaced struct df_ref * with df_ref.
        (iv_analysis_loop_init, iv_get_reaching_def): Use macros to hide
        references to df_refs.
        * ira.c (compute_regs_asm_clobbered): Replaced struct df_ref * with
df_ref.
        * combine.c (create_log_links): Replaced struct df_ref * with df_ref.
        * df-problems.c (df_rd_bb_local_compute_process_def,
        df_lr_bb_local_compute, df_live_bb_local_compute, df_chain_create,
        df_chain_unlink_1, df_chain_unlink, df_chain_copy,
        df_chain_remove_problem, df_chain_create_bb_process_use,
        df_chain_create_bb, df_chain_top_dump, df_chain_bottom_dump,
        df_byte_lr_check_regs, df_byte_lr_bb_local_compute,
        df_byte_lr_simulate_defs, df_byte_lr_simulate_uses,
        df_byte_lr_simulate_artificial_refs_at_top,
        df_byte_lr_simulate_artificial_refs_at_end, df_create_unused_note,
        df_note_bb_compute, df_note_add_problem, df_simulate_defs,
        df_simulate_uses, df_simulate_artificial_refs_at_end,
        df_simulate_artificial_refs_at_top): Replaced struct df_ref * with
df_ref.
        (df_chain_dump): Use macros to hide
        references to df_refs.
        * config/mips/mips.c (r10k_simplify_address): Replaced struct
        df_ref * with df_ref.
        * dce.c (mark_nonreg_stores, delete_corresponding_reg_eq_notes,
        mark_artificial_uses, mark_reg_dependencies,
        byte_dce_process_block): Replaced struct df_ref * with df_ref.


Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/auto-inc-dec.c
    trunk/gcc/combine.c
    trunk/gcc/config/mips/mips.c
    trunk/gcc/cse.c
    trunk/gcc/dce.c
    trunk/gcc/ddg.c
    trunk/gcc/df-byte-scan.c
    trunk/gcc/df-core.c
    trunk/gcc/df-problems.c
    trunk/gcc/df-scan.c
    trunk/gcc/df.h
    trunk/gcc/fwprop.c
    trunk/gcc/global.c
    trunk/gcc/ifcvt.c
    trunk/gcc/init-regs.c
    trunk/gcc/ira-lives.c
    trunk/gcc/ira.c
    trunk/gcc/local-alloc.c
    trunk/gcc/loop-invariant.c
    trunk/gcc/loop-iv.c
    trunk/gcc/ra-conflict.c
    trunk/gcc/regstat.c
    trunk/gcc/see.c
    trunk/gcc/sel-sched-ir.c
    trunk/gcc/web.c


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37448


^ permalink raw reply	[flat|nested] 43+ messages in thread

* [Bug middle-end/37448] [4.3 Regression] gcc 4.3.1 cannot compile big function
  2008-09-09 18:35 [Bug c/37448] New: gcc 4.3.1 cannot compile big function grue at diku dot dk
                   ` (26 preceding siblings ...)
  2008-10-11 23:42 ` zadeck at gcc dot gnu dot org
@ 2009-01-24 10:26 ` rguenth at gcc dot gnu dot org
  2009-03-29 18:26 ` [Bug middle-end/37448] [4.3 4.5 " hubicka at gcc dot gnu dot org
                   ` (13 subsequent siblings)
  41 siblings, 0 replies; 43+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2009-01-24 10:26 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #27 from rguenth at gcc dot gnu dot org  2009-01-24 10:20 -------
GCC 4.3.3 is being released, adjusting target milestone.


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|4.3.3                       |4.3.4


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37448


^ permalink raw reply	[flat|nested] 43+ messages in thread

* [Bug middle-end/37448] [4.3 4.5 Regression] gcc 4.3.1 cannot compile big function
  2008-09-09 18:35 [Bug c/37448] New: gcc 4.3.1 cannot compile big function grue at diku dot dk
                   ` (27 preceding siblings ...)
  2009-01-24 10:26 ` rguenth at gcc dot gnu dot org
@ 2009-03-29 18:26 ` hubicka at gcc dot gnu dot org
  2009-03-29 18:31 ` hubicka at gcc dot gnu dot org
                   ` (12 subsequent siblings)
  41 siblings, 0 replies; 43+ messages in thread
From: hubicka at gcc dot gnu dot org @ 2009-03-29 18:26 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #28 from hubicka at gcc dot gnu dot org  2009-03-29 18:26 -------
The testcase is now failing on mainline.  Reason seems to be new pure-const
pass causing PRE to take unacceptable amount of time producing extraordinarily
large bitmaps.  I stoppped it after while and out of 1GB of memory use, 700MB
was PRE bitmap.

Honza


-- 

hubicka at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|[4.3 Regression] gcc 4.3.1  |[4.3 4.5 Regression] gcc
                   |cannot compile big function |4.3.1 cannot compile big
                   |                            |function


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37448


^ permalink raw reply	[flat|nested] 43+ messages in thread

* [Bug middle-end/37448] [4.3 4.5 Regression] gcc 4.3.1 cannot compile big function
  2008-09-09 18:35 [Bug c/37448] New: gcc 4.3.1 cannot compile big function grue at diku dot dk
                   ` (28 preceding siblings ...)
  2009-03-29 18:26 ` [Bug middle-end/37448] [4.3 4.5 " hubicka at gcc dot gnu dot org
@ 2009-03-29 18:31 ` hubicka at gcc dot gnu dot org
  2009-08-04 12:43 ` [Bug middle-end/37448] [4.3/4.5 " rguenth at gcc dot gnu dot org
                   ` (11 subsequent siblings)
  41 siblings, 0 replies; 43+ messages in thread
From: hubicka at gcc dot gnu dot org @ 2009-03-29 18:31 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #29 from hubicka at gcc dot gnu dot org  2009-03-29 18:31 -------
tree-ssa-pre.c:4201 (init_pre)                68  544319360       2960      
2920   35303438
tree-ssa-pre.c:590 (bitmap_set_new)       187851  167503080   38440200  
12734360  183944666
tree-ssa-pre.c:591 (bitmap_set_new)       187851   96183960   26228960  
14024680  223113273


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37448


^ permalink raw reply	[flat|nested] 43+ messages in thread

* [Bug middle-end/37448] [4.3/4.5 Regression] gcc 4.3.1 cannot compile big function
  2008-09-09 18:35 [Bug c/37448] New: gcc 4.3.1 cannot compile big function grue at diku dot dk
                   ` (29 preceding siblings ...)
  2009-03-29 18:31 ` hubicka at gcc dot gnu dot org
@ 2009-08-04 12:43 ` rguenth at gcc dot gnu dot org
  2010-01-26 11:35 ` [Bug middle-end/37448] [4.3/4.4/4.5 " rguenth at gcc dot gnu dot org
                   ` (10 subsequent siblings)
  41 siblings, 0 replies; 43+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2009-08-04 12:43 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #30 from rguenth at gcc dot gnu dot org  2009-08-04 12:29 -------
GCC 4.3.4 is being released, adjusting target milestone.


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|4.3.4                       |4.3.5


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37448


^ permalink raw reply	[flat|nested] 43+ messages in thread

* [Bug middle-end/37448] [4.3/4.4/4.5 Regression] gcc 4.3.1 cannot compile big function
  2008-09-09 18:35 [Bug c/37448] New: gcc 4.3.1 cannot compile big function grue at diku dot dk
                   ` (30 preceding siblings ...)
  2009-08-04 12:43 ` [Bug middle-end/37448] [4.3/4.5 " rguenth at gcc dot gnu dot org
@ 2010-01-26 11:35 ` rguenth at gcc dot gnu dot org
  2010-01-26 11:45 ` rguenth at gcc dot gnu dot org
                   ` (9 subsequent siblings)
  41 siblings, 0 replies; 43+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2010-01-26 11:35 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #31 from rguenth at gcc dot gnu dot org  2010-01-26 11:35 -------
Updated timings and memory:

> ~/bin/maxmem2.sh /usr/bin/time gcc-4.5 -S -o /dev/null lgwam.c
32.62user 1.48system 0:34.41elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+333822minor)pagefaults 0swaps
total: 1333745 kB

> ~/bin/maxmem2.sh /usr/bin/time /space/rguenther/install/gcc-4.4.3/bin/gcc -S -o /dev/null lgwam.c
35.01user 1.54system 0:36.89elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+329139minor)pagefaults 0swaps
total: 1306898 kB

> ~/bin/maxmem2.sh /usr/bin/time /space/rguenther/install/gcc-4.3.4/bin/gcc -S -o /dev/null lgwam.c
27.42user 1.83system 0:29.61elapsed 98%CPU (0avgtext+0avgdata 0maxresident)k
16inputs+0outputs (0major+374338minor)pagefaults 0swaps
total: 1341721 kB

> ~/bin/maxmem2.sh /usr/bin/time /space/rguenther/install/gcc-4.2.3/bin/gcc -S -o /dev/null lgwam.c
15.33user 0.80system 0:16.31elapsed 98%CPU (0avgtext+0avgdata 0maxresident)k
256inputs+0outputs (2major+197427minor)pagefaults 0swaps
total: 598733 kB


time-report for 4.5 trunk (only interesting parts):

 expand                :   6.72 (20%) usr   0.72 (26%) sys   7.45 (20%) wall 
140609 kB (35%) ggc
 integrated RA         :   8.56 (25%) usr   0.12 ( 4%) sys   8.76 (24%) wall   
5151 kB ( 1%) ggc
 reload                :   7.72 (23%) usr   0.22 ( 8%) sys   7.94 (21%) wall    
 TOTAL                 :  34.17             2.79            37.15            
402913 kB

memory-usage is still high compared to 4.2.

At -O2 the picture is similar (memory peaks at 2.5GB):

Execution times (seconds)
 garbage collection    :   0.64 ( 0%) usr   0.00 ( 0%) sys   0.64 ( 0%) wall   
   0 kB ( 0%) ggc
 callgraph construction:   0.31 ( 0%) usr   0.08 ( 1%) sys   0.39 ( 0%) wall  
20525 kB ( 3%) ggc
 callgraph optimization:   1.40 ( 1%) usr   0.03 ( 0%) sys   1.46 ( 1%) wall   
 639 kB ( 0%) ggc
 ipa cp                :   0.20 ( 0%) usr   0.00 ( 0%) sys   0.20 ( 0%) wall   
9607 kB ( 1%) ggc
 ipa reference         :   0.14 ( 0%) usr   0.00 ( 0%) sys   0.14 ( 0%) wall   
   0 kB ( 0%) ggc
 ipa pure const        :   0.33 ( 0%) usr   0.00 ( 0%) sys   0.32 ( 0%) wall   
 199 kB ( 0%) ggc
 cfg cleanup           :   0.92 ( 0%) usr   0.00 ( 0%) sys   0.89 ( 0%) wall   
1168 kB ( 0%) ggc
 trivially dead code   :   0.92 ( 0%) usr   0.00 ( 0%) sys   0.89 ( 0%) wall   
   0 kB ( 0%) ggc
 df multiple defs      :   0.86 ( 0%) usr   0.01 ( 0%) sys   0.88 ( 0%) wall   
   0 kB ( 0%) ggc
 df reaching defs      :   2.69 ( 1%) usr   0.96 (12%) sys   3.94 ( 2%) wall   
   0 kB ( 0%) ggc
 df live regs          :   7.15 ( 3%) usr   0.07 ( 1%) sys   7.13 ( 3%) wall   
   0 kB ( 0%) ggc
 df live&initialized regs:   3.33 ( 2%) usr   0.06 ( 1%) sys   3.36 ( 1%) wall 
     0 kB ( 0%) ggc
 df use-def / def-use chains:   0.85 ( 0%) usr   0.03 ( 0%) sys   0.88 ( 0%)
wall       0 kB ( 0%) ggc
 df reg dead/unused notes:   6.31 ( 3%) usr   0.05 ( 1%) sys  12.84 ( 6%) wall 
 18222 kB ( 2%) ggc
 register information  :   3.42 ( 2%) usr   0.00 ( 0%) sys   3.46 ( 2%) wall   
   0 kB ( 0%) ggc
 alias analysis        :   1.14 ( 1%) usr   0.01 ( 0%) sys   1.17 ( 1%) wall  
10447 kB ( 1%) ggc
 alias stmt walking    :   4.39 ( 2%) usr   0.26 ( 3%) sys   4.53 ( 2%) wall   
   0 kB ( 0%) ggc
 register scan         :   0.20 ( 0%) usr   0.00 ( 0%) sys   0.20 ( 0%) wall   
   7 kB ( 0%) ggc
 rebuild jump labels   :   0.53 ( 0%) usr   0.00 ( 0%) sys   0.51 ( 0%) wall   
   0 kB ( 0%) ggc
 preprocessing         :   0.64 ( 0%) usr   0.35 ( 4%) sys   0.93 ( 0%) wall  
23140 kB ( 3%) ggc
 lexical analysis      :   0.30 ( 0%) usr   0.54 ( 7%) sys   0.88 ( 0%) wall   
   0 kB ( 0%) ggc
 parser                :   0.69 ( 0%) usr   0.38 ( 5%) sys   1.09 ( 0%) wall  
38129 kB ( 5%) ggc
 inline heuristics     :   1.18 ( 1%) usr   0.01 ( 0%) sys   1.15 ( 1%) wall  
29832 kB ( 4%) ggc
 integration           :   3.42 ( 2%) usr   0.45 ( 6%) sys   3.66 ( 2%) wall 
175322 kB (22%) ggc
 tree gimplify         :   1.08 ( 1%) usr   0.09 ( 1%) sys   1.17 ( 1%) wall 
104718 kB (13%) ggc
 tree eh               :   0.04 ( 0%) usr   0.00 ( 0%) sys   0.04 ( 0%) wall   
   0 kB ( 0%) ggc
 tree CFG construction :   0.14 ( 0%) usr   0.01 ( 0%) sys   0.14 ( 0%) wall  
11817 kB ( 1%) ggc
 tree CFG cleanup      :   1.23 ( 1%) usr   0.00 ( 0%) sys   1.21 ( 1%) wall   
  60 kB ( 0%) ggc
 tree VRP              :   3.08 ( 1%) usr   0.01 ( 0%) sys   3.09 ( 1%) wall   
6719 kB ( 1%) ggc
 tree copy propagation :   1.22 ( 1%) usr   0.02 ( 0%) sys   1.14 ( 0%) wall   
 585 kB ( 0%) ggc
 tree find ref. vars   :   0.11 ( 0%) usr   0.01 ( 0%) sys   0.12 ( 0%) wall   
6045 kB ( 1%) ggc
 tree PTA              :   0.62 ( 0%) usr   0.00 ( 0%) sys   0.68 ( 0%) wall   
2178 kB ( 0%) ggc
 tree PHI insertion    :   0.04 ( 0%) usr   0.00 ( 0%) sys   0.04 ( 0%) wall   
 185 kB ( 0%) ggc
 tree SSA rewrite      :   2.92 ( 1%) usr   0.06 ( 1%) sys   3.04 ( 1%) wall  
54148 kB ( 7%) ggc
 tree SSA other        :   0.24 ( 0%) usr   0.08 ( 1%) sys   0.34 ( 0%) wall   
 589 kB ( 0%) ggc
 tree SSA incremental  :   3.46 ( 2%) usr   0.03 ( 0%) sys   3.50 ( 2%) wall   
 187 kB ( 0%) ggc
 tree operand scan     :   1.81 ( 1%) usr   0.31 ( 4%) sys   2.40 ( 1%) wall  
53424 kB ( 7%) ggc
 dominator optimization:   0.73 ( 0%) usr   0.00 ( 0%) sys   0.73 ( 0%) wall   
5666 kB ( 1%) ggc
 tree SRA              :   0.01 ( 0%) usr   0.01 ( 0%) sys   0.02 ( 0%) wall   
   2 kB ( 0%) ggc
 tree CCP              :   0.95 ( 0%) usr   0.00 ( 0%) sys   0.93 ( 0%) wall   
 617 kB ( 0%) ggc
 tree PHI const/copy prop:   0.02 ( 0%) usr   0.00 ( 0%) sys   0.02 ( 0%) wall 
     8 kB ( 0%) ggc
 tree reassociation    :   0.20 ( 0%) usr   0.00 ( 0%) sys   0.20 ( 0%) wall   
 280 kB ( 0%) ggc
 tree PRE              :   2.02 ( 1%) usr   1.01 (13%) sys   3.02 ( 1%) wall   
2092 kB ( 0%) ggc
 tree FRE              :   2.62 ( 1%) usr   1.12 (14%) sys   3.75 ( 2%) wall   
1674 kB ( 0%) ggc
 tree code sinking     :   0.15 ( 0%) usr   0.00 ( 0%) sys   0.17 ( 0%) wall   
1126 kB ( 0%) ggc
 tree linearize phis   :   0.07 ( 0%) usr   0.01 ( 0%) sys   0.09 ( 0%) wall   
   4 kB ( 0%) ggc
 tree forward propagate:   0.19 ( 0%) usr   0.00 ( 0%) sys   0.17 ( 0%) wall   
  75 kB ( 0%) ggc
 tree phiprop          :   0.01 ( 0%) usr   0.00 ( 0%) sys   0.01 ( 0%) wall   
   0 kB ( 0%) ggc
 tree conservative DCE :   0.61 ( 0%) usr   0.20 ( 2%) sys   0.91 ( 0%) wall   
   5 kB ( 0%) ggc
 tree aggressive DCE   :   0.65 ( 0%) usr   0.09 ( 1%) sys   0.80 ( 0%) wall   
1486 kB ( 0%) ggc
 tree buildin call DCE :   0.02 ( 0%) usr   0.00 ( 0%) sys   0.03 ( 0%) wall   
   0 kB ( 0%) ggc
 tree DSE              :   0.13 ( 0%) usr   0.00 ( 0%) sys   0.15 ( 0%) wall   
  34 kB ( 0%) ggc
 PHI merge             :   0.01 ( 0%) usr   0.00 ( 0%) sys   0.00 ( 0%) wall   
  26 kB ( 0%) ggc
 tree loop bounds      :   0.01 ( 0%) usr   0.00 ( 0%) sys   0.00 ( 0%) wall   
  17 kB ( 0%) ggc
 tree loop invariant motion:   0.04 ( 0%) usr   0.00 ( 0%) sys   0.04 ( 0%)
wall       4 kB ( 0%) ggc
 scev constant prop    :   0.00 ( 0%) usr   0.00 ( 0%) sys   0.02 ( 0%) wall   
 112 kB ( 0%) ggc
 complete unrolling    :   0.06 ( 0%) usr   0.00 ( 0%) sys   0.07 ( 0%) wall   
 379 kB ( 0%) ggc
 tree iv optimization  :   0.01 ( 0%) usr   0.00 ( 0%) sys   0.00 ( 0%) wall   
 473 kB ( 0%) ggc
 tree loop init        :   0.13 ( 0%) usr   0.00 ( 0%) sys   0.13 ( 0%) wall   
 390 kB ( 0%) ggc
 tree copy headers     :   0.02 ( 0%) usr   0.00 ( 0%) sys   0.01 ( 0%) wall   
 330 kB ( 0%) ggc
 tree SSA uncprop      :   0.03 ( 0%) usr   0.00 ( 0%) sys   0.04 ( 0%) wall   
   0 kB ( 0%) ggc
 tree rename SSA copies:   0.31 ( 0%) usr   0.00 ( 0%) sys   0.32 ( 0%) wall   
   0 kB ( 0%) ggc
 dominance frontiers   :   0.07 ( 0%) usr   0.00 ( 0%) sys   0.09 ( 0%) wall   
   0 kB ( 0%) ggc
 dominance computation :   1.26 ( 1%) usr   0.04 ( 0%) sys   1.31 ( 1%) wall   
   0 kB ( 0%) ggc
 control dependences   :   0.03 ( 0%) usr   0.00 ( 0%) sys   0.02 ( 0%) wall   
   0 kB ( 0%) ggc
 expand                :  10.92 ( 5%) usr   0.70 ( 9%) sys  11.74 ( 5%) wall 
124907 kB (16%) ggc
 forward prop          :   2.08 ( 1%) usr   0.04 ( 0%) sys   2.06 ( 1%) wall   
3631 kB ( 0%) ggc
 CSE                   :   3.19 ( 1%) usr   0.00 ( 0%) sys   3.14 ( 1%) wall   
 512 kB ( 0%) ggc
 dead code elimination :   1.24 ( 1%) usr   0.01 ( 0%) sys   1.25 ( 1%) wall   
   0 kB ( 0%) ggc
 dead store elim1      :   1.26 ( 1%) usr   0.04 ( 0%) sys   1.33 ( 1%) wall   
 965 kB ( 0%) ggc
 dead store elim2      :   1.51 ( 1%) usr   0.02 ( 0%) sys   1.54 ( 1%) wall   
7466 kB ( 1%) ggc
 loop analysis         :   0.03 ( 0%) usr   0.00 ( 0%) sys   0.05 ( 0%) wall   
 229 kB ( 0%) ggc
 loop invariant motion :   0.10 ( 0%) usr   0.03 ( 0%) sys   0.13 ( 0%) wall   
   2 kB ( 0%) ggc
 CPROP                 :   0.18 ( 0%) usr   0.00 ( 0%) sys   0.20 ( 0%) wall   
 452 kB ( 0%) ggc
 PRE                   :   0.06 ( 0%) usr   0.00 ( 0%) sys   0.07 ( 0%) wall   
  15 kB ( 0%) ggc
 CSE 2                 :   3.20 ( 1%) usr   0.00 ( 0%) sys   3.22 ( 1%) wall   
 494 kB ( 0%) ggc
 branch prediction     :   0.28 ( 0%) usr   0.00 ( 0%) sys   0.30 ( 0%) wall   
2539 kB ( 0%) ggc
 combiner              :   1.42 ( 1%) usr   0.02 ( 0%) sys   1.42 ( 1%) wall  
11673 kB ( 1%) ggc
 if-conversion         :   0.19 ( 0%) usr   0.00 ( 0%) sys   0.20 ( 0%) wall   
 338 kB ( 0%) ggc
 regmove               :   0.39 ( 0%) usr   0.00 ( 0%) sys   0.35 ( 0%) wall   
   0 kB ( 0%) ggc
 integrated RA         :  78.17 (37%) usr   0.46 ( 6%) sys  78.94 (34%) wall   
4788 kB ( 1%) ggc
 reload                :  25.79 (12%) usr   0.07 ( 1%) sys  26.09 (11%) wall  
26499 kB ( 3%) ggc
 reload CSE regs       :   3.00 ( 1%) usr   0.05 ( 1%) sys   3.08 ( 1%) wall  
15550 kB ( 2%) ggc
 thread pro- & epilogue:   1.39 ( 1%) usr   0.01 ( 0%) sys   1.48 ( 1%) wall   
1006 kB ( 0%) ggc
 if-conversion 2       :   0.06 ( 0%) usr   0.00 ( 0%) sys   0.08 ( 0%) wall   
 138 kB ( 0%) ggc
 combine stack adjustments:   0.08 ( 0%) usr   0.00 ( 0%) sys   0.09 ( 0%) wall
      0 kB ( 0%) ggc
 peephole 2            :   0.67 ( 0%) usr   0.01 ( 0%) sys   0.69 ( 0%) wall   
3275 kB ( 0%) ggc
 hard reg cprop        :   1.33 ( 1%) usr   0.02 ( 0%) sys   1.32 ( 1%) wall   
 979 kB ( 0%) ggc
 scheduling 2          :   6.59 ( 3%) usr   0.05 ( 1%) sys   6.63 ( 3%) wall   
 294 kB ( 0%) ggc
 machine dep reorg     :   0.69 ( 0%) usr   0.01 ( 0%) sys   0.68 ( 0%) wall   
  10 kB ( 0%) ggc
 reorder blocks        :   0.34 ( 0%) usr   0.00 ( 0%) sys   0.39 ( 0%) wall   
2878 kB ( 0%) ggc
 final                 :   1.63 ( 1%) usr   0.04 ( 0%) sys   1.64 ( 1%) wall   
 201 kB ( 0%) ggc
 tree if-combine       :   0.01 ( 0%) usr   0.01 ( 0%) sys   0.03 ( 0%) wall   
   1 kB ( 0%) ggc
 plugin execution      :   0.00 ( 0%) usr   0.03 ( 0%) sys   0.04 ( 0%) wall   
   0 kB ( 0%) ggc
 TOTAL                 : 214.12             8.02           229.70            
793292 kB

At -O1 we seem to never finish early inlining into testsuite though...
(the loop over all callees calling check-inline-limits which again
loops over all callees looks quadratic - at least because we do not
not consider the duplicates in the caller?  We seem to be looping
over edges but check limits for !one_only.  Why do we not consider
edges individually and avoid calling cgraph_check_inline_limits
with !one_only at all?).


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|[4.3/4.5 Regression] gcc    |[4.3/4.4/4.5 Regression] gcc
                   |4.3.1 cannot compile big    |4.3.1 cannot compile big
                   |function                    |function


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37448


^ permalink raw reply	[flat|nested] 43+ messages in thread

* [Bug middle-end/37448] [4.3/4.4/4.5 Regression] gcc 4.3.1 cannot compile big function
  2008-09-09 18:35 [Bug c/37448] New: gcc 4.3.1 cannot compile big function grue at diku dot dk
                   ` (31 preceding siblings ...)
  2010-01-26 11:35 ` [Bug middle-end/37448] [4.3/4.4/4.5 " rguenth at gcc dot gnu dot org
@ 2010-01-26 11:45 ` rguenth at gcc dot gnu dot org
  2010-01-26 12:34 ` rguenth at gcc dot gnu dot org
                   ` (8 subsequent siblings)
  41 siblings, 0 replies; 43+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2010-01-26 11:45 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #32 from rguenth at gcc dot gnu dot org  2010-01-26 11:44 -------
Finally it finished.  -O1:

 inline heuristics     : 810.76 (63%) usr   4.58 (24%) sys 957.16 (53%) wall   
   0 kB ( 0%) ggc
 integrated RA         : 115.69 ( 9%) usr   3.86 (20%) sys 290.09 (16%) wall   
5979 kB ( 1%) ggc
 reload                : 312.19 (24%) usr   4.99 (26%) sys 453.32 (25%) wall   
5139 kB ( 1%) ggc
 TOTAL                 :1290.20            19.28          1807.46            
486943 kB

ugh.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37448


^ permalink raw reply	[flat|nested] 43+ messages in thread

* [Bug middle-end/37448] [4.3/4.4/4.5 Regression] gcc 4.3.1 cannot compile big function
  2008-09-09 18:35 [Bug c/37448] New: gcc 4.3.1 cannot compile big function grue at diku dot dk
                   ` (32 preceding siblings ...)
  2010-01-26 11:45 ` rguenth at gcc dot gnu dot org
@ 2010-01-26 12:34 ` rguenth at gcc dot gnu dot org
  2010-01-26 16:05 ` hubicka at ucw dot cz
                   ` (7 subsequent siblings)
  41 siblings, 0 replies; 43+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2010-01-26 12:34 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #33 from rguenth at gcc dot gnu dot org  2010-01-26 12:33 -------
The whole early-inlining stuff is made ugly because we jump through hoops
to handle callgraph cycles where some callees may not yet be in SSA form.
If we do not want to go the route to go into SSA for all functions before
starting early IPA passes then we at least should do so for callgraph SCCs.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37448


^ permalink raw reply	[flat|nested] 43+ messages in thread

* [Bug middle-end/37448] [4.3/4.4/4.5 Regression] gcc 4.3.1 cannot compile big function
  2008-09-09 18:35 [Bug c/37448] New: gcc 4.3.1 cannot compile big function grue at diku dot dk
                   ` (33 preceding siblings ...)
  2010-01-26 12:34 ` rguenth at gcc dot gnu dot org
@ 2010-01-26 16:05 ` hubicka at ucw dot cz
  2010-01-28 16:21 ` rguenth at gcc dot gnu dot org
                   ` (6 subsequent siblings)
  41 siblings, 0 replies; 43+ messages in thread
From: hubicka at ucw dot cz @ 2010-01-26 16:05 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #34 from hubicka at ucw dot cz  2010-01-26 16:05 -------
Subject: Re:  [4.3/4.4/4.5 Regression] gcc 4.3.1 cannot compile big function

> The whole early-inlining stuff is made ugly because we jump through hoops
> to handle callgraph cycles where some callees may not yet be in SSA form.

Hmm, it don't seem to me that keeping the reverse postorder is bad idea
here (not that going to SSA earlier would not be good idea for different
reasons).  Still top-down inliner needs to deal with cycles one way or
another.  I will take a look what is taking quadratic time.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37448


^ permalink raw reply	[flat|nested] 43+ messages in thread

* [Bug middle-end/37448] [4.3/4.4/4.5 Regression] gcc 4.3.1 cannot compile big function
  2008-09-09 18:35 [Bug c/37448] New: gcc 4.3.1 cannot compile big function grue at diku dot dk
                   ` (34 preceding siblings ...)
  2010-01-26 16:05 ` hubicka at ucw dot cz
@ 2010-01-28 16:21 ` rguenth at gcc dot gnu dot org
  2010-01-28 16:42 ` rguenth at gcc dot gnu dot org
                   ` (5 subsequent siblings)
  41 siblings, 0 replies; 43+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2010-01-28 16:21 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #35 from rguenth at gcc dot gnu dot org  2010-01-28 16:21 -------
I have a fix for the inline-heuristic slowness.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37448


^ permalink raw reply	[flat|nested] 43+ messages in thread

* [Bug middle-end/37448] [4.3/4.4/4.5 Regression] gcc 4.3.1 cannot compile big function
  2008-09-09 18:35 [Bug c/37448] New: gcc 4.3.1 cannot compile big function grue at diku dot dk
                   ` (35 preceding siblings ...)
  2010-01-28 16:21 ` rguenth at gcc dot gnu dot org
@ 2010-01-28 16:42 ` rguenth at gcc dot gnu dot org
  2010-01-28 16:50 ` rguenth at gcc dot gnu dot org
                   ` (4 subsequent siblings)
  41 siblings, 0 replies; 43+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2010-01-28 16:42 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #36 from rguenth at gcc dot gnu dot org  2010-01-28 16:42 -------
With the patch:

 inline heuristics     :   0.77 ( 0%) usr   0.01 ( 0%) sys   1.37 ( 0%) wall   
   0 kB ( 0%) ggc
 expand                :   9.42 ( 2%) usr   0.70 (11%) sys  10.36 ( 2%) wall 
138780 kB (29%) ggc
 integrated RA         : 115.01 (24%) usr   1.33 (21%) sys 117.04 (24%) wall   
5975 kB ( 1%) ggc
 reload                : 311.26 (65%) usr   0.44 ( 7%) sys 312.77 (64%) wall   
5139 kB ( 1%) ggc
 TOTAL                 : 478.22             6.28           491.79            
486545 kB


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37448


^ permalink raw reply	[flat|nested] 43+ messages in thread

* [Bug middle-end/37448] [4.3/4.4/4.5 Regression] gcc 4.3.1 cannot compile big function
  2008-09-09 18:35 [Bug c/37448] New: gcc 4.3.1 cannot compile big function grue at diku dot dk
                   ` (36 preceding siblings ...)
  2010-01-28 16:42 ` rguenth at gcc dot gnu dot org
@ 2010-01-28 16:50 ` rguenth at gcc dot gnu dot org
  2010-01-28 16:58 ` rguenth at gcc dot gnu dot org
                   ` (3 subsequent siblings)
  41 siblings, 0 replies; 43+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2010-01-28 16:50 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #37 from rguenth at gcc dot gnu dot org  2010-01-28 16:50 -------
But it miscompares.  Honza?!

Index: gcc/ipa-inline.c
===================================================================
*** gcc/ipa-inline.c    (revision 156321)
--- gcc/ipa-inline.c    (working copy)
*************** cgraph_decide_inlining_incrementally (st
*** 1510,1515 ****
--- 1510,1517 ----
        /* Never inline regular functions into always-inline functions
         during incremental inlining.  */
        && !node->local.disregard_inline_limits)
+     {
+       bitmap visited = BITMAP_ALLOC (NULL);
      for (e = node->callees; e; e = e->next_callee)
        {
          int allowed_growth = 0;
*************** cgraph_decide_inlining_incrementally (st
*** 1517,1522 ****
--- 1519,1528 ----
            || !e->inline_failed
            || e->callee->local.disregard_inline_limits)
          continue;
+       /* We are inlining a function to all call-sites in node
+          or to none.  So visit each candidate only once.  */
+       if (!bitmap_set_bit (visited, e->callee->uid))
+         continue;
        if (dump_file)
          fprintf (dump_file, "Considering inline candidate %s.\n",
                   cgraph_node_name (e->callee));
*************** cgraph_decide_inlining_incrementally (st
*** 1601,1606 ****
--- 1607,1614 ----
        if (cgraph_default_inline_p (e->callee, &failed_reason))
          inlined |= try_inline (e, mode, depth);
        }
+     BITMAP_FREE (visited);
+     }
    node->aux = (void *)(size_t) old_mode;
    return inlined;
  }


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37448


^ permalink raw reply	[flat|nested] 43+ messages in thread

* [Bug middle-end/37448] [4.3/4.4/4.5 Regression] gcc 4.3.1 cannot compile big function
  2008-09-09 18:35 [Bug c/37448] New: gcc 4.3.1 cannot compile big function grue at diku dot dk
                   ` (37 preceding siblings ...)
  2010-01-28 16:50 ` rguenth at gcc dot gnu dot org
@ 2010-01-28 16:58 ` rguenth at gcc dot gnu dot org
  2010-01-29 11:26 ` rguenth at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  41 siblings, 0 replies; 43+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2010-01-28 16:58 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #38 from rguenth at gcc dot gnu dot org  2010-01-28 16:58 -------
Nope, bootstrap is generally broken.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37448


^ permalink raw reply	[flat|nested] 43+ messages in thread

* [Bug middle-end/37448] [4.3/4.4/4.5 Regression] gcc 4.3.1 cannot compile big function
  2008-09-09 18:35 [Bug c/37448] New: gcc 4.3.1 cannot compile big function grue at diku dot dk
                   ` (38 preceding siblings ...)
  2010-01-28 16:58 ` rguenth at gcc dot gnu dot org
@ 2010-01-29 11:26 ` rguenth at gcc dot gnu dot org
  2010-01-29 20:54 ` hubicka at ucw dot cz
  2010-05-22 18:26 ` [Bug middle-end/37448] [4.3/4.4/4.5/4.6 " rguenth at gcc dot gnu dot org
  41 siblings, 0 replies; 43+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2010-01-29 11:26 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #39 from rguenth at gcc dot gnu dot org  2010-01-29 11:26 -------
Subject: Bug 37448

Author: rguenth
Date: Fri Jan 29 11:26:27 2010
New Revision: 156343

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=156343
Log:
2010-01-29  Richard Guenther  <rguenther@suse.de>

        PR middle-end/37448
        * ipa-inline.c (cgraph_decide_inlining_incrementally): Avoid
        quadratic behavior in most cases.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/ipa-inline.c


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37448


^ permalink raw reply	[flat|nested] 43+ messages in thread

* [Bug middle-end/37448] [4.3/4.4/4.5 Regression] gcc 4.3.1 cannot compile big function
  2008-09-09 18:35 [Bug c/37448] New: gcc 4.3.1 cannot compile big function grue at diku dot dk
                   ` (39 preceding siblings ...)
  2010-01-29 11:26 ` rguenth at gcc dot gnu dot org
@ 2010-01-29 20:54 ` hubicka at ucw dot cz
  2010-05-22 18:26 ` [Bug middle-end/37448] [4.3/4.4/4.5/4.6 " rguenth at gcc dot gnu dot org
  41 siblings, 0 replies; 43+ messages in thread
From: hubicka at ucw dot cz @ 2010-01-29 20:54 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #40 from hubicka at ucw dot cz  2010-01-29 20:54 -------
Subject: Re:  [4.3/4.4/4.5 Regression] gcc 4.3.1 cannot compile big function

> But it miscompares.  Honza?!
Patch seems sane to me, so I guess it was other bootstrap issue.
I was actually working on similar fix yesterday just in more general
setting.  Similar issue can be triggered with main inliner too, that
might provoke need to later make this caching global, but lets wait for
testcase since there might be other issues if you get that many inline
candidates and inlined calls.

Thanks for looking into this,
Honza


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37448


^ permalink raw reply	[flat|nested] 43+ messages in thread

* [Bug middle-end/37448] [4.3/4.4/4.5/4.6 Regression] gcc 4.3.1 cannot compile big function
  2008-09-09 18:35 [Bug c/37448] New: gcc 4.3.1 cannot compile big function grue at diku dot dk
                   ` (40 preceding siblings ...)
  2010-01-29 20:54 ` hubicka at ucw dot cz
@ 2010-05-22 18:26 ` rguenth at gcc dot gnu dot org
  41 siblings, 0 replies; 43+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2010-05-22 18:26 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #41 from rguenth at gcc dot gnu dot org  2010-05-22 18:12 -------
GCC 4.3.5 is being released, adjusting target milestone.


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|4.3.5                       |4.3.6


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37448


^ permalink raw reply	[flat|nested] 43+ messages in thread

end of thread, other threads:[~2010-05-22 18:26 UTC | newest]

Thread overview: 43+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-09-09 18:35 [Bug c/37448] New: gcc 4.3.1 cannot compile big function grue at diku dot dk
2008-09-10  8:02 ` [Bug middle-end/37448] " grue at diku dot dk
2008-09-10  8:03 ` grue at diku dot dk
2008-09-10  8:04 ` rguenth at gcc dot gnu dot org
2008-09-10  8:12 ` [Bug middle-end/37448] [4.3 Regression] " rguenth at gcc dot gnu dot org
2008-09-10  9:58 ` hubicka at gcc dot gnu dot org
2008-09-10 10:04 ` hubicka at gcc dot gnu dot org
2008-09-10 11:33 ` hubicka at gcc dot gnu dot org
2008-09-10 11:40 ` hubicka at gcc dot gnu dot org
2008-09-10 21:17 ` vmakarov at redhat dot com
2008-09-11 12:37 ` hubicka at gcc dot gnu dot org
2008-09-11 12:41 ` hubicka at gcc dot gnu dot org
2008-09-13 16:00 ` hjl at gcc dot gnu dot org
2008-09-17 17:50 ` lucier at math dot purdue dot edu
2008-09-18  1:31 ` lucier at math dot purdue dot edu
2008-09-18 16:50 ` hubicka at gcc dot gnu dot org
2008-09-18 17:31 ` hubicka at gcc dot gnu dot org
2008-09-18 18:19 ` hubicka at gcc dot gnu dot org
2008-09-18 21:13 ` hubicka at gcc dot gnu dot org
2008-09-20 14:44 ` rguenth at gcc dot gnu dot org
2008-09-26  0:17 ` vmakarov at gcc dot gnu dot org
2008-09-26 21:14 ` hubicka at gcc dot gnu dot org
2008-09-26 22:16 ` hubicka at gcc dot gnu dot org
2008-09-26 23:36 ` hubicka at gcc dot gnu dot org
2008-09-27 12:45 ` zadeck at naturalbridge dot com
2008-10-08  2:55 ` zadeck at gcc dot gnu dot org
2008-10-08  3:39 ` lucier at math dot purdue dot edu
2008-10-11 23:42 ` zadeck at gcc dot gnu dot org
2009-01-24 10:26 ` rguenth at gcc dot gnu dot org
2009-03-29 18:26 ` [Bug middle-end/37448] [4.3 4.5 " hubicka at gcc dot gnu dot org
2009-03-29 18:31 ` hubicka at gcc dot gnu dot org
2009-08-04 12:43 ` [Bug middle-end/37448] [4.3/4.5 " rguenth at gcc dot gnu dot org
2010-01-26 11:35 ` [Bug middle-end/37448] [4.3/4.4/4.5 " rguenth at gcc dot gnu dot org
2010-01-26 11:45 ` rguenth at gcc dot gnu dot org
2010-01-26 12:34 ` rguenth at gcc dot gnu dot org
2010-01-26 16:05 ` hubicka at ucw dot cz
2010-01-28 16:21 ` rguenth at gcc dot gnu dot org
2010-01-28 16:42 ` rguenth at gcc dot gnu dot org
2010-01-28 16:50 ` rguenth at gcc dot gnu dot org
2010-01-28 16:58 ` rguenth at gcc dot gnu dot org
2010-01-29 11:26 ` rguenth at gcc dot gnu dot org
2010-01-29 20:54 ` hubicka at ucw dot cz
2010-05-22 18:26 ` [Bug middle-end/37448] [4.3/4.4/4.5/4.6 " rguenth at gcc dot gnu dot org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).