public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/12850] New: memory consumption for heavy template instantiations tripled since 3.3
@ 2003-10-30 23:42 jens dot maurer at gmx dot net
  2003-10-30 23:43 ` [Bug c++/12850] " jens dot maurer at gmx dot net
                   ` (43 more replies)
  0 siblings, 44 replies; 47+ messages in thread
From: jens dot maurer at gmx dot net @ 2003-10-30 23:42 UTC (permalink / raw)
  To: gcc-bugs

PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.

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

           Summary: memory consumption for heavy template instantiations
                    tripled since 3.3
           Product: gcc
           Version: 3.4
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: jens dot maurer at gmx dot net
                CC: gcc-bugs at gcc dot gnu dot org
 GCC build triplet: i686-pc-linux-gnu
  GCC host triplet: i686-pc-linux-gnu
GCC target triplet: i686-pc-linux-gnu

When compiling the attached program with g++ 3.3, the compiler takes about 80 MB
of main memory on Intel/x86. When compiling it with g++ 3.4, the compiler takes
> 400 MB and eventually crashes (potentially due to the Linux kernel killing
processes due to out-of-memory).
Since standard libraries are different between 3.3 and 3.4, I provide two
preprocessed files.  (This is boost random number library random_test.cpp.)

g++ -v rt-3.3.ii
[...]
Configured with: ../gcc-3.3/configure --prefix=/usr/local --enable-threads
--enable-shared
Thread model: posix
gcc version 3.3
(ok)

/opt/exp/gcc-3.4/bin/g++ -v rt-3.4.ii
[...]
g++: Internal error: Killed (program cc1plus)
Please submit a full bug report.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.


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

* [Bug c++/12850] memory consumption for heavy template instantiations tripled since 3.3
  2003-10-30 23:42 [Bug c++/12850] New: memory consumption for heavy template instantiations tripled since 3.3 jens dot maurer at gmx dot net
@ 2003-10-30 23:43 ` jens dot maurer at gmx dot net
  2003-10-30 23:44 ` jens dot maurer at gmx dot net
                   ` (42 subsequent siblings)
  43 siblings, 0 replies; 47+ messages in thread
From: jens dot maurer at gmx dot net @ 2003-10-30 23:43 UTC (permalink / raw)
  To: gcc-bugs

PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.

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



------- Additional Comments From jens dot maurer at gmx dot net  2003-10-30 23:42 -------
Created an attachment (id=5021)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=5021&action=view)
preprocessed random_test.cpp for g++ 3.3


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

* [Bug c++/12850] memory consumption for heavy template instantiations tripled since 3.3
  2003-10-30 23:42 [Bug c++/12850] New: memory consumption for heavy template instantiations tripled since 3.3 jens dot maurer at gmx dot net
  2003-10-30 23:43 ` [Bug c++/12850] " jens dot maurer at gmx dot net
@ 2003-10-30 23:44 ` jens dot maurer at gmx dot net
  2003-10-31  0:04 ` jens dot maurer at gmx dot net
                   ` (41 subsequent siblings)
  43 siblings, 0 replies; 47+ messages in thread
From: jens dot maurer at gmx dot net @ 2003-10-30 23:44 UTC (permalink / raw)
  To: gcc-bugs

PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.

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



------- Additional Comments From jens dot maurer at gmx dot net  2003-10-30 23:43 -------
Created an attachment (id=5022)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=5022&action=view)
preprocessed random_test.cpp for g++ 3.4


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

* [Bug c++/12850] memory consumption for heavy template instantiations tripled since 3.3
  2003-10-30 23:42 [Bug c++/12850] New: memory consumption for heavy template instantiations tripled since 3.3 jens dot maurer at gmx dot net
  2003-10-30 23:43 ` [Bug c++/12850] " jens dot maurer at gmx dot net
  2003-10-30 23:44 ` jens dot maurer at gmx dot net
@ 2003-10-31  0:04 ` jens dot maurer at gmx dot net
  2003-10-31  1:39 ` [Bug c++/12850] [3.4 Regression] " pinskia at gcc dot gnu dot org
                   ` (40 subsequent siblings)
  43 siblings, 0 replies; 47+ messages in thread
From: jens dot maurer at gmx dot net @ 2003-10-31  0:04 UTC (permalink / raw)
  To: gcc-bugs

PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.

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


jens dot maurer at gmx dot net changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Attachment #5021|text/plain                  |application/x-gunzip
          mime type|                            |


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

* [Bug c++/12850] [3.4 Regression] memory consumption for heavy template instantiations tripled since 3.3
  2003-10-30 23:42 [Bug c++/12850] New: memory consumption for heavy template instantiations tripled since 3.3 jens dot maurer at gmx dot net
                   ` (2 preceding siblings ...)
  2003-10-31  0:04 ` jens dot maurer at gmx dot net
@ 2003-10-31  1:39 ` pinskia at gcc dot gnu dot org
  2003-12-19  9:41 ` pinskia at gcc dot gnu dot org
                   ` (39 subsequent siblings)
  43 siblings, 0 replies; 47+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2003-10-31  1:39 UTC (permalink / raw)
  To: gcc-bugs

PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.

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


pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|                            |1
           Keywords|                            |compile-time-hog, ice-on-
                   |                            |valid-code, memory-hog
   Last reconfirmed|0000-00-00 00:00:00         |2003-10-31 01:13:03
               date|                            |
            Summary|memory consumption for heavy|[3.4 Regression] memory
                   |template instantiations     |consumption for heavy
                   |tripled since 3.3           |template instantiations
                   |                            |tripled since 3.3
   Target Milestone|---                         |3.4


------- Additional Comments From pinskia at gcc dot gnu dot org  2003-10-31 01:13 -------
My 3.3.1 (20030707) takes about 260M of memory while 3.4 (20031030) takes about 420M of 
memory.


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

* [Bug c++/12850] [3.4 Regression] memory consumption for heavy template instantiations tripled since 3.3
  2003-10-30 23:42 [Bug c++/12850] New: memory consumption for heavy template instantiations tripled since 3.3 jens dot maurer at gmx dot net
                   ` (3 preceding siblings ...)
  2003-10-31  1:39 ` [Bug c++/12850] [3.4 Regression] " pinskia at gcc dot gnu dot org
@ 2003-12-19  9:41 ` pinskia at gcc dot gnu dot org
  2004-01-14 11:37   ` Jan Hubicka
  2004-01-14 11:38   ` Jan Hubicka
  2003-12-29 17:55 ` pinskia at gcc dot gnu dot org
                   ` (38 subsequent siblings)
  43 siblings, 2 replies; 47+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2003-12-19  9:41 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pinskia at gcc dot gnu dot org  2003-12-19 08:43 -------
It goes up to abot >480MB on powerpc-apple-darwin, then drops to around 250MB.

-- 


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


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

* [Bug c++/12850] [3.4 Regression] memory consumption for heavy template instantiations tripled since 3.3
  2003-10-30 23:42 [Bug c++/12850] New: memory consumption for heavy template instantiations tripled since 3.3 jens dot maurer at gmx dot net
                   ` (4 preceding siblings ...)
  2003-12-19  9:41 ` pinskia at gcc dot gnu dot org
@ 2003-12-29 17:55 ` pinskia at gcc dot gnu dot org
  2004-01-05  6:43 ` pinskia at gcc dot gnu dot org
                   ` (37 subsequent siblings)
  43 siblings, 0 replies; 47+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2003-12-29 17:55 UTC (permalink / raw)
  To: gcc-bugs



-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
           Severity|normal                      |critical


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


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

* [Bug c++/12850] [3.4 Regression] memory consumption for heavy template instantiations tripled since 3.3
  2003-10-30 23:42 [Bug c++/12850] New: memory consumption for heavy template instantiations tripled since 3.3 jens dot maurer at gmx dot net
                   ` (5 preceding siblings ...)
  2003-12-29 17:55 ` pinskia at gcc dot gnu dot org
@ 2004-01-05  6:43 ` pinskia at gcc dot gnu dot org
  2004-01-05  6:58 ` pinskia at gcc dot gnu dot org
                   ` (36 subsequent siblings)
  43 siblings, 0 replies; 47+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2004-01-05  6:43 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pinskia at gcc dot gnu dot org  2004-01-05 06:43 -------
My patches for saving space in C++ help but it does not fix the problem.

-- 


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


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

* [Bug c++/12850] [3.4 Regression] memory consumption for heavy template instantiations tripled since 3.3
  2003-10-30 23:42 [Bug c++/12850] New: memory consumption for heavy template instantiations tripled since 3.3 jens dot maurer at gmx dot net
                   ` (6 preceding siblings ...)
  2004-01-05  6:43 ` pinskia at gcc dot gnu dot org
@ 2004-01-05  6:58 ` pinskia at gcc dot gnu dot org
  2004-01-05  7:29 ` pinskia at gcc dot gnu dot org
                   ` (35 subsequent siblings)
  43 siblings, 0 replies; 47+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2004-01-05  6:58 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pinskia at gcc dot gnu dot org  2004-01-05 06:58 -------
I think the problem is that 3.4 is not able to collect garbage while instantiating the 
templates.  Calling ggc_collect while instantiating the templates and at the right level, I 
get
{GC 95280k -> 45466k}
which shows that it gets rid of half of the memory but it crashes right after doing that.

-- 


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


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

* [Bug c++/12850] [3.4 Regression] memory consumption for heavy template instantiations tripled since 3.3
  2003-10-30 23:42 [Bug c++/12850] New: memory consumption for heavy template instantiations tripled since 3.3 jens dot maurer at gmx dot net
                   ` (7 preceding siblings ...)
  2004-01-05  6:58 ` pinskia at gcc dot gnu dot org
@ 2004-01-05  7:29 ` pinskia at gcc dot gnu dot org
  2004-01-06 23:18 ` pinskia at gcc dot gnu dot org
                   ` (34 subsequent siblings)
  43 siblings, 0 replies; 47+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2004-01-05  7:29 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pinskia at gcc dot gnu dot org  2004-01-05 07:29 -------
I think I have a patch for this, I just call ggc_collect in instantiate_decl if it is okay to do so.

-- 


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


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

* [Bug c++/12850] [3.4 Regression] memory consumption for heavy template instantiations tripled since 3.3
  2003-10-30 23:42 [Bug c++/12850] New: memory consumption for heavy template instantiations tripled since 3.3 jens dot maurer at gmx dot net
                   ` (8 preceding siblings ...)
  2004-01-05  7:29 ` pinskia at gcc dot gnu dot org
@ 2004-01-06 23:18 ` pinskia at gcc dot gnu dot org
  2004-01-07  7:27 ` pinskia at gcc dot gnu dot org
                   ` (33 subsequent siblings)
  43 siblings, 0 replies; 47+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2004-01-06 23:18 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pinskia at gcc dot gnu dot org  2004-01-06 23:18 -------
Mine, I think.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|unassigned at gcc dot gnu   |pinskia at gcc dot gnu dot
                   |dot org                     |org
             Status|NEW                         |ASSIGNED


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


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

* [Bug c++/12850] [3.4 Regression] memory consumption for heavy template instantiations tripled since 3.3
  2003-10-30 23:42 [Bug c++/12850] New: memory consumption for heavy template instantiations tripled since 3.3 jens dot maurer at gmx dot net
                   ` (9 preceding siblings ...)
  2004-01-06 23:18 ` pinskia at gcc dot gnu dot org
@ 2004-01-07  7:27 ` pinskia at gcc dot gnu dot org
  2004-01-07  8:03 ` steven at gcc dot gnu dot org
                   ` (32 subsequent siblings)
  43 siblings, 0 replies; 47+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2004-01-07  7:27 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pinskia at gcc dot gnu dot org  2004-01-07 07:27 -------
the patch which I had in mind did not work, there is too much stored on the stack for this 
to work correctly.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|pinskia at gcc dot gnu dot  |unassigned at gcc dot gnu
                   |org                         |dot org
             Status|ASSIGNED                    |NEW


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


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

* [Bug c++/12850] [3.4 Regression] memory consumption for heavy template instantiations tripled since 3.3
  2003-10-30 23:42 [Bug c++/12850] New: memory consumption for heavy template instantiations tripled since 3.3 jens dot maurer at gmx dot net
                   ` (10 preceding siblings ...)
  2004-01-07  7:27 ` pinskia at gcc dot gnu dot org
@ 2004-01-07  8:03 ` steven at gcc dot gnu dot org
  2004-01-10 13:36 ` hubicka at gcc dot gnu dot org
                   ` (31 subsequent siblings)
  43 siblings, 0 replies; 47+ messages in thread
From: steven at gcc dot gnu dot org @ 2004-01-07  8:03 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From steven at gcc dot gnu dot org  2004-01-07 08:03 -------
interesting... 

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |steven at gcc dot gnu dot
                   |                            |org


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


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

* [Bug c++/12850] [3.4 Regression] memory consumption for heavy template instantiations tripled since 3.3
  2003-10-30 23:42 [Bug c++/12850] New: memory consumption for heavy template instantiations tripled since 3.3 jens dot maurer at gmx dot net
                   ` (11 preceding siblings ...)
  2004-01-07  8:03 ` steven at gcc dot gnu dot org
@ 2004-01-10 13:36 ` hubicka at gcc dot gnu dot org
  2004-01-10 17:12 ` pinskia at gcc dot gnu dot org
                   ` (30 subsequent siblings)
  43 siblings, 0 replies; 47+ messages in thread
From: hubicka at gcc dot gnu dot org @ 2004-01-10 13:36 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From hubicka at gcc dot gnu dot org  2004-01-10 13:36 -------
I am testing patch that peaks at 28MB with unit-at-a-time.  It seems to be
possible to deffer instantiation of all templates to very last pass where we can
ggc collect.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|unassigned at gcc dot gnu   |jh at suse dot cz
                   |dot org                     |
             Status|NEW                         |ASSIGNED


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


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

* [Bug c++/12850] [3.4 Regression] memory consumption for heavy template instantiations tripled since 3.3
  2003-10-30 23:42 [Bug c++/12850] New: memory consumption for heavy template instantiations tripled since 3.3 jens dot maurer at gmx dot net
                   ` (12 preceding siblings ...)
  2004-01-10 13:36 ` hubicka at gcc dot gnu dot org
@ 2004-01-10 17:12 ` pinskia at gcc dot gnu dot org
  2004-01-13 23:59 ` cvs-commit at gcc dot gnu dot org
                   ` (29 subsequent siblings)
  43 siblings, 0 replies; 47+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2004-01-10 17:12 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pinskia at gcc dot gnu dot org  2004-01-10 17:12 -------
Patch here: <http://gcc.gnu.org/ml/gcc-patches/2004-01/msg00772.html>.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |patch


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


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

* [Bug c++/12850] [3.4 Regression] memory consumption for heavy template instantiations tripled since 3.3
  2003-10-30 23:42 [Bug c++/12850] New: memory consumption for heavy template instantiations tripled since 3.3 jens dot maurer at gmx dot net
                   ` (13 preceding siblings ...)
  2004-01-10 17:12 ` pinskia at gcc dot gnu dot org
@ 2004-01-13 23:59 ` cvs-commit at gcc dot gnu dot org
  2004-01-14 11:34 ` cvs-commit at gcc dot gnu dot org
                   ` (28 subsequent siblings)
  43 siblings, 0 replies; 47+ messages in thread
From: cvs-commit at gcc dot gnu dot org @ 2004-01-13 23:59 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From cvs-commit at gcc dot gnu dot org  2004-01-13 23:59 -------
Subject: Bug 12850

CVSROOT:	/cvs/gcc
Module name:	gcc
Changes by:	hubicka@gcc.gnu.org	2004-01-13 23:59:20

Modified files:
	gcc            : ChangeLog cgraphunit.c 
	gcc/cp         : ChangeLog decl2.c optimize.c 

Log message:
	Partial fix PR c++/12850
	* cgraphunit.c (cgraph_finalize_function): Always ggc_collect when
	at zero nest level.
	
	* decl2.c (mark_used): Do not proactively instantiate templates
	when compiling in unit-at-a-time or not optimizing.
	* optimize.c (maybe_clone_body): Do not increase function depth.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&r1=2.2270&r2=2.2271
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cgraphunit.c.diff?cvsroot=gcc&r1=1.44&r2=1.45
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/ChangeLog.diff?cvsroot=gcc&r1=1.3875&r2=1.3876
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/decl2.c.diff?cvsroot=gcc&r1=1.694&r2=1.695
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/optimize.c.diff?cvsroot=gcc&r1=1.102&r2=1.103



-- 


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


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

* [Bug c++/12850] [3.4 Regression] memory consumption for heavy template instantiations tripled since 3.3
  2003-10-30 23:42 [Bug c++/12850] New: memory consumption for heavy template instantiations tripled since 3.3 jens dot maurer at gmx dot net
                   ` (14 preceding siblings ...)
  2004-01-13 23:59 ` cvs-commit at gcc dot gnu dot org
@ 2004-01-14 11:34 ` cvs-commit at gcc dot gnu dot org
  2004-01-14 11:37 ` hubicka at ucw dot cz
                   ` (27 subsequent siblings)
  43 siblings, 0 replies; 47+ messages in thread
From: cvs-commit at gcc dot gnu dot org @ 2004-01-14 11:34 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From cvs-commit at gcc dot gnu dot org  2004-01-14 11:34 -------
Subject: Bug 12850

CVSROOT:	/cvs/gcc
Module name:	gcc
Changes by:	hubicka@gcc.gnu.org	2004-01-14 11:34:38

Modified files:
	gcc/cp         : ChangeLog pt.c 

Log message:
	PR c++/12850
	* pt.c (instantiate_decl):  Do not increase function_depth.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/ChangeLog.diff?cvsroot=gcc&r1=1.3879&r2=1.3880
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/pt.c.diff?cvsroot=gcc&r1=1.813&r2=1.814



-- 


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


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

* [Bug c++/12850] [3.4 Regression] memory consumption for heavy template instantiations tripled since 3.3
  2003-10-30 23:42 [Bug c++/12850] New: memory consumption for heavy template instantiations tripled since 3.3 jens dot maurer at gmx dot net
                   ` (15 preceding siblings ...)
  2004-01-14 11:34 ` cvs-commit at gcc dot gnu dot org
@ 2004-01-14 11:37 ` hubicka at ucw dot cz
  2004-01-14 11:38 ` hubicka at ucw dot cz
                   ` (26 subsequent siblings)
  43 siblings, 0 replies; 47+ messages in thread
From: hubicka at ucw dot cz @ 2004-01-14 11:37 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From hubicka at ucw dot cz  2004-01-14 11:37 -------
Subject: Re:  [3.4 Regression] memory consumption for heavy template instantiations tripled since 3.3

> 
> ------- Additional Comments From pinskia at gcc dot gnu dot org  2003-12-19 08:43 -------
> It goes up to abot >480MB on powerpc-apple-darwin, then drops to around 250MB.

I can get about 30MB at -O0, for unit-at-a-time we however still needs
250MB, this is the size of all templates instantiated together.  I don't
think we can reduce this for 3.4 further and it is no longer regression,
in the future we may make trees more compact.  This testcase has also
interesting runtime properties, Mark may want to look at the
for_each_template_param_r problem.

Honza
> 
> -- 
> 
> 
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12850


-- 


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


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

* Re: [Bug c++/12850] [3.4 Regression] memory consumption for heavy template instantiations tripled since 3.3
  2003-12-19  9:41 ` pinskia at gcc dot gnu dot org
@ 2004-01-14 11:37   ` Jan Hubicka
  2004-01-14 11:38   ` Jan Hubicka
  1 sibling, 0 replies; 47+ messages in thread
From: Jan Hubicka @ 2004-01-14 11:37 UTC (permalink / raw)
  To: pinskia at gcc dot gnu dot org; +Cc: gcc-bugs

> 
> ------- Additional Comments From pinskia at gcc dot gnu dot org  2003-12-19 08:43 -------
> It goes up to abot >480MB on powerpc-apple-darwin, then drops to around 250MB.

I can get about 30MB at -O0, for unit-at-a-time we however still needs
250MB, this is the size of all templates instantiated together.  I don't
think we can reduce this for 3.4 further and it is no longer regression,
in the future we may make trees more compact.  This testcase has also
interesting runtime properties, Mark may want to look at the
for_each_template_param_r problem.

Honza
> 
> -- 
> 
> 
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12850


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

* [Bug c++/12850] [3.4 Regression] memory consumption for heavy template instantiations tripled since 3.3
  2003-10-30 23:42 [Bug c++/12850] New: memory consumption for heavy template instantiations tripled since 3.3 jens dot maurer at gmx dot net
                   ` (16 preceding siblings ...)
  2004-01-14 11:37 ` hubicka at ucw dot cz
@ 2004-01-14 11:38 ` hubicka at ucw dot cz
  2004-01-14 18:12 ` pinskia at gcc dot gnu dot org
                   ` (25 subsequent siblings)
  43 siblings, 0 replies; 47+ messages in thread
From: hubicka at ucw dot cz @ 2004-01-14 11:38 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From hubicka at ucw dot cz  2004-01-14 11:38 -------
Subject: Re:  [3.4 Regression] memory consumption for heavy template instantiations tripled since 3.3

> 
> ------- Additional Comments From pinskia at gcc dot gnu dot org  2003-12-19 08:43 -------
> It goes up to abot >480MB on powerpc-apple-darwin, then drops to around 250MB.
Still GGC memory is only about 100MB, so perhaps we have 150MB memory leak in
non-GGC memory reproduced by this.
> 
> -- 
> 
> 
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12850


-- 


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


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

* Re: [Bug c++/12850] [3.4 Regression] memory consumption for heavy template instantiations tripled since 3.3
  2003-12-19  9:41 ` pinskia at gcc dot gnu dot org
  2004-01-14 11:37   ` Jan Hubicka
@ 2004-01-14 11:38   ` Jan Hubicka
  1 sibling, 0 replies; 47+ messages in thread
From: Jan Hubicka @ 2004-01-14 11:38 UTC (permalink / raw)
  To: pinskia at gcc dot gnu dot org; +Cc: gcc-bugs

> 
> ------- Additional Comments From pinskia at gcc dot gnu dot org  2003-12-19 08:43 -------
> It goes up to abot >480MB on powerpc-apple-darwin, then drops to around 250MB.
Still GGC memory is only about 100MB, so perhaps we have 150MB memory leak in
non-GGC memory reproduced by this.
> 
> -- 
> 
> 
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12850


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

* [Bug c++/12850] [3.4 Regression] memory consumption for heavy template instantiations tripled since 3.3
  2003-10-30 23:42 [Bug c++/12850] New: memory consumption for heavy template instantiations tripled since 3.3 jens dot maurer at gmx dot net
                   ` (17 preceding siblings ...)
  2004-01-14 11:38 ` hubicka at ucw dot cz
@ 2004-01-14 18:12 ` pinskia at gcc dot gnu dot org
  2004-01-27 13:14 ` [Bug c++/12850] [3.4/3.5 " cvs-commit at gcc dot gnu dot org
                   ` (24 subsequent siblings)
  43 siblings, 0 replies; 47+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2004-01-14 18:12 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pinskia at gcc dot gnu dot org  2004-01-14 18:12 -------
I will take a look for the leak but most likely it is not really a leak.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |pinskia at gcc dot gnu dot
                   |                            |org


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


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

* [Bug c++/12850] [3.4/3.5 Regression] memory consumption for heavy template instantiations tripled since 3.3
  2003-10-30 23:42 [Bug c++/12850] New: memory consumption for heavy template instantiations tripled since 3.3 jens dot maurer at gmx dot net
                   ` (18 preceding siblings ...)
  2004-01-14 18:12 ` pinskia at gcc dot gnu dot org
@ 2004-01-27 13:14 ` cvs-commit at gcc dot gnu dot org
  2004-01-27 16:35 ` pinskia at gcc dot gnu dot org
                   ` (23 subsequent siblings)
  43 siblings, 0 replies; 47+ messages in thread
From: cvs-commit at gcc dot gnu dot org @ 2004-01-27 13:14 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From cvs-commit at gcc dot gnu dot org  2004-01-27 12:57 -------
Subject: Bug 12850

CVSROOT:	/cvs/gcc
Module name:	gcc
Changes by:	amylaar@gcc.gnu.org	2004-01-27 12:49:31

Modified files:
	gcc            : ChangeLog Makefile.in bt-load.c common.opt 
	                 flags.h opts.c toplev.c 
	gcc/doc        : invoke.texi 

Log message:
	* Makefile.in (bt-load.o): Depend on except.h.
	* bt-load.c (except.h): #include.
	(compute_defs_uses_and_gen): If insn at end of BB can throw
	within this function, consider registers used by it unavailable for
	btr migration.
	(move_btr_def): If insn at end of BB can throw, insert before rather
	than after.
	
	* flags.h (flag_btr_bb_exclusive): Declare.
	* toplev.c (flag_btr_bb_exclusive): New variable.
	(f_options): Add btr-bb-exclusive.
	* bt-load.c (augment_live_range): Restore old behaviour if
	flag_btr_bb_exclusive is set.
	* common.opt: Add entry for -fbtr-bb-exclusive.
	* opts.c (common_handle_options): Same.
	* doc/invoke.texi: Document -fbtr-bb-exclusive.
	
	* bt-load.c (btrs_live_at_end): New variable.
	(compute_defs_uses_and_gen): Compute its pointed-to array.
	(clear_btr_from_live_range, add_btr_to_live_range): Update it.
	(augment_live_range): When augmenting with a new dominator,
	use only its btrs_live_at_end set, but also add in the full set
	of the old dominator.
	(btr_def_live_range): Use btrs_live_at_end.
	(move_btr_def): Set other_btr_uses_before_def, and move new set
	to the end of the basic block, if appropriate.
	(migrate_btr_defs): Allocate and free btrs_live_at_end.
	
	* bt-load.c (basic_block_freq): Remove outdated comment.
	
	2004-01-27  Alan Modra  <amodra@bigpond.net.au>
	
	* config/rs6000/rs6000.h: Correct target_flags free bits comment.
	(PREDICATE_CODES): Remove duplicate.
	* config/rs6000/linux64.h (CPP_SYSV_SPEC): Don't define.
	(SUBSUBTARGET_OVERRIDE_OPTIONS): Disallow 32 bit TARGET_PROFILE_KERNEL.
	(MASK_PROFILE_KERNEL): Adjust define.
	
	2004-01-27  Jakub Jelinek  <jakub@redhat.com>
	
	* config/i386/i386.c (ix86_constant_alignment): Decrease alignment
	of long string literals from 32 bytes to sizeof (void *) when !-Os
	and to 1 with -Os.
	
	2004-01-26  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/h8300/h8300.c (h8300_tiny_constant_address_p): Accept
	constant addresses in the normal mode.
	
	2004-01-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
	
	* system.h (CHAR_BITFIELD): Delete.
	(BOOL_BITFIELD): New.
	* c-decl.c (c_scope): Use BOOL_BITFIELD.
	* gengtype-lex.l: Recognize BOOL_BITFIELD instead of CHAR_BITFIELD.
	
	2004-01-26  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/arc/arc.c (TARGET_PROMOTE_FUNCTION_ARGS): New.
	(TARGET_PROMOTE_FUNCTION_RETURN): Likewise.
	(TARGET_PROMOTE_PROTOTYPES): Likewise.
	(TARGET_STRUCT_VALUE_RTX): Likewise.
	(TARGET_RETURN_IN_MEMORY): Likewise.
	(arc_return_in_memory): Likewise.
	* config/arc/arc.h (PROMOTE_FUNCTION_ARGS): Remove.
	(PROMOTE_FUNCTION_RETURN): Likewise.
	(RETURN_IN_MEMORY): Likewise.
	(STRUCT_VALUE): Likewise.
	
	2004-01-26  Richard Henderson  <rth@redhat.com>
	
	* c-parse.in (extension): Use itype.
	(SAVE_EXT_FLAGS): Don't allocate a tree.
	(RESTORE_EXT_FLAGS): Don't read a tree.
	
	2004-01-26  Jan Hubicka  <jh@suse.cz>
	
	* cselib.c (discard_useless_values):  Clear out value pointer pointing
	to datastructure to be recycled.
	
	2004-01-25  Jan Hubicka  <jh@suse.cz>
	
	* genextract.c (main): Do not output the memset when not checking.
	
	2004-01-26  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/h8300/h8300.c (h8300_tiny_constant_address_p): Use a
	switch statement instead of a chain of if statements.
	
	2004-01-26  Jeff Law  <law@redhat.com>
	
	* doc/contrib.texi: Minor cleanup for Paolo Carlini's entry.  Add
	acute accents for Petur Runolfsson's entry.
	
	2004-01-26  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/pdp11/pdp11.c (TARGET_STRUCT_VALUE_RTX): New.
	(TARGET_RETURN_IN_MEMORY): Likewise.
	* config/pdp11/pdp11.h (STRUCT_VALUE): Remove.
	(RETURN_IN_MEMORY): Likewise.
	
	2004-01-26  Fariborz Jahanian <fjahanian@apple.com>
	
	* config/rs6000/rs6000.c (rs6000_emit_move): split slow
	unaligned load/store into smaller loads and stores.
	
	2004-01-26  Fariborz Jahanian <fjahanian@apple.com>
	
	* function.c (assign_parms): Do not assign
	long long argument to memory in prologue if
	is it loaded into register.
	
	2004-01-26  Fariborz Jahanian <fjahanian@apple.com>
	
	PR middle-end/13779
	* expr.c (emit_group_load): split constant
	correctly into register components of PARALLEL insn.
	
	2004-01-26  Fariborz Jahanian <fjahanian@apple.com>
	
	* gcc/config/rs6000/rs6000.md (save_stack_nonlocal):
	Use adjust_address_nv directly with appropriate mode.
	(restore_stack_nonlocal): Ditto.
	
	2004-01-26  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/xtensa/xtensa-protos.h: Remove the prototype for
	xtensa_builtin_saveregs.
	* config/xtensa/xtensa.c (TARGET_PROMOTE_FUNCTION_ARGS): New.
	(TARGET_PROMOTE_FUNCTION_RETURN): Likewise.
	(TARGET_PROMOTE_PROTOTYPES): Likewise.
	(TARGET_STRUCT_VALUE_RTX): Likewise.
	(TARGET_RETURN_IN_MEMORY): Likewise.
	(TARGET_EXPAND_BUILTIN_SAVEREGS): Likewise.
	(xtensa_builtin_saveregs): Make it static.
	(xtensa_return_in_memory): New.
	* config/xtensa/xtensa.h (PROMOTE_FUNCTION_ARGS: Remove.
	(PROMOTE_FUNCTION_RETURN): Likewise.
	(PROMOTE_PROTOTYPES): Likewise.
	(STRUCT_VALUE): Likewise.
	(RETURN_IN_MEMORY): Likewise.
	(EXPAND_BUILTIN_SAVEREGS): Likewise.
	
	2004-01-26  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/arm/arm.c (TARGET_SETUP_INCOMING_VARARGS): New.
	(arm_setup_incoming_varargs): Likewise.
	* config/arm/arm.h (SETUP_INCOMING_VARARGS): Remove.
	
	2004-01-26  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/cris/cris.c (TARGET_SETUP_INCOMING_VARARGS): New.
	(cris_setup_incoming_varargs): Likewise.
	* config/cris/cris.h (SETUP_INCOMING_VARARGS): Remove.
	
	2004-01-26  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/ns32k/ns32k.c (TARGET_STRUCT_VALUE_RTX): New.
	(ns32k_struct_value_rtx): Likewise.
	* config/ns32k/ns32k.h (STRUCT_VALUE_REGNUM): Rename to
	NS32K_STRUCT_VALUE_REGNUM.
	
	2004-01-26  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/arm/arm.c (TARGET_PROMOTE_FUNCTION_ARGS): New.
	(TARGET_PROMOTE_PROTOTYPES): Likewise.
	(TARGET_STRUCT_VALUE_RTX): Likewise.
	(arm_struct_value_rtx): Likewise.
	* config/arm/arm.h (PROMOTE_FUNCTION_ARGS): Remove.
	(STRUCT_VALUE): Likewise.
	(STRUCT_VALUE_REGNUM): Likewise.
	(PROMOTE_PROTOTYPES): Likewise.
	
	2004-01-26  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/ia64/ia64-protos.h: Remove the prototype for
	ia64_setup_incoming_varargs and ia64_return_in_memory.
	* config/ia64/ia64.c (TARGET_STRUCT_VALUE_RTX): New.
	(TARGET_RETURN_IN_MEMORY): Likewise.
	(TARGET_SETUP_INCOMING_VARARGS): Likewise.
	(TARGET_STRICT_ARGUMENT_NAMING): Likewise.
	(ia64_setup_incoming_varargs): Adjust the arguments to meet
	the requirement of TARGET_SETUP_INCOMING_VARARGS.
	(ia64_return_in_memory): Make it static.  Change the return
	type to bool from int.  Add an argument.
	(ia64_struct_value_rtx): New.
	* config/ia64/ia64.h: Remove commented-out definitions of
	PROMOTE_FUNCTION_ARGS, PROMOTE_FUNCTION_RETURN, and
	PROMOTE_PROTOTYPES.
	(RETURN_IN_MEMORY): Remove.
	(STRUCT_VALUE_REGNUM): Likewise.
	(STRICT_ARGUMENT_NAMING): Likewise.
	
	2004-01-26  Eric Botcazou  <ebotcazou@libertysurf.fr>
	
	PR target/13666
	* config/sparc/sparc.c (function_arg_union_value): New function.
	(function_arg): Use it to deal with unions.
	(function_value): Likewise.  Define 'regbase' only for ARCH64.
	Replace a conditional statement by a simpler one.
	
	2004-01-26  Richard Sandiford  <rsandifo@redhat.com>
	
	* config/mips/mips.c (mips16_optimize_gp): Delete.
	(mips_reorg): Don't call it.
	
	2004-01-26  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>
	
	* config/c4x/c4x.md (addqi3_noclobber): Move up pecking order.
	(floatunsqihf2): Remove operand 6.
	(fixhfqi_set, fix_trunchfqi2, fixuns_trunchfqi2): Group with other
	fix patterns.
	(ldi_conditional, ldf_conditional): Validate operands.
	
	2004-01-26  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>
	
	* config/c4x/c4x.h (BCT_CHECK_LOOP_ITERATIONS): Remove.
	(HAVE_GAS_HIDDEN): Undefine as interim measure.
	
	2004-01-26  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>
	
	* config/c4x/c4x.c (c4x_legitimate_address_p):  Invalidate direct
	memory references if TARGET_EXPOSE_LDP nonzero.
	
	2004-01-26  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>
	
	* config/c4x/c4x.c (legitimize_operands): Truncate invalid shift counts.
	
	2004-01-26  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>
	
	* config/c4x/c4x.c (c4x_valid_operands): More aggressively reject
	invalid operand combinations.
	
	2004-01-26  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>
	
	* config/c4x/c4x.c (c4x_check_legit_addr): Rename to
	c4x_legitimate_address_p.  Fix post_modify check.
	
	* config/c4x/c4x-protos.h (c4x_check_legit_addr): Adjust.
	* config/c4x/c4x.h (c4x_check_legit_addr): Adjust.
	
	2004-01-25  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/pa/pa-protos.h: Remove the prototype for
	hppa_builtin_saveregs.  Add a prototype for
	pa_return_in_memory.
	* config/pa/pa.c (TARGET_PROMOTE_FUNCTION_RETURN): New.
	(TARGET_PROMOTE_PROTOTYPES): Likewise.
	(TARGET_STRUCT_VALUE_RTX): Likewise.
	(TARGET_RETURN_IN_MEMORY): Likewise.
	(TARGET_EXPAND_BUILTIN_SAVEREGS): Likewise.
	(pa_struct_value_rtx): Likewise.
	(pa_return_in_memory): Likewise.
	* config/pa/pa.h (STRUCT_VALUE_REGNUM): Rename to
	PA_STRUCT_VALUE_REGNUM.
	(INIT_CUMULATIVE_ARGS): Use pa_return_in_memory.
	(EXPAND_BUILTIN_SAVEREGS): Remove.
	(PROMOTE_PROTOTYPES): Likewise.
	(PROMOTE_FUNCTION_RETURN): Likewise.
	
	2004-01-25  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/vax/vax.c (TARGET_PROMOTE_PROTOTYPES): New.
	(TARGET_STRUCT_VALUE_RTX): Likewise.
	(vax_struct_value_rtx): Likewise.
	* config/vax/vax.h (STRUCT_VALUE_REGNUM): Rename to
	VAX_STRUCT_VALUE_REGNUM.
	(PROMOTE_PROTOTYPES): Remove.
	
	2004-01-26  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>
	
	* config/c4x/c4x.h (LEGITIMIZE_RELOAD_ADDRESS):  Handle symref.
	
	2003-04-25  Chris Demetriou  <cgd@broadcom.com>
	
	* config/mips/mips.h (ISA_HAS_HILO_INTERLOCKS): MIPS32, MIPS32r2,
	and MIPS64 have HI/LO interlocks.  Update comment.
	
	2004-01-25  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/stormy16/stormy16-protos.h: Remove the prototype for
	xstormy16_setup_incoming_varargs.
	* config/stormy16/stormy16.c
	(xstormy16_setup_incoming_varargs): Remove.
	(xstormy16_return_in_memory): New.
	(TARGET_PROMOTE_FUNCTION_ARGS): Likewise.
	(TARGET_PROMOTE_FUNCTION_RETURN): Likewise.
	(TARGET_PROMOTE_PROTOTYPES): Likewise.
	(TARGET_STRUCT_VALUE_RTX): Likewise.
	(TARGET_RETURN_IN_MEMORY): Likewise.
	* config/stormy16/stormy16.h (PROMOTE_FUNCTION_ARGS): Remove.
	(PROMOTE_FUNCTION_RETURN): Likewise
	(PROMOTE_PROTOTYPES): Likewise
	(RETURN_IN_MEMORY): Likewise
	(STRUCT_VALUE): Likewise
	(SETUP_INCOMING_VARARGS): Likewise
	
	2004-01-25  Richard Sandiford  <rsandifo@redhat.com>
	
	* config/mips/mips.c (mips_offset_within_object_p): New function.
	(mips_symbolic_constant_p): Use it in the SYMBOL_SMALL_DATA and
	SYMBOL_CONSTANT_POOL cases.  Also use it for SYMBOL_GENERAL if the
	ABI has 64-bit pointers and the object file only allows 32-bit symbols.
	
	2004-01-25  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/sh/sh.h (PROMOTE_FUNCTION_ARGS): Remove.
	(PROMOTE_FUNCTION_RETURN): Likewise.
	
	2004-01-25  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/mn10300/mn10300-protos.h: Remove the prototype for
	mn10300_builtin_saveregs.
	* config/mn10300/mn10300.c (TARGET_PROMOTE_PROTOTYPES): New.
	(TARGET_STRUCT_VALUE_RTX): Likewise.
	(TARGET_RETURN_IN_MEMORY): Likewise.
	(TARGET_EXPAND_BUILTIN_SAVEREGS): Likewise.
	(mn10300_return_in_memory): Likewise.
	(mn10300_builtin_saveregs): Make it static.
	* config/mn10300/mn10300.h (PROMOTE_PROTOTYPES): Remove.
	(RETURN_IN_MEMORY): Likewise.
	(STRUCT_VALUE): Likewise.
	(EXPAND_BUILTIN_SAVEREGS): Likewise.
	
	2004-01-25  Eric Botcazou  <ebotcazou@act-europe.fr>
	
	PR bootstrap/13853
	* cfgcleanup.c (try_optimize_cfg): Explicitly test against 0.
	
	2004-01-25  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/h8300/lib1funcs.asm (divnorm, modnorm): Optimize by
	using ccr.
	
	2004-01-25  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/i860/i860-protos.h: Remove the prototype for
	i860_saveregs.
	* config/i860/i860.c (i860_saveregs): Make it static.
	(i860_struct_value_rtx): New.
	(TARGET_STRUCT_VALUE_RTX): Likewise.
	(TARGET_EXPAND_BUILTIN_SAVEREGS): Likewise.
	* config/i860/i860.h (STRUCT_VALUE_REGNUM): Rename to
	I860_STRUCT_VALUE_REGNUM.
	(EXPAND_BUILTIN_SAVEREGS): Remove.
	
	2004-01-25  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/m68hc11/m68hc11.c (TARGET_STRUCT_VALUE_RTX): New.
	(TARGET_RETURN_IN_MEMORY): Likewise.
	(m68hc11_struct_value_rtx): Likewise.
	(m68hc11_return_in_memory): Likewise.
	* config/m68hc11/m68hc11.h: Remove a commented-out definition
	of PROMOTE_PROTOTYPES.
	(RETURN_IN_MEMORY): Remove.
	(STRUCT_VALUE_REGNUM): Likewise.
	
	2004-01-25  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/mmix/mmix-protos.h: Remove the prototype for
	mmix_setup_incoming_varargs.
	* config/mmix/mmix.c (TARGET_PROMOTE_FUNCTION_ARGS): New.
	(TARGET_STRUCT_VALUE_RTX): Likewise.
	(TARGET_SETUP_INCOMING_VARARGS): Likewise.
	(mmix_setup_incoming_varargs): Make it static.
	(mmix_struct_value_rtx): New.
	* config/mmix/mmix.h (PROMOTE_FUNCTION_ARGS): Remove.
	Remove a commented-out definition of PROMOTE_FUNCTION_RETURN.
	(STRUCT_VALUE_REGNUM): Remove.
	(SETUP_INCOMING_VARARGS): Likewise.
	
	2004-01-25  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/mips/mips-protos.h: Remove the prototypes for
	mips_setup_incoming_varargs and mips_return_in_memory.
	* config/mips/mips.c (TARGET_PROMOTE_FUNCTION_ARGS): New.
	(TARGET_PROMOTE_FUNCTION_RETURN): Likewise.
	(TARGET_PROMOTE_PROTOTYPES): Likewise.
	(TARGET_STRUCT_VALUE_RTX): Likewise.
	(TARGET_RETURN_IN_MEMORY): Likewise.
	(TARGET_SETUP_INCOMING_VARARGS): Likewise.
	(TARGET_STRICT_ARGUMENT_NAMING): Likewise.
	(mips_setup_incoming_varargs): Match the prototype for
	TARGET_SETUP_INCOMING_VARARGS.
	(mips_return_in_memory): Make it static.  Add argument fntype.
	(mips_strict_argument_naming): New.
	* config/mips/mips.h (PROMOTE_PROTOTYPES): Remove.
	(PROMOTE_FUNCTION_ARGS): Likewise.
	(PROMOTE_FUNCTION_RETURN): Likewise.
	(STRUCT_VALUE): Likewise.
	(RETURN_IN_MEMORY): Likewise.
	(SETUP_INCOMING_VARARGS): Likewise.
	(STRICT_ARGUMENT_NAMING): Likewise.
	
	2004-01-25  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/ip2k/ip2k.c (TARGET_STRUCT_VALUE_RTX): New.
	(TARGET_RETURN_IN_MEMORY): Likewise.
	(TARGET_SETUP_INCOMING_VARARGS): Likewise.
	(ip2k_return_in_memory): Likewise.
	(ip2k_setup_incoming_varargs): Likewise.
	* config/ip2k/ip2k.h (RETURN_IN_MEMORY): Remove.
	(STRUCT_VALUE): Likewise.
	(STRUCT_VALUE_INCOMING): Likewise.
	(SETUP_INCOMING_VARARGS): Likewise.
	
	2004-01-25  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/avr/avr.c (TARGET_STRUCT_VALUE_RTX): New.
	(TARGET_RETURN_IN_MEMORY): Likewise.
	(TARGET_STRICT_ARGUMENT_NAMING): Likewise.
	(avr_return_in_memory): Remove.
	* config/avr/avr.h (RETURN_IN_MEMORY): Remove.
	(STRUCT_VALUE): Likewise.
	(STRUCT_VALUE_INCOMING): Likewise.
	(STRICT_ARGUMENT_NAMING): Likewise.
	
	2004-01-25  Jan Hubicka  <jh@suse.cz>
	
	* combine.c (recog_for_combine): Avoid allocating unnecesary RTX.
	
	2004-01-25  Richard Sandiford  <rsandifo@redhat.com>
	
	* config/mips/mips-protos.h (mips_reg_mode_ok_for_base_p): Delete.
	(mips_regno_mode_ok_for_base_p): Declare.
	* config/mips/mips.h (ARG_POINTER_REGNUM): Renumber to 77.
	(FRAME_POINTER_REGNUM): Renumber to 78.
	(FIRST_PSEUDO_REGISTER): Update comment accordingly.
	(BASE_REG_P, GP_REG_OR_PSEUDO_STRICT_P): Delete.
	(GP_REG_OR_PSEUDO_NONSTRICT_P): Delete.
	(REGNO_MODE_OK_FOR_BASE_P): Use mips_regno_mode_ok_for_base_p.
	(REG_MODE_OK_FOR_BASE_P): Likewise.
	* config/mips/mips.c (mips_reg_names, mips_sw_reg_names): Change
	entry for 77 to "$arg" and entry for 78 to "$frame".
	(mips_regno_to_class): Map 77 and 78 to ALL_REGS.
	(mips_reg_mode_ok_for_base_p): Remove.
	(mips_regno_mode_ok_for_base_p): New function, derived from old
	BASE_REG_P macro.  Don't enforce the mips16 stack pointer
	restrictions unless we're being strict.
	(mips_valid_base_register_p): Use mips_regno_mode_ok_for_base_p.
	
	2004-01-24  Kazu Hirata  <kazu@cs.umass.edu>
	
	* c-common.h: Fix comment typos.
	* c-decl.c: Likewise.
	* cgraphunit.c: Likewise.
	* combine.c: Likewise.
	* et-forest.c: Likewise.
	* flow.c: Likewise.
	* function.c: Likewise.
	* ifcvt.c: Likewise.
	* integrate.c: Likewise.
	* jump.c: Likewise.
	* postreload.c: Likewise.
	* varray.c: Likewise.
	
	2004-01-24  Kazu Hirata  <kazu@cs.umass.edu>
	
	* doc/frontends.texi: Update copyright.
	* doc/gcov.texi: Likewise.
	* doc/gty.texi: Likewise.
	* doc/sourcebuild.texi: Likewise.
	* doc/standards.texi: Likewise.
	
	2004-01-24  Herman A.J. ten Brugge  <hermantenbrugge@home.nl>
	
	PR target/12978
	* c4x.md: (movstrqi*) Use match_scratch instead of match_dup.
	Remove movstrqi_small because it conflicts with movstrqi_large.
	
	2004-01-24  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/cris/cris.c (TARGET_PROMOTE_FUNCTION_ARGS): New.
	(TARGET_STRUCT_VALUE_RTX): Likewise.
	(cris_struct_value_rtx): Likewise.
	* config/cris/cris.h (PROMOTE_FUNCTION_ARGS): Remove.
	(CRIS_STACKADJ_REG): Use CRIS_STRUCT_VALUE_REGNUM instead of
	STRUCT_VALUE_REGNUM.
	(STRUCT_VALUE_REGNUM): Rename to CRIS_STRUCT_VALUE_REGNUM.
	
	2004-01-24  Ian Lance Taylor  <ian@wasabisystems.com>
	
	PR bootstrap/13848
	* cse.c (cse_cc_succs): Change the mode of the source expression
	as soon as decide we need a new mode.  Don't permit changing modes
	if we found a match in a successor block.
	(cse_condition_code_reg): Save original mode of source expression
	so that we know whether we have to change the mode in other
	insns.
	
	2004-01-24  Jan Hubicka  <jh@suse.cz>
	
	* emit-rtl.c (change_address, adjust_address_1, offset_address,
	widen_memory_access):  Return early when there is nothing to change.
	
	2004-01-24  Jakub Jelinek  <jakub@redhat.com>
	
	* simplify-rtx.c (simplify_relational_operation): Don't
	simplify address == constant into address + -constant == 0.
	
	2004-01-24  Kazu Hirata  <kazu@cs.umass.edu>
	
	* gcc.c (process_command): Don't internationalize the
	Copyright message.
	* mips-tfile.c (main): Likewise.
	
	2004-01-24  Andreas Tobler  <a.tobler@schweiz.ch>
	
	* cse.c: (cse_cc_succs) Fix comparison warning.
	
	2004-01-24  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/h8300/h8300.md: Remove extraneous USE in expanders.
	
	2004-01-24  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/h8300/h8300-protos.h: Provide prototypes for
	h8300_legitimate_constant_p and h8300_legitimate_address_p.
	* config/h8300/h8300.c (h8300_legitimate_constant_p): New.
	(h8300_rtx_ok_for_base_p): Likewise.
	(h8300_legitimate_address_p): Likewise.
	* config/h8300/h8300.h (LEGITIMATE_CONSTANT_P): Use
	h8300_legitimate_constant_p.
	(RTX_OK_FOR_BASE_P): Remove.
	(GO_IF_LEGITIMATE_ADDRESS): Use h8300_legitimate_address_p.
	
	2004-01-24  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/h8300/h8300.h (REG_OK_FOR_INDEX_NONSTRICT_P): New.
	(REG_OK_FOR_BASE_NONSTRICT_P): Likewise.
	(REG_OK_FOR_INDEX_STRICT_P): Likewise.
	(REG_OK_FOR_BASE_STRICT_P): Likewise.
	(REG_OK_FOR_INDEX_STRICT_P): Use REGNO_OK_FOR_INDEX_P.
	(REG_OK_FOR_BASE_STRICT_P): Use REGNO_OK_FOR_BASE_P.
	(REG_OK_FOR_INDEX_P): Use REG_OK_FOR_INDEX_STRICT_P.
	(REG_OK_FOR_BASE_P): Use REG_OK_FOR_BASE_STRICT_P.
	
	2004-01-24  Jan Hubicka  <jh@suse.cz>
	
	* cselib.c (remove_useless_values):  Do not access discarded values.
	
	2004-01-24  Joseph S. Myers  <jsm@polyomino.org.uk>
	
	* c-typeck.c (build_conditional_expr): Do not allow non-lvalue
	arrays.
	
	2004-01-23  Kazu Hirata  <kazu@cs.umass.edu>
	
	* recog.c: Fix a typo in copyright.
	
	2004-01-23  Andrew Pinski  <apinski@apple.com>
	
	* config/rs6000/rs6000.md (call): Fix misappiled patch.
	(call_value): Likewise.
	
	2004-01-23  Richard Henderson  <rth@redhat.com>
	
	PR opt/12941
	* combine.c (SHIFT_COUNT_TRUNCATED): Provide default value.
	(simplify_comparison): Don't simplify (eq (zero_extract c 1 r) 0)
	if SHIFT_COUNT_TRUNCATED is set.
	
	2004-01-23  Bob Wilson  <bob.wilson@acm.org>
	
	* config/xtensa/xtensa.c (xtensa_va_arg): Handle complex values as
	separate real and imaginary parts.
	* config/xtensa/xtensa.h (SPLIT_COMPLEX_ARGS): Define.
	
	2004-01-23  Hartmut Penner <hpenner@de.ibm.com>
	
	PR target/13674
	* config/rs6000/rs6000.md (movdf_hardfloat64): Do not disparage
	loading into GPR.
	
	2004-01-23  Jan Hubicka  <jh@suse.cz>
	
	* emit-rtl.c (change_address_1):  Do not re-generate the RTX if nothing
	change.
	
	* alloc-pool.c (align_four): Kill.
	(create_alloc_pool): Align size to eight.
	(free_alloc_pool, free_pool): Invalidate deallocated data.
	
	2004-01-23  Ian Lance Taylor  <ian@wasabisystems.com>
	
	PR gcc/1532
	* cse.c (cse_change_cc_mode): New static function.
	(cse_change_cc_mode_insns, cse_cc_succs): Likewise.
	(cse_condition_code_reg): New function.
	* rtl.h (cse_condition_code_reg): Declare.
	* toplev.c (rest_of_handle_cse2): Call cse_condition_code_reg.
	* target.h (struct gcc_target): Add fixed_condition_code_regs and
	cc_modes_compatible.
	* target-def.h (TARGET_FIXED_CONDITION_CODE_REGS): Define.
	(TARGET_CC_MODES_COMPATIBLE): Define.
	(TARGET_INITIALIZER): Add new initializers.
	* targhooks.c (default_cc_modes_compatible): New function.
	* targhooks.c (default_cc_modes_compatible): Declare.
	* hooks.c (hook_bool_intp_intp_false): New function.
	* hooks.h (hook_bool_intp_intp_false): Declare.
	* config/i386/i386.c (TARGET_FIXED_CONDITION_CODE_REGS): Define.
	(TARGET_CC_MODES_COMPATIBLE): Define.
	(ix86_fixed_condition_code_regs): New static function.
	(ix86_cc_modes_compatible): Likewise.
	* doc/tm.texi (Condition Code): Document new hooks.
	
	2004-01-23  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
	
	* fixinc/inclhack.def (bad_lval): Renamed to ...
	(alpha_bad_lval): ... this.
	Removed file list.
	Restrict to alpha*-dec-osf*.
	* fixinc/fixincl.x: Regenerate.
	* fixinc/tests/base/dirent.h: Remove, moving test ...
	* fixinc/tests/base/testing.h: ... here, reflecting new name.
	
	2004-01-23  Zack Weinberg  <zack@codesourcery.com>
	
	PR c/13814
	* c-decl.c (diagnose_mismatched_decls): Also discard a
	built-in if we encounter an old-style definition with the
	same name.
	
	2004-01-23  Jakub Jelinek  <jakub@redhat.com>
	
	* config.gcc (powerpc*-*): Clear $with_cpu or $with_tune if it was
	set to default{32,64}.
	
	2004-01-21  Jakub Jelinek  <jakub@redhat.com>
	
	* config/rs6000/linux64.h (MD_FALLBACK_FRAME_STATE_FOR)
	[!__powerpc64__]: Corrected to handle kernels with changed ucontext.
	
	2004-01-23  Eric Botcazou  <ebotcazou@act-europe.fr>
	Olivier Hainque  <hainque@act-europe.fr>
	
	* fold-const.c (fold_binary_op_with_conditional_arg): Only
	build a COMPOUND_EXPR if 'arg' is really a SAVE_EXPR.
	
	2004-01-23  Daniel Jacobowitz  <drow@mvista.com>
	
	* config/arm/arm.c (arm_legitimate_address_p): Don't check the mode
	size for minipool references.
	
	2004-01-23  Roger Sayle  <roger@eyesopen.com>
	
	* real.c (real_floor, real_ceil): Tweak to allow input and output
	arguments to overlap.
	(real_round): New function to implement round(3m) semantics.
	* real.h (real_round): Prototype here.
	* builtins.c (fold_builtin_round): New function to constant fold
	round, roundf and roundl.
	(fold_builtin): Call fold_builtin_round for BUILT_IN_ROUND{,F,L}.
	
	2004-01-23  Alexandre Oliva  <aoliva@redhat.com>
	
	PR optimization/13819
	* config/sh/sh.c (sh_reorg): Compensate for sharing of CLOBBERs
	introduced by 2004-01-20's Jan Hubicka's copy_insn change.
	(sh_handle_sp_switch_attribute): Remove warning.
	
	2003-11-30  Jan Hubicka  <jh@suse.cz>
	
	* i386.c (ix86_emit_restore_regs_using_mov):  Deal with large offsets.
	
	2004-01-23  J"orn Rennecke <joern.rennecke@superh.com>
	
	* doc/tm.texi: Insert some weasel words when LOAD_EXTEND_OP
	may or may not return non-NIL.
	* postreload.c (reload_cse_simplify_operands): In LOAD_EXTEND_OP code,
	check CANNOT_CHANGE_MODE_CLASS
	
	2004-01-23  Jan Hubicka  <jh@suse.cz>
	
	* basic-block.h (PROP_POSTRELOAD): New macro.
	(CLEANUP_LOG_LINKS): New.
	* cfgcleanup.c (cleanup_cfg): Only PROP_LOG_LINKS when asked to.
	* toplev.c (rest_of_handle_life):  Preserve LOG_LINKS trought cleanup_cfg.
	
	* cselib.c (value_pool): New.
	(new_cselib_val): Use pool.
	(cselib_init): Initialize value_pool
	(cselib_finish): Free pool.
	
	2004-01-23  Eric Botcazou  <ebotcazou@libertysurf.fr>
	
	* config/sparc/sparc.c (scan_record_type): New function.
	(function_arg_slotno): Use it to determine which kinds of
	registers the record can be passed in.
	
	2004-01-22  James A. Mmorrison  <ja2morri@uwaterloo.ca>
	
	* config/pa/fptr.c: Fix old-style definition.
	
	2004-01-22  Paolo Bonzini  <bonzini@gnu.org>
	
	PR optimization/13724
	* cse.c (fold_rtx) <SUBREG>:  Fold a SUBREG to zero if it
	represents the zero bits produced by a ZERO_EXTEND operation.
	
	2004-01-22  Roger Sayle  <roger@eyesopen.com>
	
	PR optimization/13821
	* simplify-rtx.c (simplify_subreg): Use subreg_lowpart_offset to
	correctly calculate the lowpart offset of the contracted subreg.
	
	2004-01-22  Ian Lance Taylor  <ian@wasabisystems.com>
	
	* doc/invoke.texi (Optimize Options): Note that --param arguments
	are subject to change without notice.
	
	2004-01-22  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
	
	* config.gcc (mips-sgi-irix6*o32): Removed.
	* config/mips/iris6-o32-as.h: Likewise.
	* config/mips/iris6-o32-gas.h: Likewise.
	* config/mips/iris6-o32.h: Likewise.
	
	2004-01-22  Jan Hubicka  <jh@suse.cz>
	
	* cfgcleanup.c (first_pass): New static variable.
	(try_forward_edges):  Add work limiting check for threading.
	(try_crossjump_bb):  Add work limiting check for crossjumping.
	(try_optimize_cfg):  Maintain first pass variable.
	
	2004-01-22  Bob Wilson  <bob.wilson@acm.org>
	
	* config/xtensa/xtensa.c (function_arg): Generalize logic so that it
	handles complex and vector modes.
	
	2004-01-22  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/h8300/h8300.h (REG_OK_FOR_INDEX_P_STRICT): Remove.
	(REG_OK_FOR_BASE_P_STRICT): Likewise.
	(STRICT): Likewise.
	
	2004-01-22  Daniel Jacobowitz  <drow@mvista.com>
	
	* c-semantics.c (genrtl_while_stmt, genrtl_do_stmt_1)
	(genrtl_for_stmt): Remove emit_nop calls.
	
	2004-01-22  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
	
	PR target/13713
	PR target/13324
	* pa.md (movstrsi_prereload, movstrsi_postreload, movstrdi_prereload,
	movstrdi_postreload, clrstrsi_prereload, clrstrsi_postreload,
	clrstrdi_prereload, clrstrdi_postreload): Fix constraints.
	
	2004-01-22  Daniel Jacobowitz  <drow@mvista.com>
	
	* config/arm/arm.c: Include "debug.h".
	(thumb_pushpop): Take two new arguments.  Add some commentary.
	Output frame information when pushing.
	(thumb_exit, thumb_unexpanded_epilogue): Update calls to
	thumb_pushpop.
	(thumb_output_function_prologue): Likewise.  Accumulate a CFA
	offset, and pass it to thumb_pushpop.  Output CFI information.
	(thumb_expand_prologue): Add some frame-related markers and notes.
	
	2004-01-22  Ulrich Weigand  <uweigand@de.ibm.com>
	
	* config/s390/s390.c (s390_frame_info): Allow large frame sizes
	for TARGET_64BIT.
	(s390_arg_frame_offset): Change return type to HOST_WIDE_INT.
	* config/s390/s390-protos.h (s390_arg_frame_offset): Likewise.
	
	2004-01-22  Roger Sayle  <roger@eyesopen.com>
	Paolo Bonzini  <bonzini@gnu.org>
	
	* rtlanal.c (subreg_lsb_1): New function split out from subreg_lsb.
	(subreg_lsb): Change to call new subreg_lsb_1 helper function.
	* rtl.h (subreg_lsb_1): Prototype here.
	* simplify-rtx.c (simplify_subreg): Optimize subregs of zero and
	sign extensions.
	
	2004-01-22  Kazu Hirata  <kazu@cs.umass.edu>
	
	* doc/tm.texi (CASE_VECTOR_PC_RELATIVE): Mention that the
	macro need not be defined if jump-tables should contain
	relative addresses only when -fPIC or -fPIC is in effect.
	
	2004-01-22  Jan Hubicka  <jh@suse.cz>
	
	* alias.c (reg_base_value): Turn into varray.
	(reg_base_value_size): Kill.
	(old_reg_base_value): New deletable varray.
	(alias_invariant_size): New variable.
	(REG_BASE_VALUE): Update to use varray.
	(find_base_value): Likewise.
	(record_set): Likewise.
	(record_base_value): Likewise.
	(memrefs_conflict_p): Likewise.
	(record_set): Likewise
	(record_base_value): Likewise.
	(memrefs_conflict_p): Use alias_invariant_size.
	(init_alias_analysis): Use varray; set alias_invariant_size;
	rescale other arrays to be sized by maxreg.
	(end_alias_analysis): Save reg_base_value; clear alias_invariant_size.
	
	2004-01-22  Eric Botcazou  <ebotcazou@libertysurf.fr>
	
	* config/sparc/sparc.c (function_arg_slotno): Use
	FLOAT_TYPE_P to detect FP fields in structures.
	(function_arg_record_value_1): Likewise.
	(function_arg_record_value_2): Likewise.
	
	2004-01-22  Jan Hubicka  <jh@suse.cz>
	
	* function.c (allocate_struct_function): Do not initialize expr, emit
	and varasm.
	(prepare_function_start): Do it here.
	* c-parse.in (maybe_type_qual): Do not produce line number notes.
	
	2004-01-22  Eric Botcazou  <ebotcazou@libertysurf.fr>
	
	PR target/13559
	* config/sparc/sparc.c (function_arg_record_value_3): Revert
	to 'word_mode' once the first slot has been filled.
	
	2004-01-22  Olivier Hainque  <hainque@act-europe.fr>
	
	* config/sparc/sparc.c (function_arg_record_value_1): Fix
	computation of the number of integer registers required.
	
	2004-01-21  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/i386/i386.md: Simplify certain comparisons of
	const_int.
	
	2004-01-21  Andrew Pinski  <apinski@apple.com>
	
	PR target/13785
	* config/rs6000/rs6000.md (call_value): Force operand
	1 not operand 0 into a register.
	
	2004-01-21  Kazu Hirata  <kazu@cs.umass.edu>
	
	* cpperror.c, cpptrad.c, longlong.h, params.def, rtl.def,
	unwind-dw2-fde.h: Update copyright.
	
	2004-01-21  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
	
	* pa-protos.h: Update copyright.
	* pa.h: Likewise.
	* pa.md: Likewise.
	
	2004-01-21  Caroline Tice <ctice@apple.com>
	
	PR target/12308
	* config/i386/i386.md (fix_truncxfdi2): Add clause to clobber
	flags register.
	(fix_truncdfdi2): Likewise.
	(fix_truncsfdi2): Likewise.
	(*fix_truncdi_1): Likewise.
	(fix_truncxfsi2): Likewise.
	(fix_truncdfsi2): Likewise.
	(fix_truncsfsi2): Likewise.
	(*fix_truncsi_1): Likewise.
	(fix_truncxfhi2): Likewise.
	(fix_truncdfhi2): Likewise.
	(fix_truncsfhi2): Likewise.
	(*fix_trunchi_1): Likewise.
	
	2004-01-21  Kazu Hirata  <kazu@cs.umass.edu>
	
	* alias.c, basic-block.h, c-common.c, c-common.h,
	c-cppbuiltin.c, c-opts.c, c-pragma.c, c-pretty-print.c,
	calls.c, cfg.c, cfgcleanup.c, cfgrtl.c, cgraph.h, collect2.c,
	combine.c, cppcharset.c, cpphash.h, cppinit.c, cpplib.c,
	cpplib.h, cppmacro.c, crtstuff.c, cselib.c, cselib.h,
	defaults.h, df.c, dominance.c, et-forest.c, expmed.c, expr.c,
	expr.h, fix-header.c, function.h, gcc.c, gcse.c, genattrtab.c,
	genautomata.c, genconditions.c, genemit.c, genflags.c,
	gengtype.c, gengtype.h, genopinit.c, genrecog.c, gensupport.c,
	ggc-zone.c, graph.c, haifa-sched.c, input.h, integrate.c,
	langhooks-def.h, langhooks.c, langhooks.h, line-map.c,
	line-map.h, local-alloc.c, optabs.c, optabs.h, postreload.c,
	ra.h, recog.c, reg-stack.c, regmove.c, reload.c, reorg.c,
	rtl.c, sched-deps.c, sched-ebb.c, sdbout.c, system.h,
	target.h, targhooks.c, toplev.h, tree-inline.c, unwind-pe.h,
	unwind.h, varray.c, varray.h: Update copyright.
	
	2004-01-21  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/h8300/coff.h: Update copyright.
	* config/h8300/elf.h: Likewise.
	* config/h8300/h8300-protos.h: Likewise.
	* config/h8300/h8300.c: Likewise.
	* config/h8300/h8300.h: Likewise.
	* config/h8300/h8300.md: Likewise.
	
	2004-01-21  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
	
	* fixinc/inclhack.def (hpux10_stdio_declarations, ultrix_const3,
	ultrix_locale, ultrix_stdlib, ultrix_strings, ultrix_sys_time,
	ultrix_unistd): New hacks.
	* fixinc/tests/base/stdio.h (HPUX10_STDIO_DECLARATIONS_CHECK,
	ULTRIX_CONST2_CHECK): Add checks.
	* fixinc/tests/base/stdlib.h (ULTRIX_STDLIB_CHECK): Likewise.
	* fixinc/tests/base/strings.h (ULTRIX_STRINGS2_CHECK): Likewise.
	* fixinc/tests/base/unistd.h (ULTRIX_UNISTD_CHECK): Likewise.
	* fixinc/tests/base/sys/time.h (ULTRIX_SYS_TIME_CHECK): Likewise.
	* fixinc/tests/base/locale.h: New file.
	* fixinc/fixincl.x: Rebuilt.
	
	2004-01-21  Andreas Jaeger  <aj@suse.de>
	Michael Matz  <matz@suse.de>
	
	* doc/extend.texi (Extended Asm): Clarify memory clobber.
	
	2004-01-21  Jakub Jelinek  <jakub@redhat.com>
	
	* crtstuff.c (frame_dummy, __do_global_ctors_1): Call
	_Jv_RegisterClasses through a function pointer.
	
	2004-01-21  Falk Hueffner  <falk@debian.org>
	
	PR target/12898
	* config/alpha/alpha.c (alpha_emit_set_const_1): If
	no_new_pseudos, use gen_rtx_SET directly for SImode constants
	which need multiple instructions to emit.
	
	2004-01-21  Inaoka Kazuhiro  <inaoka.kazuhiro@renesas.com>
	
	* config/m32r/m32r.h (CPP_SPEC): Define.
	
	2004-01-21  Zack Weinberg  <zack@codesourcery.com>
	
	* c-decl.c (merge_decls): Kill different_binding_level and
	different_tu arguments; simplify throughout.
	(duplicate_decls): Likewise.
	(pushdecl, merge_translation_unit_decls): Update calls to
	duplicate_decls.
	
	2004-01-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
	
	* Makefile.in (pretty-print.o): Depend on $(CONFIG_H) and
	$(SYSTEM_H).
	(print-rtl1.o): Depend on $(SYSTEM_H).
	
	2004-01-20  Kelley Cook  <kcook@gcc.gnu.org>
	
	PR bootstrap/12730
	* configure.ac: Delete definition and subsitution of docdir.
	Add info, man, srcman and srcinfo to target hooks. Create doc/
	directory.
	* configure: Regenerate.
	* Makefile.in: Don't substitute docdir and delete all references
	throughout.
	(MAKEINFOFLAGS): Define.
	(stmp-docobjdir): Delete.
	(INFOFILES, MANFILES): Define.
	(info): Call lang.info, srcinfo and lang.srcinfo.
	(generated-manpages): Call lang.man, srcman and lang.srcman.
	(srcinfo, srcman): New rules to copy back files to source directory.
	(doc/%.info, doc/%.dvi, doc/%.1, doc/%.7): New implict rule.
	(install-man): Revamp rule.
	(clean): Update dvi directory.
	(distclean): Delete TAGS from front end directorys.
	(maintainer-clean): Delete all document files in source directory.
	
	objc/Make-lang.in (objc.man, objc.info): Dummy entries.
	(objc.srcman, objc.srcinfo): Likewise.
	
	2004-01-20  Bruce Korb  <bkorb@gnu.org>
	
	* fixinc/inclhack.def(math_exception): bypass only for glibc.
	(matherr_decl): rename & relocate as exception_structure.
	This fix must precede the math_exception fix.
	
	2004-01-20  Roger Sayle  <roger@eyesopen.com>
	
	* fold-const.c (fold_convert): Rename to fold_convert_const.
	(fold_convert_const): Change arguments to take a tree_code,
	a type and the operand/expression to be converted.  Return
	NULL_TREE if no simplification is possible.  Add support for
	FIX_CEIL_EXPR and FIX_FLOOR_EXPR in addition to FIX_TRUNC_EXPR.
	(fold): Handle FIX_CEIL_EXPR and FIX_FLOOR_EXPR.
	Adjust call to fold_convert to match new fold_convert_const.
	Avoid modifying the tree passed to fold in-place.
	
	2004-01-21  Alan Modra  <amodra@bigpond.net.au>
	
	* config/rs6000/sysv4.h (DWARF2_FRAME_REG_OUT): Define.
	* dwarf2out.c (output_cfi): Map regs using DWARF2_FRAME_REG_OUT.
	* doc/tm.texi (DWARF_FRAME_REGNUM, DWARF2_FRAME_REG_OUT): Document.
	
	2004-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
	
	* pa-protos.h (compute_frame_size): Use HOST_WIDE_INT for frame sizes.
	* pa.c (store_reg, store_reg_modify, load_reg, set_reg_plus_d):
	Likewise.  Handle frames larger than 0x7fffffff on 64-bit ports.
	(emit_move_sequence): Check scratch_reg first in various if statements.
	Extend source simplification to handle all 64-bit CONST_INTs.
	(pa_output_function_prologue): Use HOST_WIDE_INT_PRINT_DEC for printing
	frame size.
	(hppa_expand_prologue, hppa_expand_epilogue): Use HOST_WIDE_INT for
	frame offset calculations.
	* pa.h (NEW_HP_ASSEMBLER): Add comment.
	(MAX_LEGIT_64BIT_CONST_INT, MIN_LEGIT_64BIT_CONST_INT,
	LEGITIMATE_64BIT_CONST_INT_P): Define.
	(LEGITIMATE_CONSTANT_P): Use LEGITIMATE_64BIT_CONST_INT_P.  Treat
	any CONST_INT as legitimate during and after reload.
	(VAL_32_BITS_P, INT_32_BITS): Define.
	(LEGITIMIZE_RELOAD_ADDRESS): Handle large frame offsets.
	
	2004-01-20  Jan Hubicka  <jh@suse.cz>
	
	* emit-rtl.c (verify_rtx_sharing, copy_insn_1,
	emit_copy_of_insn_after, emit_copy_of_insn_after): Clobbers
	containing hard regs are shared.
	(gen_hard_reg_clobber): New function.
	(hard_reg_clobbers): New array.
	* genemit.c (gen_exp): Use gen_hard_reg_clobber.
	(copy_rtx): Do not copy clobbers containing hard regs.
	* rtl.h (gen_hard_reg_clobber): Declare.
	
	2004-01-20  Jan Hubicka  <jh@suse.cz>
	
	* varray.c:  Include hashtab.h
	(varray_descriptor): New structure.
	(hash_descriptor, eq_descriptor, varray_descriptor,
	print_statistics): New static functions
	(varray_init, varray_grow): Update statistics
	(dump_varray_statistics): New function.
	* varray.h (dump_varray_statistics): Declare.
	* toplev.c (finalize): Call it.
	* Makefile.in (varray.o): Add dependency.
	
	2004-01-20  Jan Hubicka  <jh@suse.cz>
	
	* cselib.c: Include alloc-pool.h
	(empty_vals, empty_elt_lists, empty_elt_loc_lists): Kill.
	(elt_loc_list_pool, elt_list_pool, cselib_val_pool): Declare.
	(new_elt_list, new_elt_loc_list, unchain_one_elt_list,
	unchain_one_elt_loc_list_pool, unchain_one_value,
	new_cselib_val): Simplify using allocpool.
	(cselib_init): Initialize allocpools.
	(cselib_finish): Finish allocpools.
	* Makefile.in (cselib.o): Depend on alloc-pool.h
	
	2004-01-20  Richard Sandiford  <rsandifo@redhat.com>
	
	* config/mips/mips.c (mips_load_call_address): Make the call insn
	use $gp if it could be calling a lazy binding stub.
	
	2004-01-20  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/s390/s390.c (TARGET_PROMOTE_FUNCTION_ARGS): Define.
	(TARGET_PROMOTE_FUNCTION_RETURN): Likewise.
	(TARGET_STRUCT_VALUE_RTX): Likewise.
	* config/s390/s390.h (PROMOTE_FUNCTION_ARGS): Remove.
	(PROMOTE_FUNCTION_RETURN): Remove.
	(STRUCT_VALUE): Remove.
	
	2004-01-20  Denis Chertykov  <denisc@overta.ru>
	
	PR bootstrap/13735
	* config/avr/avr.h (BASE_REG_CLASS): Don't permit to use X
	register as pointer after reload.
	
	2004-01-20  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
	
	PR optimization/12440
	* loop.c: Include ggc.h.
	(loop_optimize): Run garbage collector between optimization of loops.
	* Makefile.in (loop.o): Add GGC_H dependency.
	
	2004-01-20  Hartmut Penner  <hpenner@de.ibm.com>
	
	* gcc/config/rs6000/rs6000.c (function_arg) Handle
	vector register special in function without prototype.
	(function_arg_advance): Vector parameters get always
	GPRs allocated for the linux64 target.
	
	2004-01-20  Kazuhiro Inaoka  <inaoka.kazuhiro@renesas.com>
	
	* config/m32r/m32r.h (TARGET_M32R2). Test for TARGET_M32R2_MASK
	not TARGET_M32RX_MASK.
	
	2004-01-20  Eric Botcazou  <ebotcazou@libertysurf.fr>
	
	PR target/13557
	* config/sparc/sparc.c (function_arg): Reorder the cases.
	
	2004-01-19  Per Bothner  <per@bothner.com>
	
	Move cpp_reader's line_maps field to a shared global.
	* cpphash.h (cpp_reader):  Rename line_maps field to line_table
	and change the type to a pointer rather than a struct.
	* cppinit.c (cpp_push_main_field):  Adjust accordingly.
	* cpplib.c (do_include_common, _cpp_do_file_change, cpp_get_callbacks):
	Likewise.
	* cppfiles.c (validate_pch):  Likewise.
	* cppmacro.c (_cpp_warn_if_unused_macro, _cpp_builtin_macro_text):
	Likewise.
	* cpperror.c (print_location):  Likewise.
	* cpplib.h (cpp_create_reader):  New line_maps pointer parameter.
	* cppinit.c (cpp_create_reader):  Handle new parameter.
	(cpp_destroy):  Don't free line_maps - that's no longer our job.
	* input.h (line_table):  New variable.
	* toplev.c (line_table):  Declare variable.
	(general_init):  Initialize line_table.
	* c-opts.c (c_common_init_options):  Pass line_table to
	cpp_create_reader.
	* fix-header.c (read_scan_file):  New local variable line_table.
	Initialize, and pass it to cpp_create_reader.
	* Makefile.in (LIBS, LIBDEPS):  Add libcpp.a.
	(C_AND_OBJC_OBJS, fix-header):  Remove redundant libcpp.a.
	
	2004-01-19  Per Bothner  <per@bothner.com>
	
	Implement a cache for linemap_lookup.
	* line-map.h (struct_line_maps):  Add cache field.
	* line-map.c (linemap_init):  Zero cache field.
	(linemap_add):  Set cache field to offset of newly allocated map.
	(linemap_lookup):  Use and set cache field.
	
	2004-01-20  Kaz Kojima  <kkojima@gcc.gnu.org>
	
	PR optimization/13567
	* cse.c (cse_basic_block): Call cse_insn with a non-null
	libcall_insn for the last SET insn of a no-confilict block.
	
	2004-01-20  Kelley Cook  <kcook@gcc.gnu.org>
	
	* Makefile.in (target_noncanonical, program_transform_name): Use
	immediate define instead of deferred.
	(GCC_INSTALL_NAME, GCC_TARGET_INSTALL_NAME, CPP_INSTALL_NAME,
	PROTOIZE_INSTALL_NAME, UNPROTOIZE_INSTALL_NAME, GCOV_INSTALL_NAME,
	GCCBUG_INSTALL_NAME): Define via a immediate $(shell) instead of
	deferred backquote.
	
	2004-01-20  Joseph S. Myers  <jsm@polyomino.org.uk>
	
	* c-decl.c (c_init_decl_processing): Set pedantic_lvalues to
	true unconditionally.
	* c-typeck.c (unary_complex_lvalue, pedantic_lvalue_warning):
	Remove.
	(build_unary_op, build_modify_expr): Don't handle extended
	lvalues.
	(build_component_ref, build_conditional_expr): Call non_lvalue
	instead of pedantic_non_lvalue.
	(build_c_cast): Don't condition use of non_lvalue on pedantic.
	* fold-const.c (fold): Don't check pedantic directly for
	COMPOUND_EXPR.  Ensure that results for COMPOUND_EXPR are
	passed to pedantic_non_lvalue.
	* doc/extend.texi: Remove documentation of extended lvalues.
	
	2004-01-19  Roger Sayle  <roger@eyesopen.com>
	
	PR optimization/5263
	* simplify-rtx.c (associative_constant_p): Delete.
	(simplify_associative_operation): Rewrite to linearize terms, and
	attempt to simplify new term against both left and right subterms.
	(simplify_binary_operation): Call swap_commutative_operands_p on
	op0 and op1, not trueop0 and trueop1.  Move the initialization of
	trueop0 and trueop1 down to where first needed.
	(simplify_relational_operation): Likewise.
	* rtlanal.c (commutative_operand_precedence): Also order constant
	operands using avoid_constant_pool_reference.
	
	2004-01-19  Richard Henderson  <rth@redhat.com>
	
	* config/alpha/alpha.c (aligned_memory_operand): Check MEM_ALIGN,
	don't check memory mode.
	(unaligned_memory_operand): Likewise.
	(reload_inqi, reload_inhi, reload_outqi, reload_outhi): Don't
	abort for op0 not MEM.
	
	* config/alpha/alpha.c (alpha_expand_mov_nobwx): If the destination
	is not a reg, copy to a scratch first.
	(aligned_loadqi, aligned_loadhi, unaligned_loadqi, unaligned_loadhi,
	unaligned_loadqi_le, unaligned_loadqi_be, unaligned_loadhi_le,
	unaligned_loadhi_be): Expect op0 in DImode; don't SUBREG.
	(reload_inqi, reload_inhi): Fix mode of op0.
	(reload_inqi_help, reload_inhi_help, reload_outqi_help,
	reload_outhi_help): Likewise.  Use define_insn_and_split.
	
	* config/alpha/alpha.md (call peepholes): Check for REG_NORETURN
	as well as $29 dead.
	
	2004-01-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
	
	* config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): New.  Emit
	"tls_object" for thread-local objects.
	* config/sparc/sparc.c (sparc_elf_asm_named_section): Emit
	"#tls" for thread-local sections.
	* configure.ac (thread-local checks): Specify --fatal-warnings in
	every binutils-specific checks.  For sparc*-*-*, test whether the
	OS is Solaris and the tools are native and act accordingly.
	* configure: Rebuild.
	
	2004-01-19  Jeff Law  <law@redhat.com>
	
	* contrib.texi: Update Paolo Carlini's entry.  New entries for
	Jerry Quinn and Petur Runolfsson.
	
	2004-01-19  Roger Sayle  <roger@eyesopen.com>
	
	* config/i386/i386.md (*movhi_1, *movqi_1): When optimizing for
	size, don't use the larger zero-extending loads.
	
	2004-01-19  Richard Henderson  <rth@redhat.com>
	
	* alpha.h (HARD_REGNO_MODE_OK): Disallow SImode in FP regs.
	* alpha.md (UNSPEC_NT_LDA): Remove.
	(UNSPEC_CVTLQ, cvtlq): New.
	(extendsidi2_1): Rename from extendsidi2_nofix; remove f/f.
	(extendsidi2_fix): Remove.
	(extendsidi2 splitter): Use cvtlq.
	(extendsidi2 fp peepholes): Remove.
	(cvtql): Use SFmode instead of SImode.
	(fix_trunc?fsi): Update to match.
	(floatsisf2_ieee, floatsisf2, floatsidf2_ieee, floatsidf2): New.
	(movsi): Rename from movsi_nofix, remove f alternatives.
	(movsi_nt_vms): Similarly.
	(movsi_fix, movsi_nt_vms_fix): Remove.
	(nt_lda): Remove.
	* alpha.c (alpha_expand_prologue): Use adddi3, not nt_lda.
	
	2004-01-19  Jan Hubicka  <jh@suse.cz>
	
	* cgraph.c (cgraph_remove_node): Fix removal from linked list.
	* cgraphunit.c (cgraph_finalize_compilation_unit): Clear next_needed
	list.
	(cgraph_remove_unreachable_nodes): New function
	(cgraph_decide_inlining_of_small_function): Fix pasto.
	(cgraph_decide_inlining_incrementally): Fix pasto.
	(cgrpah_decide_inlining): Likewise; remove unreachable nodes.
	
	2004-01-19  Steven Bosscher  <stevenb@suse.de>
	
	* gengtype.c (header_file): Make it static.
	(write_types_process_field, write_enum_defn): Minor whitespace fixes.
	* gengtype.h (header_file): No longer extern.
	
	2004-01-18  Kazu Hirata  <kazu@cs.umass.edu>
	
	* defaults.h (CASE_VECTOR_PC_RELATIVE): Provide the default.
	* expr.c (CASE_VECTOR_PC_RELATIVE): Remove.
	* stmt.c (CASE_VECTOR_PC_RELATIVE): Likewise.
	
	2004-01-18  Kazu Hirata  <kazu@cs.umass.edu>
	
	* stmt.c (HAVE_casesi): Define it not already defined.
	(HAVE_tablejump): Likewise.
	(expand_end_case_type): Resort to the binary tree method if
	neither casesi or tablejump is available.
	
	2004-01-18  Daniel Jacobowitz  <drow@mvista.com>
	
	* final.c (final_scan_insn): Make non-static again.
	* output.h (final_scan_insn): Re-add prototype.
	* config/arc/arc.c (arc_output_function_epilogue): Add NULL
	to final_scan_insn call.
	* config/cris/cris.c (cris_target_asm_function_epilogue): Likewise.
	* config/mips/mips.c (mips_output_conditional_branch): Likewise.
	* config/pa/pa.c (output_lbranch, output_call): Likewise.
	* config/sh/sh.c (print_slot): Likewise.
	* config/sparc/sparc.c (sparc_nonflat_function_epilogue): Likewise.
	(output_sibcall, sparc_flat_function_epilogue): Likewise.
	
	2004-01-18  Jan Hubicka  <jh@suse.cz>
	
	* basic-block.h (try_redirect_by_replacing_jump): Declare.
	* cfgcleanup.c (try_optimize_cfg): Use it.
	* cfgrtl.c (try_redirect_by_replacing_jump): Export.
	(rtl_redirect_edge_and_branch, cfg_layout_redirect_edge_and_branch):
	Kill hack.
	(cfg_layout_merge_blocks): Use try_redirect_by_replacing_jump.
	
	Revert:
	2004-01-16  Geoffrey Keating  <geoffk@apple.com>
	
	* cfgrtl.c (try_redirect_by_replacing_jump): Optimize tablejumps
	even after reload, just don't remove the actual jump tables.
	
	2004-01-18  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/rs6000/rs6000.h (STRICT_ARGUMENT_NAMING): Remove.
	
	2004-01-18  Kazu Hirata  <kazu@cs.umass.edu>
	
	* defaults.h (ASM_OUTPUT_ADDR_VEC_ELT): Fix the computation of
	the size of a pointer in bytes.
	
	2004-01-18  Roger Sayle  <roger@eyesopen.com>
	
	* builtins.c (expand_builtin_expect_jump): Fix thinko of reusing
	live "next" variable, which could lead to an infinite loop.
	
	2004-01-18  Andrew Pinski  <pinskia@physics.uc.edu>
	
	* config/rs6000/altivec.h: Wrap C++ functions in extern "C++"
	block.
	
	* config/rs6000/rs6000.c (rs6000_special_round_type_align):
	Check for NULL in the chain and remove repeated code.
	
	2004-01-18  Jan Hubicka  <jh@suse.cz>
	
	* coverage.c (checksum_string): Rename to ...
	(coverage_checksum_string): ... this one, Use crc32_string; recognize
	names containing random number and zero the number out in order to get
	match.
	
	2004-01-18  Richard Sandiford  <rsandifo@redhat.com>
	
	* config/mips/mips.c (mips_got_alias_set): Mark for PCH.
	
	2004-01-18  Joseph S. Myers  <jsm@polyomino.org.uk>
	
	* doc/c-tree.texi, doc/cpp.texi, doc/extend.texi,
	doc/frontends.texi, doc/gcov.texi, doc/gty.texi, doc/install.texi,
	doc/invoke.texi, doc/libgcc.texi, doc/md.texi, doc/rtl.texi,
	doc/sourcebuild.texi, doc/standards.texi, doc/tm.texi,
	doc/trouble.texi: Remove trailing whitespace.
	
	2004-01-18  Richard Sandiford  <rsandifo@redhat.com>
	
	PR target/7618
	* config/mips/mips.c: Include cfglayout.h.
	(TARGET_ASM_OUTPUT_MI_THUNK, TARGET_ASM_CAN_OUTPUT_MI_THUNK): Define.
	(mips_unspec_offset_high): Add temporary register argument.
	(mips_load_call_address): New function, split out from...
	(mips_expand_call): ...here.
	(mips_output_cplocal): New function.
	(mips_output_function_prologue, mips_output_function_epilogue): Use it.
	(mips_emit_loadgp): New function, split out from...
	(mips_expand_prologue): ...here.
	(mips_output_mi_thunk): New function.
	
	2004-01-17  Bernardo Innocenti  <bernie@develer.com>
	
	* longlong.h (mc68020, __mc68030__, mc68030, __mc68040__, mc68040,
	mcpu32): Remove redundant checks for implied target predefines.
	
	2004-1-17  Andrew Pinski  <pinskia@physics.uc.edu>
	
	* config/rs6000/rs6000.c (rs6000_special_round_type_align):
	Return type is unsigned int not int.
	* config/rs6000/rs6000-protos.h (rs6000_special_round_type_align):
	Likewise.
	
	2004-01-18  Joseph S. Myers  <jsm@polyomino.org.uk>
	
	* doc/contrib.texi, doc/cppenv.texi, doc/extend.texi,
	doc/install.texi, doc/invoke.texi, doc/tm.texi: Consistently use
	"GNU/Linux" and "Microsoft Windows" terminology.
	
	2004-01-18  Joseph S. Myers  <jsm@polyomino.org.uk>
	
	* doc/c-tree.texi, doc/compat.texi, doc/cpp.texi,
	doc/cppopts.texi, doc/extend.texi, doc/install.texi,
	doc/interface.texi, doc/invoke.texi, doc/libgcc.texi, doc/md.texi,
	doc/objc.texi, doc/rtl.texi, doc/tm.texi, doc/trouble.texi: Use
	@smallexample instead of @example.
	
	2004-01-17  Ziemowit Laski  <zlaski@apple.com>
	
	* objc/objc-act.c (build_objc_method_call): Use target
	hooks instead of macros to determine if ..._stret
	dispatchers should be used (NeXT runtime only).
	
	2004-01-17  Roger Sayle  <roger@eyesopen.com>
	
	* builtins.c (expand_builtin_expect_jump): Fix mistake in my
	last patch.  Use XEXP (x, 0) to get a LABEL_REF's CODE_LABEL.
	
	2004-01-17  Daniel Jacobowitz  <drow@mvista.com>
	
	* rtl.h (emit_insn_before_sameloc, emit_jump_insn_before_sameloc)
	(emit_call_insn_before_sameloc, emit_insn_after_sameloc)
	(emit_jump_insn_after_sameloc, emit_call_insn_after_sameloc): New
	macros.
	* reload1.c (emit_reload_insns): Use them.
	* emit-rtl.c (emit_insn_before_sameloc, emit_insn_after_sameloc)
	(emit_jump_insn_after_sameloc, emit_call_insn_after_sameloc): Check
	for NULL PATTERN.
	
	2004-01-17  Daniel Jacobowitz  <drow@mvista.com>
	
	* final.c (SEEN_BB, SEEN_NOTE, SEEN_EMITTED): Define.
	(final_scan_insn): Update to take an additional SEEN argument.  Emit
	a line note after the prologue.  Make static.
	(line_note_exists): Remove.
	(final): Don't initialize line_note_exists.  Update call to
	final_scan_insn.
	* output.h (final_scan_insn): Remove prologue.
	* function.c (set_insn_locators): Update comment.
	(thread_prologue_and_epilogue_insns): Add a comment.
	
	2004-01-17  Andrew Pinski  <pinskia@physics.uc.edu>
	
	PR target/10781
	* config/rs6000/rs6000-protos.h (rs6000_special_round_type_align):
	Prototype.
	* config/rs6000/rs6000.c (rs6000_special_round_type_align):
	New function.
	* config/rs6000/linux64.h (ROUND_TYPE_ALIGN): Use it.
	* config/rs6000/aix.h (ROUND_TYPE_ALIGN): Likewise.
	* config/rs6000/darwin.h (ROUND_TYPE_ALIGN): Likewise.
	
	2004-01-17  Jan Hubicka  <jh@suse.cz>
	
	* toplev.c (rest_of_handle_reorder_blocks): Fix pasto in previous
	commit.
	
	* toplev.c (HAVE_conditional_execution): Provide default.
	(rest_of_handle_reorder_blocks): For conditional_execution target
	update liveness once after all transformations
	(rest_of_compilation): Do crossjumping before ce3.
	
	2004-01-17  Geoffrey Keating  <geoffk@apple.com>
	
	* alias.c (new_alias_set): Mark last_alias_set for PCH.
	(get_varargs_alias_set): Rename 'set' to 'varargs_set' and mark it
	for PCH.
	(get_frame_alias_set): Likewise, except rename it to 'frame_set'.
	* config/rs6000/rs6000.c (rs6000_sr_alias_set): Mark for PCH.
	(get_TOC_alias_set): Mark 'set' for PCH.
	
	2004-01-16  Geoffrey Keating  <geoffk@apple.com>
	
	* cfgrtl.c (try_redirect_by_replacing_jump): Optimize tablejumps
	even after reload, just don't remove the actual jump tables.
	
	2004-01-17  J. Brobecker  <brobecker@gnat.com>
	
	* dwarf2out.c (is_subrange_type): Renamed from is_ada_subrange_type().
	Remove checks for is_ada() and TREE_UNSIGNED.
	(subrange_type_die): Emit a byte_size attribute if the subrange
	type size is different from the base type size.
	(modified_type_die): Replace call to is_ada_subrange_type() by
	call to is_subrange_type().
	
	2004-01-16  Andrew Pinski  <pinskia@physics.uc.edu>
	
	* config/sh/sh.c: Include ggc.h.
	
	2004-01-16  Geoffrey Keating  <geoffk@apple.com>
	
	* Makefile.in (MD5_H): New.
	(fold-const.o): Depend on md5.h.
	(dwarf2out.o): Likewise.
	(cppfiles.o): Likewise.
	* cppfiles.c: Include md5.h.
	(should_stack_file): Check against list read from PCH file.
	(struct pchf_data): New.
	(pchf): New variable.
	(struct pchf_adder_info): New.
	(pchf_adder): New.
	(pchf_save_compare): New.
	(_cpp_save_file_entries): New.
	(_cpp_read_file_entries): New.
	(struct pchf_compare_data): New.
	(pchf_compare): New.
	(check_file_against_entries): New.
	* cpphash.h (_cpp_save_file_entries): Prototype.
	(_cpp_read_file_entries): Prototype.
	* cpppch.c (cpp_write_pch_state): Write the list of headers.
	(cpp_read_state): Read the list of headers.
	
	2004-01-17  Jan Hubicka  <jh@suse.cz>
	
	* c-common.c (c_estimate_num_insns_1): Handle builtin_constant_p and
	builtin_expect specially.
	* params.def (PARAM_MAX_INLINE_INSNS_AUTO): Set to 100.
	(PARAM_LARGE_FUNCTION_INSNS): Set to 3000.
	* invoke.texi (max-inline-insns-single): Set to 100.
	(large-function-insns): Set to 3000.
	
	2004-01-16  Eric Christopher  <echristo@redhat.com>
	Chandrakala Chavva <cchavva@redhat.com>
	
	* cppcharset.c (one_iso88591_to_utf8): New function.
	(convert_iso88591_utf8): Ditto. Use.
	(conversion_tab): Use.
	(_cpp_input_to_utf8): New function.
	(_cpp_init_iconv_buffer): Ditto.
	(_cpp_close_iconv_buffer): Ditto.
	* cpphash.h: Prototype new functions.
	(cpp_buffer): Add input_cset_desc.
	* cppinit.c: Add input_charset default.
	* cpplib.c (cpp_push_buffer): Support init and
	close of iconv.
	* cpplib.h (cpp_options): Add input_charset.
	
	2004-01-16  Kazu Hirata  <kazu@cs.umass.edu>
	
	* system.h (ASM_OUTPUT_SECTION_NAME): Poison.
	* config/alpha/unicosmk.h: Remove a commented-out definition
	of ASM_OUTPUT_SECTION_NAME.
	* config/stormy16/stormy16.h: Likewise.
	
	2004-01-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
	
	* fixinc/inclhack.def (alpha___extern_prefix): Renamed to ...
	(alpha___extern_prefix_sys_stat): ... this.
	Apply to <sys/mount.h>, too.
	Tweak to match more variations.
	* fixinc/tests/base/sys/stat.h: Adapt for new hackname.
	
	* fixinc/inclhack.def (alpha___extern_prefix,
	alpha___extern_prefix_standards): New hacks to obey
	__PRAGMA_EXTERN_PREFIX.
	* fixinc/tests/base/testing.h [ALPHA___EXTERN_PREFIX_CHECK]: New
	test.
	* fixinc/tests/base/standards.h: Likewise.
	
	* fixincl/inclhack.def (alpha_pthread): Tweak to match more
	variations.
	New testcase.
	* fixinc/tests/base/pthread.h: Handle it.
	
	* fixincl/inclhack.def (bad_lval): Sort file list.
	Add many missing files up to Tru64 UNIX V5.1B.
	* gcc/fixinc/tests/base/libgen.h: Renamed to ...
	* gcc/fixinc/tests/base/dirent.h: ... this to match new file list
	order.
	
	* fixinc/fixincl.x: Regenerate.
	
	2004-01-16  Mark Mitchell  <mark@codesourcery.com>
	
	* version.c (version_string): Change to 3.5.0.
	* doc/include/gcc-common.texi (version-GCC): Likewise.
	
	2004-01-16  Jan Hubicka  <jh@suse.cz>
	
	* i386.md (load_tp_di): Fix pasto.
	
	PR opt/13608
	* i386.c (ix86_compute_frame_layout): Fix for alloca on leaf function.
	
	* c-pretty-print.c (pp_c_type_cast, pp_c_abstract_declarator,
	pp_c_character_constant, pp_c_floating_constant,
	pp_c_additive_expression, pp_c_shift_expression,
	pp_c_equality_expression, pp_c_and_expression,
	pp_c_exclusive_or_expression, pp_c_inclusive_or_expression,
	pp_c_logical_and_expression): Remove inline modifier.
	* dwarf2out.c (get_AT): Likewise.
	* et-forest.c (et_splay): Likewise.
	* ra.h (ra_alloc, ra_calloc): Likewise
	
	2004-01-16  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/frv/frv-protos.h: Fix comment formatting.
	* config/frv/frv.c: Likewise.
	* config/frv/frv.h: Likewise.
	* config/frv/frv.md: Likewise.
	* config/frv/frvbegin.c: Likewise.
	* config/frv/frvend.c: Likewise.
	
	2004-01-16  Kazu Hirata  <kazu@cs.umass.edu>
	
	* system.h (LINKER_DOES_NOT_WORK_WITH_DWARF2): Poison.
	* doc/tm.texi (PREFERRED_DEBUGGING_TYPE): Don't mention
	LINKER_DOES_NOT_WORK_WITH_DWARF2.
	(LINKER_DOES_NOT_WORK_WITH_DWARF2): Remove.
	
	2004-01-16  J"orn Rennecke <joern.rennecke@superh.com>
	
	PR 11864
	* postreload.c (reload_cse_simplify_operands): Don't remove
	implicit extension from LOAD_EXTEND_OP.
	
	2004-01-16  Jan Hubicka  <jh@suse.cz>
	
	PR opt/11350
	* cfgcleanup.c (try_optimize_cfg): Suppress tablejump removal
	after reload.
	* cfgrtl.c (rtl_can_merge_blocks, cfglayout_can_merge_blocks,
	rtl_try_redirect_by_replacing_branch): Likewise.
	
	2004-01-15  Geoffrey Keating  <geoffk@apple.com>
	
	PR pch/13689
	* alias.c (struct alias_set_entry): Mark for GC.
	(alias_sets): Make static, mark for GC.
	(record_alias_subset): Use GC to allocate alias structures.
	* varray.c (element): Make generic varrays GCed.
	
	PR pch/13361
	* c-typeck.c (constructor_asmspec): Delete.
	(struct initializer_stack): Delete field 'asmspec'.
	(start_init): Delete saving of asmspec.
	(finish_init): Don't update constructor_asmspec.
	* dwarf2out.c (rtl_for_decl_location): Duplicate string from tree.
	* stmt.c (expand_asm): Duplicate strings from tree.
	(expand_asm_operands): Likewise.
	* tree.c (tree_size): Update computation of size of STRING_CST.
	(make_node): Don't make STRING_CST nodes.
	(build_string): Allocate string with tree node.
	* tree.def (STRING_CST): Update comment.
	* tree.h (TREE_STRING_POINTER): Adjust for change to STRING_CST.
	(tree_string): Place contents of string in tree node.
	* config/sh/sh.c (sh_handle_sp_switch_attribute): Duplicate string
	from tree.
	
	* config/rs6000/rs6000.c (rs6000_va_arg): No need to special-case
	altivec operands.
	
	2004-01-15  Kazu Hirata  <kazu@cs.umass.edu>
	
	* c-common.h: Fix comment formatting.
	* c-cppbuiltin.c: Likewise.
	* c-pragma.c: Likewise.
	* calls.c: Likewise.
	* collect2.c: Likewise.
	* cppcharset.c: Likewise.
	* cpptrad.c: Likewise.
	* dbxout.c: Likewise.
	* defaults.h: Likewise.
	* dwarf2out.c: Likewise.
	* fold-const.c: Likewise.
	* genautomata.c: Likewise.
	* genconditions.c: Likewise.
	* genflags.c: Likewise.
	* gengtype.c: Likewise.
	* integrate.c: Likewise.
	* loop.c: Likewise.
	* predict.c: Likewise.
	* sdbout.c: Likewise.
	
	2004-01-15  Zack Weinberg  <zack@codesourcery.com>
	
	* config/ia64/ia64.md (*movti_internal): C output template
	extracted to ia64.c.
	(*movti_internal_reg): Delete.
	(reload_inti, reload_outti): Use the correct mode on operand 2
	in the first place, don't fix it up in the output template.
	(movtf, reload_ointf, reload_outtf): New expanders.
	(*movtf_internal): New define_insn_and_split.
	* config/ia64/ia64.c (ia64_split_timode): Rename to ia64_split_tmode;
	make static; do not hand TFmode CONST_DOUBLEs to split_double.
	(ia64_split_tmode_move): New function, body mostly pulled
	from ia64.md:*movti_internal.
	(ia64_function_arg_words): New function, extracted common
	logic from ia64_function_arg et seq.
	(ia64_function_arg_offset): Likewise.  Handle correctly the
	case of a scalar quantity 16 bytes wide with only 8-byte alignment.
	(ia64_function_arg, ia64_function_arg_partial_nregs)
	(ia64_function_arg_advance): Use ia64_function_arg_words and
	ia64_function_arg_offset.
	(ia64_function_value): TCmode does not go in float regs.
	(ia64_secondary_reload_class): Also handle TFmode.
	* config/ia64/ia64-protos.h: Remove prototype for
	ia64_split_timode; add prototype for ia64_split_tmode_move.
	
	2004-01-15  Kelley Cook  <kcook@gcc.gnu.org>
	
	* Makefile.in (MAINT): Make it an immediate assignment.
	
	2004-01-15  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/m32r/m32r.md: Remove useless calls to gen_lowpart.
	
	2004-01-15  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/h8300/coff.h: Replace Hitachi with Renesas.
	* config/h8300/elf.h: Likewise.
	* config/h8300/h8300-protos.h: Likewise.
	* config/h8300/h8300.c: Likewise.
	* config/h8300/h8300.h: Likewise.
	* config/h8300/h8300.md: Likewise.
	* config/h8300/lib1funcs.asm: Likewise.
	
	2004-01-15  Andrew Pinski  <apinski@apple.com>
	
	* config/rs6000/rs6000.c (uses_TOC): Wrap #if TARGET_ELF
	around it.
	
	2004-01-15  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/h8300/h8300.c (h8300_return_in_memory): New.
	(TARGET_STRUCT_VALUE_RTX): Likewise.
	(TARGET_RETURN_IN_MEMORY): Likewise.
	* config/h8300/h8300.h (STRUCT_VALUE): Remove.
	(RETURN_IN_MEMORY): Likewise.
	
	2004-01-15  Richard Earnshaw  <rearnsha@arm.com>
	
	PR optimization/13375
	* gcse.c (handle_avail_expr): Just return if the source is not a
	single set.
	
	2004-01-15  Richard Earnshaw  <rearnsha@arm.com>
	Daniel Jacobowitz  <drow@mvista.com>
	
	* arm/lib1funcs.asm (ARM_FUNC_START): Correct interworking case.
	(EQUIV): Define.
	(ARM_FUNC_ALIAS): New macro.
	* arm/ieee754-df.S (gedf2, ledf2, nedf2, eqdf2): Use it.
	* arm/ieee754-sf.S (gesf2, lesf2, nesf2, eqsf2): Use it.
	
	2004-01-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
	
	PR optimization/12372
	* calls.c (expand_call): Add call_fusage data for stack arguments in
	constant calls.
	
	2004-01-15  Alan Modra  <amodra@bigpond.net.au>
	
	* config/rs6000/rs6000.c (uses_TOC): Correct comment.  Make static.
	(rs6000_elf_declare_function_name): Formatting.
	* config/rs6000/rs6000-protos.h (uses_TOC): Remove declaration.
	
	2004-01-15  Jan Hubicka  <jh@suse.cz>
	
	PR bootstrap/13692
	* sched-deps.c (sched_analyze_1, sched_analyze_2): Fix thinko in
	previous patch.
	
	2004-01-15  Richard Henderson  <rth@redhat.com>
	
	* config/alpha/alpha.h (REG_ALLOC_ORDER): Reorder fp regs after
	integer regs of the same call-savedness.
	
	2004-01-15  Andreas Schwab  <schwab@suse.de>
	
	PR bootstrap/13562
	* config/m68k/m68k.c (output_move_const_into_data_reg): Clear cc
	status for NOTB/NOTW/NEGW methods.
	
	2004-01-15  Kazu Hirata  <kazu@cs.umass.edu>
	
	* doc/invoke.texi: Update dump file names.  Fix a typo.
	
	2004-01-15  Kazu Hirata  <kazu@cs.umass.edu>
	
	* builtins.c (expand_builtin_va_end): Don't use
	EXPAND_BUILTIN_VA_END.
	* system.h (EXPAND_BUILTIN_VA_END): Poison.
	* config/d30v/d30v.h: Remove a commented-out definition of
	EXPAND_BUILTIN_VA_END.
	* config/stormy16/stormy16.h: Likewise.
	
	2004-01-15  Kazu Hirata  <kazu@cs.umass.edu>
	
	* system.h (STRUCT_VALUE_INCOMING_REGNUM): Poison.
	* targhooks.c (default_struct_value_rtx): Don't use
	STRUCT_VALUE_INCOMING_REGNUM.
	
	2004-01-15  Kelley Cook  <kcook@gcc.gnu.org>
	
	PR bootstrap/12744
	* configure.in: Revamp enable-generated-files-in-srcdir rule to define
	GENINSRC and not parsedir.  Define srcextra as a langhook.
	* configure: Regenerate.
	* Makefile.in: Suppress default .l.c rule.  Don't substitute
	parsedir and delete all references throughout.  Conditionally define
	rule for srcextra dependent on GENINSRC.
	(stmp-docobjdir): Delete.
	(c-parse.o, gengtype-lex.o, gengtype-yacc.o): Use implicit build rule.
	(srcextra): Copy c-parse.y, c-parse.c, gengtype-lex.c, gengtype-yacc.c,
	and gengtype-yacc.h back to source directory.
	(maintainer-clean): Delete all parse files in source directory.
	(distclean): Delete generated files.
	
	* objc/Make-lang.in (objc-parse.o): Use implicit build rule.
	(objc-parse.c, objc-parse.y): Don't use parsedir.
	(objc.srcextra): Copy objc-parse.y and objc-parse.c back to source
	directory if requested.
	(po-generated): Don't use parsedir.
	(objc.maintainer-clean): Delete above files from source directory.
	
	2004-01-14  Kazu Hirata  <kazu@cs.umass.edu>
	
	* doc/tm.texi (FUNCTION_VALUE): Fix a typo.
	
	2004-01-14  Kazu Hirata  <kazu@cs.umass.edu>
	
	* doc/tm.texi: Replace RETURN_IN_MEMORY with
	TARGET_RETURN_IN_MEMORY.
	
	2004-01-15  Jan Hubicka  <jh@suse.cz>
	
	* builtins.c (std_expand_builtin_va_arg): Align operand when needed.
	* i386.c (init_cumulative_args): Set warn_sse; fix handling of variadic
	functions accepting SSE arguments
	(function_arg): Warn only when asked to warn.
	* i386.h (ix86_args): Add warn_sse/warn_mmx fiels.
	
	2004-01-14  Joseph S. Myers  <jsm@polyomino.org.uk>
	
	* c-parse.in (stmts_and_decls): Make label at end of compound
	statement a hard error.
	
	2004-01-14  Jan Hubicka  <jh@suse.cz>
	
	* cgraph.c (create_edge): Use local.redefined_extern_inline.
	* cgraph.h (cgraph_local_info): Sort fields by size; add
	redefined_extern_inline
	(cgraph_global_info): Sort fields by size.
	(cgraph_node): Likewise.
	* cgraphunit.c (cgraph_finalize_function): Se
	local.redefined_extern_inline on redefinition.
	(cgraph_analyze_function): Use it; fix formating.
	
	2004-01-14  Jan Hubicka  <jh@suse.cz>
	
	PR c++/10776
	* sched-deps.c (trye_dependency_cache, anti_dependency_cache,
	outptu_dependency_cache, forward_dependency_cahe): Trun to vectors of
	bitmaps
	(cache_size): New variable
	(add_dependence): Update use; canonize early memory locations
	(sched_analyze_1): Likewise.
	(sched_analyze_2): Likewise.
	(init_dependency_caches): Initialize bitmaps.
	(free_dependency_caches): Free bitmaps
	
	2004-01-14  Kazu Hirata  <kazu@cs.umass.edu>
	
	* calls.c: Replace STRICT_ARGUMENT_NAMING in comments with
	targetm.calls.strict_argument_naming().
	* target.h: Likewise.
	
	2004-01-14  Richard Henderson  <rth@redhat.com>
	
	PR debug/13231
	* dwarf2out.c (dwarf2out_stack_adjust): Skip prologue and epilogue
	instructions.
	
	2004-01-14  Richard Henderson  <rth@redhat.com>
	
	PR c++/12491
	* except.c (struct eh_region): Add u.fixup.resolved.
	(resolve_one_fixup_region): Split out from ...
	(resolve_fixup_regions): ... here.
	
	2004-01-14  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/mn10300/mn10300.h (STRUCT_VALUE): Change to 0.
	
	2004-01-14  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/alpha/alpha.h (STRUCT_VALUE): Remove.
	* config/alpha/vms.h (STRUCT_VALUE_REGNUM): Remove #undef.
	(STRUCT_VALUE): Remove.
	
	2004-01-14  Steven Bosscher  <stevenb@suse.de>
	
	* system.h: Poison PROMOTED_MODE
	* integrate.c (expand_inline_function): Don't mention the
	PROMOTED_MODE.
	* loop.c (update_giv_derive): Same.
	* tree.h (DECL_RTL): Same.
	
	2004-01-14  J"orn Rennecke <joern.rennecke@superh.com>
	
	PR target/9365
	* sh.c (gen_block_redirect): Add special handling of RETURN.
	(gen_far_branch) Don't call gen_stuff_delay_slot if there is no
	far branch target (i.e. it's a return).
	
	2004-01-14  Kazu Hirata  <kazu@cs.umass.edu>
	
	* regrename.c (find_oldest_value_reg): Fix a warning.
	
	2004-01-14  Richard Earnshaw  <rearnsha@arm.com>
	
	PR bootstrap/12527
	* config.gcc (arm*-*-linux*): Don't include unknown-elf.h in tm_file.
	Move linux-gas.h and linux-elf.h before aout.h.
	* arm/arm.h (INITIALIZE_TRAMPOLINE): Only define if not already.
	* arm/linux-elf.h (SUBTARGET_CPU_DEFAULT): Define.
	
	2004-01-14  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/m32r/m32r.md: Use GEN_INT instead of gen_rtx
	(CONST_INT, VOIDmode, ...).
	
	2004-01-14  Richard Earnshaw  <rearnsha@arm.com>
	
	* regrename.c (find_oldest_value_reg): If the replacement uses
	multiple hard registers, check that all of them are in CLASS.
	
	2004-01-14  Jan Hubicka  <jh@suse.cz>
	
	* alias.c (get_alias_set):  Initialize alias set to 0 when subset is
	impossible.
	
	2004-01-14  Kelley Cook  <kcook@gcc.gnu.org>
	
	* Makefile.in: Define MAINT from --enable-maintainer-mode.
	
	2004-01-14  Hartmut Penner  <hpenner@de.ibm.com>
	
	* gcc/config/rs6000/rs6000.c (rs6000_stack_info)
	Calculate always vrsave_mask if TARGET_ALTIVEC.
	(rs6000_emit_prologue): Emit code for vrsave
	only if TARGET_ALTIVEC_VRSAVE.
	(rs6000_emit_epilogue): Likewise.
	
	2004-01-14  Eric Botcazou  <ebotcazou@libertysurf.fr>
	
	* config/sparc/sparc.md (tie_add32): Fix pasto.
	(tie_add64): Likewise.
	
	2004-01-14  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
	
	* config/i386/i386.md (*addqi_1_slp): Do not access operands[2].
	
	2004-01-13  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/iq2000/iq2000-protos.h: Fix comment formatting.
	* config/iq2000/iq2000.c: Likewise.
	* config/iq2000/iq2000.md: Likewise.
	
	2004-01-14  J. Brobecker  <brobecker@gnat.com>
	
	* dwarf2out.c (is_ada_subrange_type): No longer check the TYPE_NAME.
	(subrange_type_die): Add handle for nameless subrange types.
	
	2004-01-13  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/h8300/h8300-protos.h: Replace do_movsi with
	h8300_expand_movsi.
	* config/h8300/h8300.c (do_movsi): Change to
	h8300_expand_movsi.
	* config/h8300/h8300.md (movsi): Replace do_movsi with
	h8300_expand_movsi.
	(movsf): Likewise.
	
	2004-01-13  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/h8300/h8300.c (dosize): Change to
	h8300_emit_stack_adjustment.  Update callers.
	
	2004-01-13  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/h8300/h8300.md (movstrictqi): Add an alternative with
	the source being post_inc.  Tighten the predicate for the
	destination to register_operand.
	(movstricthi): Likewise.
	
	2004-01-13  Kazu Hirata  <kazu@cs.umass.edu>
	
	* system.h (SHARED_BSS_SECTION_ASM_OP): Poison.
	* varasm.c (bss_section): Don't use SHARED_BSS_SECTION_ASM_OP.
	* doc/tm.texi (SHARED_BSS_SECTION_ASM_OP): Remove.
	
	2004-01-14  Jan Hubicka  <jh@suse.cz>
	
	Partial fix PR c++/12850
	* cgraphunit.c (cgraph_finalize_function): Always ggc_collect when
	at zero nest level.
	
	2004-01-13  Bernardo Innocenti  <bernie@develer.com>
	
	* config/m68k/netbsd-elf.h (REGISTER_NAMES): Add missing "argptr"
	pseudo-register.
	
	2004-01-13  Devang Patel <dpatel@apple.com
	
	PR debug/7078
	* dbxout.c (dbxout_symbol_name): Emit mangled names for
	NAMESPACE_DECL memebers.
	
	2004-01-13  Andrew Pinski  <pinskia@physics.uc.edu>
	
	PR c++/12709
	* c-common.c (finish_fname_decls): Use the chain only if the
	tree is an expr_stmt.
	
	2004-01-13  Vladimir Makarov  <vmakarov@redhat.com>
	
	* rtl.def: Add comment about new option in automata_option.
	
	* genautomata.c (PROGRESS_OPTION): New macro.
	(progress_flag): New global variable.
	(gen_automata_option): Process `progress'.
	(transform_insn_regexps, check_unit_distributions_to_automata,
	make_automaton, NDFA_to_DFA, build_automaton, create_automata,
	expand_automata, write_automata): Print about the progress only if
	progress_flag.  Remove fflush.
	(initiate_automaton_gen): Process command line flag `-progress'.
	
	* doc/md.texi: Describe the new option.
	
	2004-01-13  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
	
	* cfg.c (dump_bb): Dump entry edges.
	
	2004-01-13  Richard Earnshaw  <rearnsha@arm.com>
	
	* arm.c (thumb_legitimate_address_p): Only allow constant pool
	references from SImode.
	* arm.md (thumb_movhi_insn): Don't allow minipool references.
	
	2004-01-13  Kazu Hirata  <kazu@cs.umass.edu>
	
	* system.h (TEXT_SECTION): Poison.
	* varasm.c (text_section): Don't use TEXT_SECTION.
	* config/sh/sh.c (sh_file_start): Fix a comment typo.
	* doc/tm.texi (TEXT_SECTION): Remove.
	
	2004-01-13  Ben Elliston  <bje@wasabisystems.com>
	
	* doc/rtl.texi (Vector Operations): Remove defunct vec_const item.
	
	2004-01-12  James E Wilson  <wilson@specifixinc.com>
	
	* unwind-libunwind.c: Delete.
	
	2004-01-12  Zack Weinberg  <zack@codesourcery.com>
	
	PR 13656
	* c-decl.c (diagnose_mismatched_decls): Whenever newtype or
	oldtype is set, set *newtypep or *oldtypep too.  Do not set
	them at the very end.
	(validate_proto_after_old_defn): Restructure for comprehensibility;
	make error messages clearer.
	
	2004-01-12  Zack Weinberg  <zack@codesourcery.com>
	
	* varray.h (VARRAY_POP): Add checking variant, aborts on underflow.
	(VARRAY_TOP): Use VARRAY_CHECK so the access is bounds-checked.
	* varray.c: No need to prototype error.
	(varray_check_failed): Wrap long string onto two lines.
	(varray_underflow): New function.
	
	2004-01-13  Steven Bosscher  <stevenb@suse.de>
	
	PR c++/13376
	* function.h (struct function): Kill `name' field.
	(current_function_name): Make it an extern function.
	* function.c (current_function_name): New function.
	* graph.c: Update all uses of current_function_name.
	* gcse.c: Likewise.
	* config/alpha/alpha.c, config/avr/avr.c, config/c4x/c4x.c,
	config/mips/mips.c, config/pdp11/pdp11.c: Likewise.
	* config/ip2k/ip2k.c (function_prologue): Use MAIN_NAME_P
	instead of a strcmp with "main".
	
	2004-01-13  Jan Hubicka  <jh@suse.cz>
	
	* c-decl.c (diagnose_mismatched_decls):  Fix warning calls.
	
	* cgraphunit.c (cgraph_optimize_function):  Always do
	optimize_inline_calls when there is always_inline callee.
	(cgraph_decide_inlining): Fix formating.
	* tree-inline.c (inlinable_function_p): Do sorry for alwaysinline
	functions.
	(expand_call_inline): Likewise.
	* toplev.h (sorry): Fix prototype.
	
	2004-01-12  Roger Sayle  <roger@eyesopen.com>
	
	* builtins.c (expand_builtin_expect_jump): Simplify logic. Handle
	conditional jumps that drop through to unconditional jumps or the
	end of the sequence.
	
	2004-01-13  Jan Hubicka  <jh@suse.cz>
	
	* alias.c (new_alias_set): Construct the alias_set varray.
	(init_alias_once): Don't do it here.
	
	2004-01-12  Marc Espie <espie@openbsd.org>
	
	* system.h: handle YYBYACC like YYBISON.
	
	2004-01-12  Jonathan Merriman <jonm@dualitymedia.com>
	
	PR target/10847
	* config.gcc: No longer includes conflicting header sparc/sol2.h when
	building on sparc64-*-openbsd*.
	
	2004-01-12  Andrew Pinski  <pinskia@physics.uc.edu>
	
	PR debug/13539
	* dbxout.c (dbxout_type): Protected inheritance is not
	private but protected.
	
	2004-01-12  Richard Sandiford  <rsandifo@redhat.com>
	
	* config/mips/mips.c (mips_symbolic_constant_p): Revert last patch.
	
	2004-01-12  Kazu Hirata  <kazu@cs.umass.edu>
	
	PR optimization/12508.
	* combine.c (try_combine): Remove a dead set in a parallel
	even if its destination is a subreg.
	
	Revert:
	2003-06-03  Kazu Hirata  <kazu@cs.umass.edu>
	* combine.c (simplify_set): Don't move a subreg in SET_SRC to
	SET_DEST if WORD_REGISTER_OPERATIONS is not defined.
	
	2004-01-12  Geoffrey Keating  <geoffk@apple.com>
	
	* real.c: Update copyright date.
	* emit-rtl.c: Likewise.
	* rtl.h: Likewise.
	* dwarf2out.c: Likewise.
	* config/rs6000/darwin-ldouble.c: Likewise.
	* config/rs6000/rs6000.md: Likewise.
	
	2004-01-12  David Edelsohn  <edelsohn@gnu.org>
	
	* config/rs6000/rs6000.c (rs6000_init_libfuncs): Add AIX
	TFmode to SImode libfuncs.
	
	2004-01-12  Roger Sayle  <roger@eyesopen.com>
	
	PR middle-end/11397
	* varasm.c (assemble_alias): Remove weak aliases from weak_decls.
	
	2004-01-12  Jan Hubicka  <jh@suse.cz>
	
	PR opt/12826
	* loop.c (insert_loop_mem): Preffer VOLATILE memory references to be
	stored.
	
	PR opt/12863
	* cfgcleanup.c (label_is_jump_target_p): Move to...
	* rtlanal.c (label_is_jump_target_p): ... here.
	* cfgrtl.c (cfg_layout_redirect_edge_and_branch):  Fix redirecting of fallthru
	edges unified with branch edges.
	
	2004-01-12  Richard Earnshaw  <rearnsha@arm.com>
	
	* simplify-rtx.c (simplify_immed_subreg): Correctly extract the
	high word of an integral CONST_DOUBLE.
	
	2004-01-12  Paul Brook  <paul@codesourcery.com>
	
	* simplify-rtx.c (simplify_plus_minus): Always generate canonical form.
	
	2004-01-12  J"orn Rennecke <joern.rennecke@superh.com>
	
	PR target/13585
	* sh-protos.h (check_use_sfunc_addr): Declare.
	* sh.c (extract_sfunc_addr, check_use_sfunc_addr): New functions.
	* sh.md (use_sfunc_addr): Use check_use_sfunc_addr in insn predicate.
	
	2004-01-12  Jan Hubicka  <jh@suse.cz>
	
	* alias.c:  Invlude varray.h
	(alias_sets): Turn into varray.
	(get_alias_set_entry): Use VARRAY; mark inline.
	(mems_in_disjoint_alias_sets_p): Mark inline.
	(record_alias_subset): Use varray.
	(init_alias_once): Initialize varray.
	(new_alias_set): Grow array.
	* varray.c: Make VARRAY_GENERIC_PTR non GTYized.
	
	2004-01-12  Jan Hubicka  <jh@suse.cz>
	
	Partial fix for PR opt/10776 II
	* cselib.c: Include params.h
	(cselib_invalidate_mem):  Limit amount of nonconflicting memory
	locations.
	* params.def (PARAM_MAX_CSELIB_MEMORY_LOCATIONS): New.
	* Makefile.in (cselib.o): Depend on params.h
	
	2004-01-12  Richard Sandiford  <rsandifo@redhat.com>
	
	* combine.c (combine_simplify_rtx): Don't pass VOIDmode to
	simplify_unary_operation if the operand has a known mode.
	
	2004-01-12  Hartmut Penner  <hpenner@de.ibm.com>
	
	PR target/13534
	* gcc/config/rs6000/rs6000.c (word_offset_memref_operand): New
	predicate to handle 'ld' conform addresses.
	* gcc/config/rs6000/rs6000.h (EXTRA_CONSTRAINT): New 'Y'
	contraint.
	(EXTRA_MEMORY_CONSTRAINT): Tell reload which constraint
	are memory contraints.
	* gcc/config/rs6000/rs6000-protos.h (word_offset_memref_operand):
	New prototype.
	* gcc/config/rs6000/rs6000.md (*movdf_hardfloat64):
	Change 'o' to 'Y' constraint.
	(*movdf_softfloat64): Ditto.
	
	2004-01-12  Bernardo Innocenti  <bernie@develer.com>
	
	* gcc/config/m68k/m68k.md: Switch from the "*..." syntax to the
	brace-enclosed syntax in all C output statements.
	
	2004-01-12  David Edelsohn  <edelsohn@gnu.org>
	
	PR target/13401
	* config/rs6000/rs6000.c (rs6000_output_function_epilogue):
	Objective-C language type value is 14.
	
	2004-01-12  Markus F.X.J. Oberhumer  <markus@oberhumer.com>
	
	PR c/12148
	* config/m68k/fpgnulib.c: Fix `-mshort' bugs: Use `long' instead of
	`int' in a number of places to make sure we always have a SImode
	and not a HImode.  Add a 'L' suffix to a number of constants.
	
	2004-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
	
	* pa.c: Don't include obstack.h.
	
	* pa.md: Correct constraint in pattern for loading PIC label address.
	
	2004-01-11  Kaz Kojima  <kkojima@gcc.gnu.org>
	
	* config/sh/linux.h (ASM_PREFERRED_EH_DATA_FORMAT): Undefine
	before defining.
	
	2004-01-11  Steven Bosscher  <stevenb@suse.de>
	
	PR fortran/9972
	* toplev.c (rest_of_handle_inline): Also consider functions
	for deferral if the language is GNU F77.
	
	2004-01-11  Zack Weinberg  <zack@codesourcery.com>
	
	* c-decl.c (diagnose_arglist_conflict): Add missing space to
	diagnostic messages.
	
	2004-01-11  Jakub Jelinek  <jakub@redhat.com>
	
	PR middle-end/13392
	* builtins.c (expand_builtin_expect_jump): Handle conditional jumps
	to drop through label.  Don't fall back to SCC even when conditional
	jump has not been found.
	
	2004-01-11  Jan Hubicka  <jh@suse.cz>
	
	* invoke.texi: Fix syntax error in previous patch.
	
	Partial fix for PR opt/10776
	* Makefile.in (reload.o): Include param.h
	* params.def (PARAM_MAX_RELOAD_SEARCH_INSNS): New parameter.
	* reload.c: Include params.h.
	(find_equiv_reg): Work limiting check.
	* invoke.texi: Document.
	
	2004-01-11  Richard Sandiford  <rsandifo@redhat.com>
	
	* config/mips/mips.c (mips_symbolic_constant_p): Don't allow
	out-of-bounds accesses to string constants.  Simplify mips16
	case accordingly.
	
	2004-01-11  Richard Sandiford  <rsandifo@redhat.com>
	
	PR optimization/13469
	* toplev.c (rest_of_compilation): Call purge_all_dead_edges after
	reload_cse_regs (-fnon-call-exceptions only).
	
	2004-01-11  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/mcore/lib1.asm: Fix comment formatting.
	* config/mcore/mcore-elf.h: Likewise.
	* config/mcore/mcore.c: Likewise.
	* config/mcore/mcore.h: Likewise.
	* config/mcore/mcore.md: Likewise.
	
	2004-01-10  Zack Weinberg  <zack@codesourcery.com>
	
	* c-decl.c (duplicate_decls): Break apart into...
	(diagnose_arglist_conflict, validate_proto_after_old_defn)
	(locate_old_defn, diagnose_mismatched_decls, merge_decls):
	... these new functions.  Restructure for comprehensibility.
	Remove various archaic special cases.  Always report the
	location of the previous declaration when a diagnostic is issued.
	(redeclaration_error_message): Fold into diagnose_mismatched_decls.
	(match_builtin_function_types): Delete unnecessary forward declaration.
	
	2004-01-10  Zack Weinberg  <zack@codesourcery.com>
	
	* genautomata.c (make_automaton, NDFA_to_DFA):
	Print progress bars with '.' characters instead of '*'.
	(build_automaton): Change notes to match.
	
	2004-01-10  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/m32r/m32r.md: Use define_constants for unspec and
	unspec_volatile.
	
	2004-01-10  Jan Hubicka  <jh@suse.cz>
	
	PR opt/11635
	* expr.c (expand_expr_real):  More curefully expand union casts.
	
	2004-01-10  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/m32r/m32r.md (flush_icache): Use 1 for
	unspec_volatile.
	
	2004-01-10  David Edelsohn  <edelsohn@gnu.org>
	James E Wilson  <wilson@specifixinc.com>
	
	PR debug/12860
	* dbxout.c (dbxout_symbol): Remove initialization of
	current_sym_code, current_sym_value, and current_sym_addr.
	(dbxout_symbol_location): Same.
	(dbxout_prepare_symbol): Zero current_sym_code,
	current_sym_value, and current_sym_addr.
	
	2004-01-10  Richard Sandiford  <rsandifo@redhat.com>
	
	* tree.c (get_unwidened): Reorder conditions so that the null pointer
	check is done first.
	
	2004-01-09  Eric Christopher  <echristo@redhat.com>
	
	* toplev.c (rest_of_handle_cfg): Add reg_scan pass
	if we're running mark_constant_function.
	
	2004-01-09  Jeff Bailey  <jbailey@nisa.net>
	
	PR target/12561
	* config/t-gnu: Rename SYSTEM_HEADER_DIR to NATIVE_SYSTEM_HEADER_DIR.
	
	2004-01-09  Andrew Pinski <pinskia@physics.uc.edu>
	
	PR debug/11231
	* dbxout.c (dbxout_type_fields): Return if any item is
	error_mark_node or the type is error_mark_node.
	
	2004-01-09  Geoffrey Keating  <geoffk@apple.com>
	
	* config/rs6000/darwin-ldouble.c: Add big comment explaining
	exactly what is expected as a 'long double'.
	(_xlqadd): When a value to be returned is representable as a
	'double', just return it directly, do not construct it using a union.
	Also, correct final fixup.
	(_xlqmul): Likewise.
	(_xlqdiv): Likewise.
	* real.c (encode_ibm_extended): Make consistent with darwin-ldouble.c.
	
	* config/rs6000/rs6000.md (fix_trunctfdi2): Delete.
	
	2004-01-09  Richard Henderson  <rth@redhat.com>
	
	* recog.c (constrain_operands): Validate mem operands.
	
	2004-01-09   James E Wilson  <wilson@specifixinc.com>
	
	* gcc.c (init_spec): Remove -lunwind from shared case.
	* conifg/ia64/t-hpux (SHLIB_LINK): Add -lunwind.
	
	2004-01-09  Steve Ellcey  <sje@cup.hp.com>
	
	* configure.ac: (gcc_cv_ld_hidden) Set to true for ia64*-*-hpux*.
	* configure: Regenerate
	
	2004-01-09  Joseph S. Myers  <jsm@polyomino.org.uk>
	
	PR c/11234
	* c-typeck.c (build_c_cast): If pedantic, warn for conversions
	between function and object pointers.
	(digest_init): When comparing a pointer to function type to the
	target type, only apply TREE_TYPE once to the pointer to function
	type.
	* except.c (for_each_eh_label_1): Treat data as a pointer to a
	function pointer rather than casting it to a function pointer.
	(for_each_eh_label): Update caller.
	* recog.h (struct insn_data): Use a struct or union for output.
	* genoutput.c (output_insn_data): Update.
	* final.c (get_insn_template): Update.
	
	2004-01-09  Mark Mitchell  <mark@codesourcery.com>
	
	* expr.h (expand_expr): Make it a macro, not a function.
	(expand_expr_real): New function.
	* expr.c (store_expr): Adjust logic for deciding whether or not to
	copy the value returned by expand_expr.
	(expand_expr): Rename to ...
	(expand_expr_real): ... this.  Add alt_rtl parameter.  Adjust
	calls to language hooks.
	* c-common.h (c_expand_expr): Adjust prototype.
	* c-common.c (c_expand_expr): Add alt_rtl parameter.
	* langhooks-def.h (lhd_expand_expr): Change prototype.
	* langhooks.c (lhd_expand_expr): Add all_rtl parameter.
	* langhooks.h (lang_hooks): Change type of expand_expr.
	* stmt.c (stmt_status): Add x_last_expr_alt_rtl.
	(last_expr_alt_rtl): Likewise.
	(expand_expr_stmt_value): Set last_expr_alt_rtl.
	(clear_last_expr): Clear it.
	(expand_end_stmt_expr): Set RTL_EXPR_ATL_RTL.
	(expand_end_bindings): Save and restor last_expr_alt_rtl.
	* tree.def (RTL_EXPR): Give it an additional operand.
	* tree.h (RTL_EXPR_ALT_RTL): New macro.
	
	2004-01-09  Kazuhiro Inaoka  <inaoka.kazuhiro@renesas.com>
	
	* config/m32r/m32r.h (TARGET_CPU_CPP_BUILTINS): Add __m32r__.
	* config/m32r/m32r.c (call26_operand): Allow in PIC mode.
	
	2004-01-09  Kazu Hirata  <kazu@cs.umass.edu>
	
	PR target/13380.
	* config/m32r/m32r.md: Replace (reg:SI 17) with (reg:CC 17)
	or (ne:SI (reg:CC 17) (const_int 0)).
	Be specific about modes wherever possible.
	
	2004-01-09  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/m32r/m32r.c (m32r_expand_block_move): Call
	gen_movestrsi_internal with two more arguments.
	(m32r_output_block_move): Adjust operand numbers.
	Properly update the source and destination pointers.
	* config/m32r/m32r.md (movstrsi_internal): Use 'r' instead of
	'r+'.  Change the set detinations to match_operand.
	
	2004-01-09  Kazu Hirata  <kazu@cs.umass.edu>
	
	* final.c (FIRST_INSN_ADDRESS): Remove.
	(shorten_branches): Don't use FIRST_INSN_ADDRESS.
	* system.h (FIRST_INSN_ADDRESS): Poison.
	* config/avr/avr.h: Remove a comment about FIRST_INSN_ADDRESS.
	* config/m32r/m32r-protos.h: Remove the prototype for
	m32r_first_insn_address.
	* config/m32r/m32r.c (m32r_first_insn_address): Remove.
	* config/m32r/m32r.h (FIRST_INSN_ADDRESS): Likewise.
	* doc/md.texi (FIRST_INSN_ADDRESS): Likewise.
	
	2004-01-09  J. Brobecker  <brobecker@gnat.com>
	
	* dwarf2out.c (gen_enumeration_type_die): Return the DIE that
	we just created.
	(is_ada_subrange_type): DIEs for enumeration subtypes should be
	emitted as subrange types too.
	(subrange_type_die): Add handling of enumeration subtypes.
	
	2004-01-08  Richard Henderson  <rth@redhat.com>
	
	PR opt/12441
	Revert: Sat Mar 30 14:08:55 CET 2002  Jan Hubicka  <jh@suse.cz>
	* i386.c (aligned_operand): Be prepared for SUBREGed registers.
	(ix86_decompose_address): Use REG_P instead of GET_CODE (...) == REG.
	(ix86_address_cost): Be prepared for SUBREGed registers.
	(legitimate_address_p): Accept SUBREGed registers.
	
	2004-01-08  Kelley Cook  <kcook@gcc.gnu.org>
	
	* Makefile.in: Rename configure.in to configure.ac
	* doc/sourcebuild.texi: Likewise.
	* configure: Regenerate.
	* config.in: Regenerate.
	
	2004-01-08  Stuart Hastings  <stuart@apple.com>
	
	* config/i386/i386.md: Typos in MMX/SSE immediate shifts.
	
	2004-01-08  Jan Hubicka  <jh@suse.cz>
	
	* cgraphunit.c (cgraph_decide_inlining):  Fix typo.
	
	2004-01-08  Geoffrey Keating  <geoffk@apple.com>
	
	* config/rs6000/rs6000.md (cmptf_internal1): Correct branch offset.
	(UNSPEC_FIX_TRUNC_TF): New constant.
	(movtf_internal): Make splitter active only when insn is active.
	(extenddftf2): Rewrite to properly load zero into low part.
	(extenddftf2_internal): New.
	(extendsftf2): Rewrite.
	(truncdftf2): Correct length.
	(floatditf2): Delete.
	(fix_trunc_helper): New.
	(fix_trunctfdi2): Use fix_trunc_helper.
	(fix_trunctfsi2): Likewise.fix_trunc
	(fix_trunctfsi2_internal): New.
	
	* config/rs6000/rs6000.c (legitimate_lo_sum_address_p): lo_sum
	addresses are legitimate on Darwin even when flag_pic.
	(rs6000_legitimize_reload_address) [TARGET_MACHO]: Don't create
	non-offsettable addresses for loads of TFmode constants.
	
	2004-01-08  Kazuhiro Inaoka  <inaoka.kazuhiro@renesas.com>
	
	* config/m32r/m32r.h (ASM_OUTPUT_ALIGNED_BSS): Actually emit
	variables in the appropriate bss section.
	
	2004-01-09  Alan Modra  <amodra@bigpond.net.au>
	
	* config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Ensure
	target_flags has MASK_POWERPC64 when -m64.
	* config/rs6000/rs6000.c (processor_target_table): Add MASK_POWERPC64
	to 620, 630, power3, power4 and rs64a entries.
	* config/rs6000/rs6000.h (MASK_64BIT): Expand comment.
	
	2004-01-08  Richard Sandiford  <rsandifo@redhat.com>
	
	* simplify-rtx.c (simplify_immed_subreg): Fix construction of
	floating-point constants.
	
	2004-01-08  J. Brobecker  <brobecker@gnat.com>
	
	* dwarf2out.c (subrange_type_die): Add context_die parameter.
	Create the subrange_type DIE using the given context DIE.
	(modified_type_die): Update call to subrange_type_die.
	
	2004-01-08  Zack Weinberg  <zack@codesourcery.com>
	
	* dwarf2.h, unwind-dw2-fde.h, unwind-pe.h, unwind.h:
	Add multiple-include guard.
	
	2004-01-08  Hartmut Penner  <hpenner@de.ibm.com>
	
	* gcc/config/rs6000/rs6000.c (easy_vector_constant): Accept
	all vector constant loadable by vsplt*.
	(output_vec_const_move): Likewise.
	
	2004-01-07  Joseph S. Myers  <jsm@polyomino.org.uk>
	
	PR c/6024
	* c-typeck.c (comptypes): Only treat enumerated types in the same
	translation unit as compatible with each other when they are the
	same type.
	* doc/extend.texi: Update.
	
	2004-01-07  Joseph S. Myers  <jsm@polyomino.org.uk>
	
	PR c/12165
	* c-decl.c (grokdeclarator): Take type qualifiers of typedefed
	array type from the array element type.
	
	2004-01-07  Alan Modra  <amodra@bigpond.net.au>
	
	* config/rs6000/rs6000.c (rs6000_dbx_register_number): New function.
	* config/rs6000/rs6000-protos.h (rs6000_dbx_register_number): Declare.
	* config/rs6000/rs6000.h (DWARF_FRAME_REGNUM): Define.
	(DWARF_REG_TO_UNWIND_COLUMN): Correct column adjustment and comment.
	* config/rs6000/sysv4.h (DBX_REGISTER_NUMBER): Define.
	
	2004-01-06  Eric Christopher  <echristo@redhat.com>
	
	* config/mips/mips.h (MDEBUG_ASM_SPEC): Change for dwarf2 default.
	(DWARF2_DEBUGGING_INFO): Define.
	(PREFERRED_DEBUGGING_TYPE): Set to dwarf2.
	* config/mips/openbsd.h (PREFERRED_DEBUGGING_TYPE): Remove.
	* config/mips/iris6.h (SUBTARGET_ASM_DEBUGGING_SPEC): Only pass -g0
	for irix as.
	(SUBTARGET_ASM_OPTIMIZING_SPEC): Only pass O0 for irix as.
	* config/mips/iris6gas.h (MDEBUG_ASM_SPEC): Remove.
	* config/mips/iris5gas.h: Ditto.
	(DBX_DEBUGGING_INFO): Remove.
	(DWARF2_DEBUGGING_INFO): Ditto.
	(MIPS_DEBUGGING_INFO): Ditto.
	(PREFERRED_DEBUGGING_TYPE): Ditto.
	* config/mips/elf.h (DWARF2_DEBUGGING_INFO): Remove.
	(PREFERRED_DEBUGGING_TYPE): Ditto.
	(SUBTARGET_ASM_DEBUGGING_SPEC): Ditto.
	* config/mips/elf64.h: Ditto.
	
	2004-01-06  Jan Hubicka  <jh@suse.cz>
	
	* Makefile.in (STAGEPROFILE_FLAGS_TO_PASS): Use -fprofile-generate.
	(STAGEFEEDBACK_FLAGS_TO_PASS): Use -fprofile-use.
	
	2004-01-06  Geoffrey Keating  <geoffk@apple.com>
	
	* config/rs6000/t-darwin (LIB2FUNCS_EXTRA): Compile darwin-ldouble.c.
	(TARGET_LIBGCC2_CFLAGS): Use -mlong-double-128.
	* config/rs6000/darwin-ldouble.c: New.
	
	* emit-rtl.c (gen_lowpart_common): Use simplify_gen_subreg
	for constants.
	(constant_subword): Delete.
	* rtl.h (constant_subword): Delete prototype.
	(immed_double_const): Is not in varasm.c.
	* simplify-rtx.c (simplify_immed_subreg): New.
	(simplify_subreg): Use simplify_immed_subreg.
	
	* config/rs6000/rs6000.md (floatsitf2): Use expand_float rather
	than trying to generate RTL directly.
	(fix_trunctfsi2): Use expand_fix rather than trying to generate
	RTL directly.
	
	* dwarf2out.c (add_const_value_attribute): Remove incorrect comment.
	
	2004-01-06  David Edelsohn  <edelsohn@gnu.org>
	
	* config/rs6000/xcoff.h (EXTRA_SECTION_FUNCTIONS): Split each
	function into a separate macro.
	(read_only_data_section): Add void argument.
	(private_data_section): Same.
	(read_only_private_data_section): Same.
	(toc_section): Same.
	
	2004-01-06  Jan Hubicka  <jh@suse.cz>
	
	* invoke.texi:  Remove typo in last change.
	
	PR target/10301
	* config.gcc: Accept opteron and athlon-64 as variants
	of k8.
	* i386.c (override_options): Likewise.
	* invoke.texi (i386 -mtune): Expand documentation.
	
	2004-01-06  Kazu Hirata  <kazu@cs.umass.edu>
	
	* alias.c: Fix comment typos.
	* builtins.c: Likewise.
	* cfg.c: Likewise.
	* df.c: Likewise.
	* dominance.c: Likewise.
	* dwarf2out.c: Likewise.
	* emit-rtl.c: Likewise.
	* expr.c: Likewise.
	* final.c: Likewise.
	* fold-const.c: Likewise.
	* gcse.c: Likewise.
	* genattrtab.c: Likewise.
	* genrecog.c: Likewise.
	* gensupport.c: Likewise.
	* ggc-zone.c: Likewise.
	* integrate.c: Likewise.
	* local-alloc.c: Likewise.
	* loop.c: Likewise.
	* recog.c: Likewise.
	* regmove.c: Likewise.
	* reg-stack.c: Likewise.
	* reorg.c: Likewise.
	* rtlanal.c: Likewise.
	* rtl.h: Likewise.
	* sched-ebb.c: Likewise.
	* simplify-rtx.c: Likewise.
	* toplev.c: Likewise.
	* varasm.c: Likewise.
	
	2004-01-06  Kazu Hirata  <kazu@cs.umass.edu>
	
	* doc/install.texi: Fix typos.
	* doc/invoke.texi: Likewise.
	* doc/md.texi: Likewise.
	
	2004-01-06  Kazuhiro Inaoka  <inaoka.kazuhiro@renesas.com>
	
	* config/m32r/m32r.h (TRAMPOLINE_LINE_SIZE): Changed
	
	2004-01-06  Jan Hubicka  <jh@suse.cz>
	
	* i386.c (init_cumulative_args):  Add handling of MMX_REGPARM.
	(function_arg_advance):  Do not pass aggregates in SSE; deal handling
	of MMX_REGPARM.
	(function_arg): Add new warnings about ABI changes;  fix SSE_REGPARM;
	add MMX_REGPARM.
	* i386.h (ix86_args): Add mmx_words/mmx_regs/mmx_regno fields.
	(SSE_REGPARM_MAX): Default to 3 on i386 -msse ABI.
	(MMX_REGPARM_MAX): Similarly for -mmmx.
	
	2004-01-05  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/sh/linux.h: Fix comment formatting.
	* config/sh/netbsd-elf.h: Likewise.
	* config/sh/sh.c: Likewise.
	* config/sh/sh.h: Likewise.
	* config/sh/vxworks.h: Likewise.
	
	2004-01-05  Kazu Hirata  <kazu@cs.umass.edu>
	
	* system.h (ASM_OUTPUT_MAIN_SOURCE_FILENAME): Poison.
	* toplev.c (output_file_directive): Don't use
	ASM_OUTPUT_MAIN_SOURCE_FILENAME.
	
	2004-01-05  Daniel Berlin  <dberlin@dberlin.org>
	
	* ggc-zone.c: Remove everything in #ifdef USING_MALLOC_PAGE_GROUPS
	(USING_MMAP): We don't support non-mmap.
	(struct alloc_chunk): Steal 1 bit from typecode, use it to mark
	large objects.
	(struct page_entry): Remove bytes_free.
	(struct page_table_chain): Remove.
	(struct globals): Remove page_table member.
	(loookup_page_table_entry): Function deleted.
	(set_page_table_entry): Ditto.
	(ggc_allocated_p): No longer need page table lookups.
	(ggc_marked_p): Ditto.
	(alloc_small_page): Don't care about bytes_free anymore.
	(alloc_large_page): Round up size.
	(ggc_alloc_zone_1): Mark large objects as such, and calculate
	their size the new way.
	Remove page table lookups and setting.
	(ggc_get_size): Calculate large object size the new way.
	(sweep_pages): Redo to account for fact that we no longer have
	bytes_free.
	(ggc_collect): No longer need to reincrement bytes_free.
	(ggc_pch_alloc_object): Handle new large objects properly.
	(ggc_pch_read): Put PCH stuff into it's own uncollected zone.
	
	2004-01-05  Kazu Hirata  <kazu@cs.umass.edu>
	
	* doc/invoke.texi: Remove a page break.
	
	2004-01-05  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/avr/avr.c (avr_output_function_prologue): Remove an
	extra pair of curly braces.
	
	2004-01-05  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/mn10300/mn10300.c: Fix comment formatting.
	* config/mn10300/mn10300.h: Likewise.
	
	2004-01-05  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
	
	* tree.h: Update documentation on nothrow_flag.
	* print-tree.c (print_node): Print TREE_NOTHROW as "align-ok" for
	types.
	
	2004-01-05  Kazu Hirata  <kazu@cs.umass.edu>
	
	* doc/invoke.texi: Remove traces of dead ports.
	
	2004-01-05  Richard Sandiford  <rsandifo@redhat.com>
	
	* doc/invoke.texi: Add documentation for the MIPS -mexplicit-relocs
	option.
	
	2004-01-05  Richard Sandiford  <rsandifo@redhat.com>
	
	PR target/12945
	* coverage.c (coverage_counter_alloc): Set SYMBOL_FLAG_LOCAL for
	counter labels.
	* config/mips/mips.c (INTERNAL_SYMBOL_P): Delete.
	(mips_classify_symbol): Always treat SYMBOL_REF_FLAG as indicating
	string constants if TARGET_MIPS16.  Use SYMBOL_REF_DECL to check
	the binding of decl symbols, otherwise check SYMBOL_REF_LOCAL_P.
	(mips_symbol_insns): Don't trust the local/global classification.
	(m16_usym8_4, m16_usym5_4): Same mips16 change as mips_classify_symbol.
	(override_options): Make -mabicalls -fno-unit-at-a-time imply
	-mno-explicit-relocs.
	(mips_encode_section_info): Don't use SYMBOL_REF_FLAG to distinguish
	between local and global symbols.
	
	2004-01-05  Richard Sandiford  <rsandifo@redhat.com>
	
	* config/mips/mips-protos.h (mips_dangerous_for_la25_p): Declare.
	(mips_preferred_reload_class): Declare.
	* config/mips/mips.h (DANGEROUS_FOR_LA25_P): Replace with function.
	(EXTRA_CONSTRAINT): Update accordingly.
	(PREFERRED_RELOAD_CLASS): Use mips_preferred_reload_class.
	* config/mips/mips.c (mips_dangerous_for_la25_p): New function.
	(mips_preferred_reload_class): New function.  Prefer LEA_REGS if
	mips_dangerous_for_la25_p.
	(mips_secondary_reload_class): Use LEA_REGS rather than GR_REGS
	if mips_dangerous_for_la25_p.
	
	2004-01-05  Bernardo Innocenti  <bernie@develer.com>
	
	* config/m68k/m68k.c (output_andsi3): Fix signed/unsigned comparison
	warning.
	
	2004-01-04  Nathanael Nerode  <neroden@gcc.gnu.org>
	
	* configure.ac: Use AC_PROG_CPP_WERROR.
	* configure: Regenerate.
	
	2004-01-04  Zack Weinberg  <zack@codesourcery.com>
	
	* .cvsignore: Add autom4te.cache.
	
	2004-01-04  Richard Sandiford  <rsandifo@redhat.com>
	
	* doc/invoke.texi: Revamp documentation of MIPS options.  Remove
	-mabi=meabi, -mabi-fake-default, -mmips-as, -mgas, -mmips-tfile,
	-m4650, -mfix7000 and -(m)no-crt0.  Put endianness options first,
	then architecture options, then ABI options.  General rewording.
	
	2004-01-04  Joseph S. Myers  <jsm@polyomino.org.uk>
	
	PR c/3414
	* doc/extend.texi: Clarify definition of malloc attribute.
	
	2004-01-04  Jan Hubicka  <jh@suse.cz>
	
	* Makefile.in (cgraph.o, cgraphunit.o): Add intl.h dependency.
	* cgraph.c (create_edge, dump_cgraph): Update to use inline_failed
	* cgraph.h (cgraph_edge): Replace inline_call by inline_failed
	(cgraph_inline_p): Add extra argument reason.
	* cgraphunit.c: Minor formating fixes.
	cgraph_first_inlined_callee): New functions.
	(record_call_1): Record builtins too.
	(cgraph_analyze_function): Update inline_failed messages.
	(cgraph_mark_functions_to_output, cgraph_expand_function, cgraph_inlined_into,
	cgraph_inlined_callees, cgraph_estimate_growth): Update to use inline_failed.
	(cgraph_check_inline_limits): Likewise; Add argument reason.
	(cgraph_set_inline_failed): New static function.
	(cgraph_decide_inlining_of_small_function, cgraph_decide_inlining): Set
	reasons.
	(cgraph_inline_p): Add new argument reason.
	* tree-inline.c (expand_call_inline):  Update warning.
	
	2004-01-03  Nathanael Nerode  <neroden@gcc.gnu.org>
	
	* configure.ac: Replace AC_INIT, AC_OUTPUT, AC_CANONICAL_SYSTEM
	with modern equivalents.
	* configure: Regenerate.
	
	* configure.ac: Replace gcc_AC_CHECK_TYPE with AC_CHECK_TYPE.
	* aclocal.m4 (gcc_AC_CHECK_TYPE): Remove.
	* configure: Regenerate.
	
	* doc/install.texi: Note that 'gcc' is now a 2.57 directory.
	
	* configure.in: Rename to configure.ac.
	* configure.ac: Renamed from configure.in; make minimum necessary
	changes for autoconf 2.5x.
	* aclocal.m4: Make minimum necessary changes for autoconf 2.5x.
	* configure: Regenerate with autoconf 2.57.
	
	2004-01-03  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/mips/linux.h: Fix comment formatting.
	* config/mips/mips.c: Likewise.
	* config/mips/mips.h: Likewise.
	* config/mips/mips.md: Likewise.
	* config/mips/netbsd.h: Likewise.
	* config/mips/windiss.h: Likewise.
	
	2004-01-02  Richard Henderson  <rth@redhat.com>
	
	* config/i386/i386.md (fp constant pool splitter): Reorg suppression
	for sse and 387; add suppression for mmx.
	
	2004-01-02  Andrew Pinski  <pinskia@physics.uc.edu>
	
	* loop.c (loop_optimize): Free all loops_info's mems.
	
	* c-typeck.c (finish_init): Free spelling_base before
	setting it again.
	
	* cfgloop.c (flow_loops_find): Always free the sbitmap
	headers.
	
	* predict.c (estimate_probability): Free bbs after being
	done with it.
	
	2004-01-02  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/mn10300/mn10300.h (PREDICATE_CODES): Add
	const_8bit_operand and call_address_operand.
	
	2004-01-02  Jan Hubicka  <jh@suse.cz>
	
	* cgraphunit.c (cgraph_optimize_function):  Call optimize_inline_calls
	when there is nothing to inline but warnings are requested.
	(cgraph_decide_inlining):  Fix memory leak.
	
	2004-01-02  Jan Hubicka  <jh@suse.cz>
	
	* expr.c (store_constructor):  Fix pasto in previous patch.
	
	2004-01-02  Kazu Hirata  <kazu@cs.umass.edu>
	
	* config/i386/cygming.h: Fix comment formatting.
	* config/i386/djgpp.h: Likewise.
	* config/i386/gthr-win32.c: Likewise.
	* config/i386/i386-interix.h: Likewise.
	* config/i386/i386.c: Likewise.
	* config/i386/i386.h: Likewise.
	* config/i386/openbsd.h: Likewise.
	* config/i386/winnt.c: Likewise.
	* config/i386/xm-mingw32.h: Likewise.
	
	2004-01-02  Joseph S. Myers  <jsm@polyomino.org.uk>
	
	* doc/gcc.texi, doc/invoke.texi, doc/install.texi: Update
	copyright and last modification dates.
	
	2004-01-02  Andreas Jaeger  <aj@suse.de>, Gerald Pfeifer  <gp@suse.de>
	
	* doc/install.texi (Specific): Mention x86_64.
	
	2004-01-01  Hans-Peter Nilsson  <hp@bitrange.com>
	
	* builtins.c (expand_builtin_apply_args_1) [STACK_GROWS_DOWNWARD]:
	Call force_operand on plus_constant result.
	
	2004-01-01  Jan Hubicka  <jh@suse.cz>
	
	* expmed.c (store_bit_field, extract_bit_field): Use new named patterns
	* expr.c (store_constructor): Use vec_init pattern.
	* genopinit.c (optabs): Initailize vec_set/vec_extract/vec_init.
	* optabs.h (optab_index): ADD OTI_vec_set/OTI_vec_extract/OTI_vec_init
	(vec_set_optab, vec_extract_optab, vec_init_optab): New.
	* i386.md (vec_setv2df, vec_extractv2df, vec_setv4sf, vec_extractv4sf):
	New patterns.
	(sse2_unpc?pd): Fix pattern.
	(sse2_movlpd): Kill.
	(sse2_movsd): Deal with movlpd too.
	* i386.c (ix86_expand_builtin): Use sse2_movsd instead of sse2_movlpd.
	(ix86_expand_vector_init): New.
	* emmintrin.h (__mm_set_pd, __mm_set_ps): Use vector extensions.
	* md.texi (vec_set, vec_extract): Document
	
	2003-12-31  Jan Hubicka  <jh@suse.cz>
	
	PR opt/13473
	* recog.c (validate_replace_rtx_1):  Take care for RTL sharing inside
	ASM input operands
	
	PR opt/12617
	* toplev.c (dump_file_index): Reorder ce3 and bbro.
	(dump_file): Likewise.
	(rest_of_compilation): Likewise.
	
	PR debug/13367
	* cgraph.c (cgraph_function_possibly_inlined):  Even with
	flag_really_no_inline we inline always_inline functions.
	* cgraphunit.c (cgraph_analyze_function): Clear inlinable flag
	for non-always_inline functions when there is flag_really_no_inline.
	(cgraph_decide_inlining): Limit work done when not inlining.
	(cgraph_decide_inlining_incrementally): Likewise.
	(cgraph_optimize_function): Check whether something got inlined.
	* c-objc-common.c (c_disregard_inline_limits): Do not always inline
	extern inline functions when not inlining.
	
	* opts.c (decode_options):  Disable crossjumping at -O1
	* invoke.texi (-O1): Document change.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&r1=2.2506&r2=2.2507
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/Makefile.in.diff?cvsroot=gcc&r1=1.1232&r2=1.1233
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/bt-load.c.diff?cvsroot=gcc&r1=2.12&r2=2.13
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/common.opt.diff?cvsroot=gcc&r1=1.24&r2=1.25
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/flags.h.diff?cvsroot=gcc&r1=1.127&r2=1.128
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/opts.c.diff?cvsroot=gcc&r1=1.51&r2=1.52
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/toplev.c.diff?cvsroot=gcc&r1=1.869&r2=1.870
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/doc/invoke.texi.diff?cvsroot=gcc&r1=1.395&r2=1.396



-- 


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


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

* [Bug c++/12850] [3.4/3.5 Regression] memory consumption for heavy template instantiations tripled since 3.3
  2003-10-30 23:42 [Bug c++/12850] New: memory consumption for heavy template instantiations tripled since 3.3 jens dot maurer at gmx dot net
                   ` (19 preceding siblings ...)
  2004-01-27 13:14 ` [Bug c++/12850] [3.4/3.5 " cvs-commit at gcc dot gnu dot org
@ 2004-01-27 16:35 ` pinskia at gcc dot gnu dot org
  2004-01-27 16:37 ` hubicka at ucw dot cz
                   ` (22 subsequent siblings)
  43 siblings, 0 replies; 47+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2004-01-27 16:35 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pinskia at gcc dot gnu dot org  2004-01-27 16:35 -------
The only memory leak I had was from shorten_branches in final.c which I have a fix for 
now but that does account for the 60M difference between GC and real allocated 
memory (even though I suspect there are large amounts of pages still allocated because 
the GC is spread all over them).  Also malloc only accounts for 20M.

-- 


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


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

* [Bug c++/12850] [3.4/3.5 Regression] memory consumption for heavy template instantiations tripled since 3.3
  2003-10-30 23:42 [Bug c++/12850] New: memory consumption for heavy template instantiations tripled since 3.3 jens dot maurer at gmx dot net
                   ` (20 preceding siblings ...)
  2004-01-27 16:35 ` pinskia at gcc dot gnu dot org
@ 2004-01-27 16:37 ` hubicka at ucw dot cz
  2004-01-29  0:34 ` cvs-commit at gcc dot gnu dot org
                   ` (21 subsequent siblings)
  43 siblings, 0 replies; 47+ messages in thread
From: hubicka at ucw dot cz @ 2004-01-27 16:37 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From hubicka at ucw dot cz  2004-01-27 16:37 -------
Subject: Re:  [3.4/3.5 Regression] memory consumption for heavy template instantiations tripled since 3.3

> 
> ------- Additional Comments From pinskia at gcc dot gnu dot org  2004-01-27 16:35 -------
> The only memory leak I had was from shorten_branches in final.c which I have a fix for 
> now but that does account for the 60M difference between GC and real allocated 
> memory (even though I suspect there are large amounts of pages still allocated because 
> the GC is spread all over them).  Also malloc only accounts for 20M.

I have additional patches in testing cutting this into roughtly 118MB,
still there is room for improvement as really we shall be decreasing
amount of memory during the compilation stage that we don't (the parsed
program after template instantiation is slightly over 60MB of GGC memory)
We also burn a lot of unnecesary memory in C++ parser during name
lookup, I am probably not going to address this as I simply don't
understand the issue at all.

Honza
> 
> -- 
> 
> 
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12850
> 
> ------- You are receiving this mail because: -------
> You are the assignee for the bug, or are watching the assignee.


-- 


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


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

* [Bug c++/12850] [3.4/3.5 Regression] memory consumption for heavy template instantiations tripled since 3.3
  2003-10-30 23:42 [Bug c++/12850] New: memory consumption for heavy template instantiations tripled since 3.3 jens dot maurer at gmx dot net
                   ` (21 preceding siblings ...)
  2004-01-27 16:37 ` hubicka at ucw dot cz
@ 2004-01-29  0:34 ` cvs-commit at gcc dot gnu dot org
  2004-01-30 11:46 ` cvs-commit at gcc dot gnu dot org
                   ` (20 subsequent siblings)
  43 siblings, 0 replies; 47+ messages in thread
From: cvs-commit at gcc dot gnu dot org @ 2004-01-29  0:34 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From cvs-commit at gcc dot gnu dot org  2004-01-29 00:34 -------
Subject: Bug 12850

CVSROOT:	/cvs/gcc
Module name:	gcc
Changes by:	hubicka@gcc.gnu.org	2004-01-29 00:34:09

Modified files:
	gcc            : ChangeLog cgraph.c cgraphunit.c tree-optimize.c 

Log message:
	PR c++/12850
	* cgraph.c (cgraph_remove_node): Clear out saved/insns/arguments and
	initial pointers.
	* cgraphunit.c (cgraph_finalize_function): Clear out DECL_SAVED_INSNS
	for functions that will be only inlined.
	(cgraph_mark_function_to_output): Likewise.
	(cgraph_expand_function): Sanity check that DECL_DEFER_OUTPUT is clear;
	do not clear function body.
	* tree-optimize.c (clear_decl_rtl): Use decl_function_context.
	(tree_rest_of_compilation): Reorganize the logic releasing function
	body to use callgraph datastructure.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&r1=2.2535&r2=2.2536
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cgraph.c.diff?cvsroot=gcc&r1=1.42&r2=1.43
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cgraphunit.c.diff?cvsroot=gcc&r1=1.48&r2=1.49
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-optimize.c.diff?cvsroot=gcc&r1=2.8&r2=2.9



-- 


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


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

* [Bug c++/12850] [3.4/3.5 Regression] memory consumption for heavy template instantiations tripled since 3.3
  2003-10-30 23:42 [Bug c++/12850] New: memory consumption for heavy template instantiations tripled since 3.3 jens dot maurer at gmx dot net
                   ` (22 preceding siblings ...)
  2004-01-29  0:34 ` cvs-commit at gcc dot gnu dot org
@ 2004-01-30 11:46 ` cvs-commit at gcc dot gnu dot org
  2004-01-31 12:01 ` cvs-commit at gcc dot gnu dot org
                   ` (19 subsequent siblings)
  43 siblings, 0 replies; 47+ messages in thread
From: cvs-commit at gcc dot gnu dot org @ 2004-01-30 11:46 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From cvs-commit at gcc dot gnu dot org  2004-01-30 11:46 -------
Subject: Bug 12850

CVSROOT:	/cvs/gcc
Module name:	gcc
Branch: 	gcc-3_4-branch
Changes by:	hubicka@gcc.gnu.org	2004-01-30 11:46:28

Modified files:
	gcc            : ChangeLog cgraph.c cgraphunit.c tree-optimize.c 

Log message:
	PR c++/12850
	* cgraph.c (cgraph_remove_node): Clear out saved/insns/arguments and
	initial pointers.
	* cgraphunit.c (cgraph_finalize_function): Clear out DECL_SAVED_INSNS
	for functions that will be only inlined.
	(cgraph_mark_function_to_output): Likewise.
	(cgraph_expand_function): Sanity check that DECL_DEFER_OUTPUT is clear;
	do not clear function body.
	* tree-optimize.c (clear_decl_rtl): Use decl_function_context.
	(tree_rest_of_compilation): Reorganize the logic releasing function
	body to use callgraph datastructure.

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.110&r2=2.2326.2.111
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cgraph.c.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.41.2.1&r2=1.41.2.2
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cgraphunit.c.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.46.2.1&r2=1.46.2.2
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-optimize.c.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=2.8&r2=2.8.8.1



-- 


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


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

* [Bug c++/12850] [3.4/3.5 Regression] memory consumption for heavy template instantiations tripled since 3.3
  2003-10-30 23:42 [Bug c++/12850] New: memory consumption for heavy template instantiations tripled since 3.3 jens dot maurer at gmx dot net
                   ` (23 preceding siblings ...)
  2004-01-30 11:46 ` cvs-commit at gcc dot gnu dot org
@ 2004-01-31 12:01 ` cvs-commit at gcc dot gnu dot org
  2004-02-01 13:01 ` cvs-commit at gcc dot gnu dot org
                   ` (18 subsequent siblings)
  43 siblings, 0 replies; 47+ messages in thread
From: cvs-commit at gcc dot gnu dot org @ 2004-01-31 12:01 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From cvs-commit at gcc dot gnu dot org  2004-01-31 12:01 -------
Subject: Bug 12850

CVSROOT:	/cvs/gcc
Module name:	gcc
Branch: 	gcc-3_4-branch
Changes by:	hubicka@gcc.gnu.org	2004-01-31 12:01:25

Modified files:
	gcc            : cgraph.c cgraphunit.c tree-optimize.c ChangeLog 

Log message:
	Revert the following patch until after AIX linker bug is fixed:
	PR c++/12850
	* cgraph.c (cgraph_remove_node): Clear out saved/insns/arguments and
	initial pointers.
	* cgraphunit.c (cgraph_finalize_function): Clear out DECL_SAVED_INSNS
	for functions that will be only inlined.
	(cgraph_mark_function_to_output): Likewise.
	(cgraph_expand_function): Sanity check that DECL_DEFER_OUTPUT is clear;
	do not clear function body.
	* tree-optimize.c (clear_decl_rtl): Use decl_function_context.
	(tree_rest_of_compilation): Reorganize the logic releasing function
	body to use callgraph datastructure.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cgraph.c.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.41.2.2&r2=1.41.2.3
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cgraphunit.c.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.46.2.2&r2=1.46.2.3
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-optimize.c.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=2.8.8.2&r2=2.8.8.3
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.121&r2=2.2326.2.122



-- 


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


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

* [Bug c++/12850] [3.4/3.5 Regression] memory consumption for heavy template instantiations tripled since 3.3
  2003-10-30 23:42 [Bug c++/12850] New: memory consumption for heavy template instantiations tripled since 3.3 jens dot maurer at gmx dot net
                   ` (24 preceding siblings ...)
  2004-01-31 12:01 ` cvs-commit at gcc dot gnu dot org
@ 2004-02-01 13:01 ` cvs-commit at gcc dot gnu dot org
  2004-02-14 14:27 ` hubicka at gcc dot gnu dot org
                   ` (17 subsequent siblings)
  43 siblings, 0 replies; 47+ messages in thread
From: cvs-commit at gcc dot gnu dot org @ 2004-02-01 13:01 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From cvs-commit at gcc dot gnu dot org  2004-02-01 13:01 -------
Subject: Bug 12850

CVSROOT:	/cvs/gcc
Module name:	gcc
Branch: 	gcc-3_4-branch
Changes by:	hubicka@gcc.gnu.org	2004-02-01 13:01:15

Modified files:
	gcc            : ChangeLog cgraph.c cgraphunit.c tree-optimize.c 
	gcc/cp         : ChangeLog semantics.c 

Log message:
	PR c++/12850
	* cgraph.c (cgraph_remove_node): Clear out saved/insns/arguments and
	initial pointers.
	* cgraphunit.c (cgraph_finalize_function): Clear out DECL_SAVED_INSNS
	for functions that will be only inlined.
	(cgraph_mark_function_to_output): Likewise.
	(cgraph_expand_function): Sanity check that DECL_DEFER_OUTPUT is clear;
	do not clear function body.
	* tree-optimize.c (clear_decl_rtl): Use decl_function_context.
	(tree_rest_of_compilation): Reorganize the logic releasing function
	body to use callgraph datastructure.
	
	* semantics.c (expand_body)  Do emit_associated_thunks before
	expansion.

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.127&r2=2.2326.2.128
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cgraph.c.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.41.2.3&r2=1.41.2.4
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cgraphunit.c.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.46.2.3&r2=1.46.2.4
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-optimize.c.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=2.8.8.3&r2=2.8.8.4
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.3892.2.23&r2=1.3892.2.24
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/semantics.c.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.381.4.4&r2=1.381.4.5



-- 


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


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

* [Bug c++/12850] [3.4/3.5 Regression] memory consumption for heavy template instantiations tripled since 3.3
  2003-10-30 23:42 [Bug c++/12850] New: memory consumption for heavy template instantiations tripled since 3.3 jens dot maurer at gmx dot net
                   ` (25 preceding siblings ...)
  2004-02-01 13:01 ` cvs-commit at gcc dot gnu dot org
@ 2004-02-14 14:27 ` hubicka at gcc dot gnu dot org
  2004-02-14 14:38 ` hubicka at ucw dot cz
                   ` (16 subsequent siblings)
  43 siblings, 0 replies; 47+ messages in thread
From: hubicka at gcc dot gnu dot org @ 2004-02-14 14:27 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From hubicka at gcc dot gnu dot org  2004-02-14 14:27 -------
Memory usage is now at 104MB that is still more than 3.3 did, but give that this code is almost perfect testcase where unit-at-a-time shall lose, I think score is not bad.
Mark's patches helped a lot to amount of garbage produced by C++ frontend on mainline now (reducing amount of garbage from 2GB to 700MB), but I think we can do significantly better still.
One problem is large consumption of struct function (about 10% of memory surviving from frontend).  Many of these struct functions are for functions that were never cgraph_finalize_function (either templates or unused functions).  I think these should be freed but I don't know how.
Also C++ frontend still produce a lot of gabrage(39MB of 700MB memory is needed) Major producers are:
varray.c:161 (varray_grow)                                        20496    1473380     401588:1.600%     210256:0.532%
cp/call.c:2181 (add_template_candidate_real)                      96047    2339908      63560:2.051%          0:0.000%
cp/name-lookup.c:1719 (set_identifier_type_value_with_scope)     151575    3031500          0:2.587%          0:0.000%
tree.c:3962 (build_method_type_directly)                          24117    2604636     482340:2.634%    1411456:3.574%
cp/lex.c:773 (copy_decl)                                          31558    3408264          0:2.909%    2979720:7.545%
cp/name-lookup.c:2800 (push_class_level_binding)                 170972    3419440          0:2.918%        140:0.000%
tree-inline.c:1970 (copy_tree_r)                                 176657    3606700       4084:3.081%     551820:1.397%
cp/search.c:1200 (build_baselink)                                168114    4034736          0:3.443%        552:0.001%
cp/pt.c:6252 (tsubst_decl)                                        38668    4176144          0:3.564%    2390580:6.053%
cp/name-lookup.c:4720 (store_bindings)                           221688    4433760          0:3.784%          0:0.000%
cp/pt.c:5738 (tsubst_template_args)                              248319    5966576      74480:5.155%     570592:1.445%
function.c:6397 (allocate_struct_function)                         9158    4688896    1978128:5.689%    4087720:10.351%
cp/pt.c:3814 (coerce_template_parms)                             282818    6655016      65496:5.735%      46156:0.117%
tree.c:3908 (build_function_type)                                 57993    6263244    1159860:6.335%     332672:0.842%
(first percentage is garbage allocated, second percentage is amount of memory surviving to cgraph_optimize)
Backend looks better now, produce about 300MB of additional garbage.  About 10-20% can be saved by better aliasing and moving log links into separate structure.  Overall we went from 4GB garbage to 900MB.
I don't have enought knowledge of templates and name lookup to get things significantly better.

-- 


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


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

* [Bug c++/12850] [3.4/3.5 Regression] memory consumption for heavy template instantiations tripled since 3.3
  2003-10-30 23:42 [Bug c++/12850] New: memory consumption for heavy template instantiations tripled since 3.3 jens dot maurer at gmx dot net
                   ` (26 preceding siblings ...)
  2004-02-14 14:27 ` hubicka at gcc dot gnu dot org
@ 2004-02-14 14:38 ` hubicka at ucw dot cz
  2004-03-21 18:58 ` [Bug c++/12850] " mmitchel at gcc dot gnu dot org
                   ` (15 subsequent siblings)
  43 siblings, 0 replies; 47+ messages in thread
From: hubicka at ucw dot cz @ 2004-02-14 14:38 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From hubicka at ucw dot cz  2004-02-14 14:38 -------
Subject: Re:  [3.4/3.5 Regression] memory consumption for heavy template instantiations tripled since 3.3

> 
> ------- Additional Comments From hubicka at gcc dot gnu dot org  2004-02-14 14:27 -------
> Memory usage is now at 104MB that is still more than 3.3 did, but give that this code is almost perfect testcase where unit-at-a-time shall lose, I think score is not bad.
> Mark's patches helped a lot to amount of garbage produced by C++ frontend on mainline now (reducing amount of garbage from 2GB to 700MB), but I think we can do significantly better still.
> One problem is large consumption of struct function (about 10% of memory surviving from frontend).  Many of these struct functions are for functions that were never cgraph_finalize_function (either templates or unused functions).  I think these should be freed but I don't know how.
> Also C++ frontend still produce a lot of gabrage(39MB of 700MB memory is needed) Major producers are:
> varray.c:161 (varray_grow)                                        20496    1473380     401588:1.600%     210256:0.532%
> cp/call.c:2181 (add_template_candidate_real)                      96047    2339908      63560:2.051%          0:0.000%
> cp/name-lookup.c:1719 (set_identifier_type_value_with_scope)     151575    3031500          0:2.587%          0:0.000%
> tree.c:3962 (build_method_type_directly)                          24117    2604636     482340:2.634%    1411456:3.574%
> cp/lex.c:773 (copy_decl)                                          31558    3408264          0:2.909%    2979720:7.545%
> cp/name-lookup.c:2800 (push_class_level_binding)                 170972    3419440          0:2.918%        140:0.000%
> tree-inline.c:1970 (copy_tree_r)                                 176657    3606700       4084:3.081%     551820:1.397%
> cp/search.c:1200 (build_baselink)                                168114    4034736          0:3.443%        552:0.001%
> cp/pt.c:6252 (tsubst_decl)                                        38668    4176144          0:3.564%    2390580:6.053%
> cp/name-lookup.c:4720 (store_bindings)                           221688    4433760          0:3.784%          0:0.000%
> cp/pt.c:5738 (tsubst_template_args)                              248319    5966576      74480:5.155%     570592:1.445%
> function.c:6397 (allocate_struct_function)                         9158    4688896    1978128:5.689%    4087720:10.351%
> cp/pt.c:3814 (coerce_template_parms)                             282818    6655016      65496:5.735%      46156:0.117%
> tree.c:3908 (build_function_type)                                 57993    6263244    1159860:6.335%     332672:0.842%
> (first percentage is garbage allocated, second percentage is amount of memory surviving to cgraph_optimize)
> Backend looks better now, produce about 300MB of additional garbage.  About 10-20% can be saved by better aliasing and moving log links into separate structure.  Overall we went from 4GB garbage to 900MB.
> I don't have enought knowledge of templates and name lookup to get things significantly better.

Actually I messed up the numbers.  We produce 1.1GB of garbage in
frontend and 1.2GB in backend.  I have about 30% rediction of backend
memory by mixture of retirincg line number notes, moving log links away
and fixing some of cselib datastructures.

One big problem is that inlined bodies remain reachable somehow.  Partly
it is because of ABSTRACT_ORIGIN pointers after subsequent inlining but
I am not sure what is really causing the rest.

The amount of memory used by trees grows from 39MB to 100MB during
compilation stage.

Honza
> 
> -- 
> 
> 
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12850
> 
> ------- You are receiving this mail because: -------
> You are the assignee for the bug, or are watching the assignee.


-- 


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


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

* [Bug c++/12850] memory consumption for heavy template instantiations tripled since 3.3
  2003-10-30 23:42 [Bug c++/12850] New: memory consumption for heavy template instantiations tripled since 3.3 jens dot maurer at gmx dot net
                   ` (27 preceding siblings ...)
  2004-02-14 14:38 ` hubicka at ucw dot cz
@ 2004-03-21 18:58 ` mmitchel at gcc dot gnu dot org
  2004-05-05 23:31 ` hubicka at gcc dot gnu dot org
                   ` (14 subsequent siblings)
  43 siblings, 0 replies; 47+ messages in thread
From: mmitchel at gcc dot gnu dot org @ 2004-03-21 18:58 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From mmitchel at gcc dot gnu dot org  2004-03-21 18:58 -------
There's nothing more to be fixed here for 3.4.x, so I've retargeted this at 3.5.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|[3.4/3.5 Regression] memory |memory consumption for heavy
                   |consumption for heavy       |template instantiations
                   |template instantiations     |tripled since 3.3
                   |tripled since 3.3           |
   Target Milestone|3.4.0                       |3.5.0


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


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

* [Bug c++/12850] memory consumption for heavy template instantiations tripled since 3.3
  2003-10-30 23:42 [Bug c++/12850] New: memory consumption for heavy template instantiations tripled since 3.3 jens dot maurer at gmx dot net
                   ` (28 preceding siblings ...)
  2004-03-21 18:58 ` [Bug c++/12850] " mmitchel at gcc dot gnu dot org
@ 2004-05-05 23:31 ` hubicka at gcc dot gnu dot org
  2004-07-04 23:35 ` pinskia at gcc dot gnu dot org
                   ` (13 subsequent siblings)
  43 siblings, 0 replies; 47+ messages in thread
From: hubicka at gcc dot gnu dot org @ 2004-05-05 23:31 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From hubicka at gcc dot gnu dot org  2004-05-05 23:31 -------
We no longer have major memory consumption regression here.  I don't want to 
see it red ;) 

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
           Severity|critical                    |normal


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


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

* [Bug c++/12850] memory consumption for heavy template instantiations tripled since 3.3
  2003-10-30 23:42 [Bug c++/12850] New: memory consumption for heavy template instantiations tripled since 3.3 jens dot maurer at gmx dot net
                   ` (29 preceding siblings ...)
  2004-05-05 23:31 ` hubicka at gcc dot gnu dot org
@ 2004-07-04 23:35 ` pinskia at gcc dot gnu dot org
  2004-09-23 18:17 ` pinskia at gcc dot gnu dot org
                   ` (12 subsequent siblings)
  43 siblings, 0 replies; 47+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2004-07-04 23:35 UTC (permalink / raw)
  To: gcc-bugs



-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|3.5.0                       |---


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


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

* [Bug c++/12850] memory consumption for heavy template instantiations tripled since 3.3
  2003-10-30 23:42 [Bug c++/12850] New: memory consumption for heavy template instantiations tripled since 3.3 jens dot maurer at gmx dot net
                   ` (30 preceding siblings ...)
  2004-07-04 23:35 ` pinskia at gcc dot gnu dot org
@ 2004-09-23 18:17 ` pinskia at gcc dot gnu dot org
  2004-09-27  4:02 ` pinskia at gcc dot gnu dot org
                   ` (11 subsequent siblings)
  43 siblings, 0 replies; 47+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2004-09-23 18:17 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pinskia at gcc dot gnu dot org  2004-09-23 18:17 -------
could someone test this again (I think Jan's memory tester has the numbers for the mainline but I could 
be wrong).

-- 


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


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

* [Bug c++/12850] memory consumption for heavy template instantiations tripled since 3.3
  2003-10-30 23:42 [Bug c++/12850] New: memory consumption for heavy template instantiations tripled since 3.3 jens dot maurer at gmx dot net
                   ` (31 preceding siblings ...)
  2004-09-23 18:17 ` pinskia at gcc dot gnu dot org
@ 2004-09-27  4:02 ` pinskia at gcc dot gnu dot org
  2004-12-03  3:02 ` pinskia at gcc dot gnu dot org
                   ` (10 subsequent siblings)
  43 siblings, 0 replies; 47+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2004-09-27  4:02 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pinskia at gcc dot gnu dot org  2004-09-27 04:02 -------
Removing the patch keyword since all the patches referenced here have been applied.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|patch                       |


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


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

* [Bug c++/12850] memory consumption for heavy template instantiations tripled since 3.3
  2003-10-30 23:42 [Bug c++/12850] New: memory consumption for heavy template instantiations tripled since 3.3 jens dot maurer at gmx dot net
                   ` (32 preceding siblings ...)
  2004-09-27  4:02 ` pinskia at gcc dot gnu dot org
@ 2004-12-03  3:02 ` pinskia at gcc dot gnu dot org
  2004-12-11 17:43 ` pinskia at gcc dot gnu dot org
                   ` (9 subsequent siblings)
  43 siblings, 0 replies; 47+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2004-12-03  3:02 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pinskia at gcc dot gnu dot org  2004-12-03 03:02 -------
I should note that 4.0.0 is like 3x faster than 3.3.2 at -O1 on this test.

-- 


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


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

* [Bug c++/12850] memory consumption for heavy template instantiations tripled since 3.3
  2003-10-30 23:42 [Bug c++/12850] New: memory consumption for heavy template instantiations tripled since 3.3 jens dot maurer at gmx dot net
                   ` (33 preceding siblings ...)
  2004-12-03  3:02 ` pinskia at gcc dot gnu dot org
@ 2004-12-11 17:43 ` pinskia at gcc dot gnu dot org
  2004-12-21  3:33 ` pinskia at gcc dot gnu dot org
                   ` (8 subsequent siblings)
  43 siblings, 0 replies; 47+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2004-12-11 17:43 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pinskia at gcc dot gnu dot org  2004-12-11 17:42 -------
On the mainline at -O1 (since I cannot compile at -O0 but that is a different bug which I already filed):
cp/lex.c:716 (copy_decl)                             910284: 0.1%          0: 0.0%    6083812:11.3%          0: 0.0%      
56404
ggc-common.c:193 (ggc_calloc)                       3299632: 0.4%   11884228: 2.5%    1207832: 2.2%    
2736868: 1.6%      22853
tree.c:4530 (build_method_type_directly)            1173592: 0.1%          0: 0.0%    2903048: 5.4%     
750960: 0.4%      26820
tree.c:4266 (build_reference_type_for_mode)             456: 0.0%          0: 0.0%     602376: 1.1%     
111048: 0.1%       3966
cp/class.c:2455 (maybe_add_class_template_decl_l          0: 0.0%          0: 0.0%    1061232: 2.0%          
0: 0.0%      44218
tree.c:472 (copy_list)                                 2232: 0.0%          0: 0.0%    1083164: 2.0%          0: 0.0%       
8854
Those are ones which leak still.

-- 


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


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

* [Bug c++/12850] memory consumption for heavy template instantiations tripled since 3.3
  2003-10-30 23:42 [Bug c++/12850] New: memory consumption for heavy template instantiations tripled since 3.3 jens dot maurer at gmx dot net
                   ` (34 preceding siblings ...)
  2004-12-11 17:43 ` pinskia at gcc dot gnu dot org
@ 2004-12-21  3:33 ` pinskia at gcc dot gnu dot org
  2004-12-21  5:53 ` pinskia at gcc dot gnu dot org
                   ` (7 subsequent siblings)
  43 siblings, 0 replies; 47+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2004-12-21  3:33 UTC (permalink / raw)
  To: gcc-bugs



-- 
Bug 12850 depends on bug 18683, which changed state.

Bug 18683 Summary: [4.0 Regression] seg fault in local allocate
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18683

           What    |Old Value                   |New Value
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED

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


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

* [Bug c++/12850] memory consumption for heavy template instantiations tripled since 3.3
  2003-10-30 23:42 [Bug c++/12850] New: memory consumption for heavy template instantiations tripled since 3.3 jens dot maurer at gmx dot net
                   ` (35 preceding siblings ...)
  2004-12-21  3:33 ` pinskia at gcc dot gnu dot org
@ 2004-12-21  5:53 ` pinskia at gcc dot gnu dot org
  2004-12-23 12:20 ` steven at gcc dot gnu dot org
                   ` (6 subsequent siblings)
  43 siblings, 0 replies; 47+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2004-12-21  5:53 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pinskia at gcc dot gnu dot org  2004-12-21 05:53 -------
Here are the results for -O0, now that PR 18683 is now fixed:
cp/lex.c:716 (copy_decl)                            1087604: 0.3%          0: 0.0%    5906492:10.6%          0: 0.0%      
56404
cp/pt.c:3978 (coerce_template_parms)               41586524: 9.6%          0: 0.0%     136540: 0.2%    
3865680: 7.4%    1138236


Though we do create a lot:
cp/parser.c:278 (cp_lexer_new_main)                       0: 0.0%   22585856:36.1%          0: 0.0%    
6332928:12.1%          5

Which is mostly a ggc_realloc of a buffer of all the tokens, maybe there is a better way of allocating this 
buffer as it seems like we create a lot of overhead because ot it.

-- 


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


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

* [Bug c++/12850] memory consumption for heavy template instantiations tripled since 3.3
  2003-10-30 23:42 [Bug c++/12850] New: memory consumption for heavy template instantiations tripled since 3.3 jens dot maurer at gmx dot net
                   ` (36 preceding siblings ...)
  2004-12-21  5:53 ` pinskia at gcc dot gnu dot org
@ 2004-12-23 12:20 ` steven at gcc dot gnu dot org
  2004-12-23 14:42 ` gdr at integrable-solutions dot net
                   ` (5 subsequent siblings)
  43 siblings, 0 replies; 47+ messages in thread
From: steven at gcc dot gnu dot org @ 2004-12-23 12:20 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From steven at gcc dot gnu dot org  2004-12-23 12:19 -------
The initial CP lexer bugger size is 10000:

#define CP_LEXER_BUFFER_SIZE 10000

That came in with the lex-all-ahead patch from Matt and Zack,
on 2004-09-20 (parser.c rev. 1.250 for the CVS history diggers)
but it seems a bit low to me if you're going to lex the whole
file up front.  I would not be surprised if the average C++
code with lots of templates has several 100,000 tokens...  Let
me see:
- preprocessed sources for generate.ii from PR8361, blank and
  pound lines stripped:  36200 lines
- an average of 7 tokens per line in the first 500 lines, let's
  assume that's a reasonable average for the whole file (it's
  easy to instrument g++ to get the exact number of tokens, if
  you want more accurate numbers ;-)

That makes it >250,000 tokens for this file.

Since we double the buffer, we have:
10,000 + 20,000 + 40,000 + 80,000 + 160,000 + 320,000 = 630000

That is the number of tokens we have allocate room for, with no
ggc-collect in the middle.  With ggc-page, which has power-of-2
based page sizes, it's safe to assume that each previous buffer
is too small to be reallocated, so a full new buffer is allocated
and the old one is memcpy-ed to the new one.  With checking off,
we ggc_free the old buffer, but with checking enabled we don't
so after finishing the whole lexing process, we have keep around
a buffer of ~380,000*sizeof(cp_token), so that's roughly 10MB
of memory we can't reclaim until the first ggc_collect call.

Maybe buffer should not be in GC memory at all?  We know the
exact live time of buffer, and as far as I can tell we never
ggc_collect while it is live.  According to the comments for
cp_lexer, "Tokens are never added to the cp_lexer after it is
created."  So it may be cheaper to have the buffer xmalloced,
and memcpy-ed to a buffer in GC space just before saving it
in the new cp_lexer object.

So two suggestions for a person who wants to make g++ a little
faster here:
- make CP_LEXER_BUFFER_SIZE larger.  To make it use pages more
  efficiently, look for some ratio of pagesize/(sizeof (cp_token))
- see buffer in parser.c:cp_lexer_new_main can be moved out of GC
  space as suggested above.



-- 


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


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

* [Bug c++/12850] memory consumption for heavy template instantiations tripled since 3.3
  2003-10-30 23:42 [Bug c++/12850] New: memory consumption for heavy template instantiations tripled since 3.3 jens dot maurer at gmx dot net
                   ` (37 preceding siblings ...)
  2004-12-23 12:20 ` steven at gcc dot gnu dot org
@ 2004-12-23 14:42 ` gdr at integrable-solutions dot net
  2004-12-28 16:43 ` pinskia at gcc dot gnu dot org
                   ` (4 subsequent siblings)
  43 siblings, 0 replies; 47+ messages in thread
From: gdr at integrable-solutions dot net @ 2004-12-23 14:42 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From gdr at integrable-solutions dot net  2004-12-23 14:42 -------
Subject: Re:  memory consumption for heavy template instantiations tripled since 3.3

"steven at gcc dot gnu dot org" <gcc-bugzilla@gcc.gnu.org> writes:

[...]

| Maybe buffer should not be in GC memory at all?  We know the
| exact live time of buffer, and as far as I can tell we never
| ggc_collect while it is live.  According to the comments for
| cp_lexer, "Tokens are never added to the cp_lexer after it is
| created."  So it may be cheaper to have the buffer xmalloced,
| and memcpy-ed to a buffer in GC space just before saving it
| in the new cp_lexer object.

Your analysis makes sense to me.  I never quite understood the
addiction to GC-allocated memory throughout the compiler.

-- Gaby


-- 


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


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

* [Bug c++/12850] memory consumption for heavy template instantiations tripled since 3.3
  2003-10-30 23:42 [Bug c++/12850] New: memory consumption for heavy template instantiations tripled since 3.3 jens dot maurer at gmx dot net
                   ` (38 preceding siblings ...)
  2004-12-23 14:42 ` gdr at integrable-solutions dot net
@ 2004-12-28 16:43 ` pinskia at gcc dot gnu dot org
  2004-12-29 12:57 ` steven at gcc dot gnu dot org
                   ` (3 subsequent siblings)
  43 siblings, 0 replies; 47+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2004-12-28 16:43 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pinskia at gcc dot gnu dot org  2004-12-28 16:43 -------
(In reply to comment #36)
> The initial CP lexer bugger size is 10000:

The same amount of garbage is also done for PR 8361.


Also note I could not compile this source again becuase of the use of long double which causes an ICE 
for ppc-darwin but that has been fixed already.

-- 


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


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

* [Bug c++/12850] memory consumption for heavy template instantiations tripled since 3.3
  2003-10-30 23:42 [Bug c++/12850] New: memory consumption for heavy template instantiations tripled since 3.3 jens dot maurer at gmx dot net
                   ` (39 preceding siblings ...)
  2004-12-28 16:43 ` pinskia at gcc dot gnu dot org
@ 2004-12-29 12:57 ` steven at gcc dot gnu dot org
  2004-12-29 13:10 ` steven at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  43 siblings, 0 replies; 47+ messages in thread
From: steven at gcc dot gnu dot org @ 2004-12-29 12:57 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From steven at gcc dot gnu dot org  2004-12-29 12:57 -------
I've been looking at a bunch of C++ codes, 160000 or 320000 seems like 
a reasonable value for CP_LEXER_BUFFER_SIZE. 
 

-- 


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


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

* [Bug c++/12850] memory consumption for heavy template instantiations tripled since 3.3
  2003-10-30 23:42 [Bug c++/12850] New: memory consumption for heavy template instantiations tripled since 3.3 jens dot maurer at gmx dot net
                   ` (40 preceding siblings ...)
  2004-12-29 12:57 ` steven at gcc dot gnu dot org
@ 2004-12-29 13:10 ` steven at gcc dot gnu dot org
  2005-07-23 22:32 ` pinskia at gcc dot gnu dot org
  2005-07-24  4:50 ` gdr at integrable-solutions dot net
  43 siblings, 0 replies; 47+ messages in thread
From: steven at gcc dot gnu dot org @ 2004-12-29 13:10 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From steven at gcc dot gnu dot org  2004-12-29 13:09 -------
Trivial 6MB win: 
 
Index: parser.c 
=================================================================== 
RCS file: /cvs/gcc/gcc/gcc/cp/parser.c,v 
retrieving revision 1.298 
diff -u -r1.298 parser.c 
--- parser.c    23 Dec 2004 22:07:01 -0000      1.298 
+++ parser.c    29 Dec 2004 13:06:30 -0000 
@@ -190,7 +190,7 @@ 
   (cp_token *, cp_token *); 
 
 /* Manifest constants.  */ 
-#define CP_LEXER_BUFFER_SIZE 10000 
+#define CP_LEXER_BUFFER_SIZE 160000 
 #define CP_SAVED_TOKEN_STACK 5 
 
 /* A token type for keywords, as opposed to ordinary identifiers.  */ 
 
This does not fix the underlying problem that the buffer resizing in GC 
space gives a quadratic behavior in storage allocation, but it avoids it 
for most files, and it gives a ~2% speedup at -O0 on my box. 
 
Stats for cp_lexer_new_main for the test case from PR8361 (-O0): 
 
Before: 
source location     Freed        Leak         Overhead       Times 
cp/parser.c:263    728576: 1.2%     0: 0.0%     204288: 0.5%     1 
cp/parser.c:278  45171712:71.7%     0: 0.0%   12665856:29.2%     5 
cp/parser.c:253        72: 0.0%     0: 0.0%          8: 0.0%     1 
 
After: 
source location     Freed        Leak         Overhead       Times 
cp/parser.c:263  11657216:22.4%     0: 0.0%    3268608: 8.1%     1 
cp/parser.c:278  23314432:44.8%     0: 0.0%    6537216:16.2%     1 
cp/parser.c:253        72: 0.0%     0: 0.0%          8: 0.0%     1 
 
Perhaps we should look for an altogether different data structure for the 
token buffer - some kind of vector of smaller buffers perhaps. 
 

-- 


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


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

* [Bug c++/12850] memory consumption for heavy template instantiations tripled since 3.3
  2003-10-30 23:42 [Bug c++/12850] New: memory consumption for heavy template instantiations tripled since 3.3 jens dot maurer at gmx dot net
                   ` (41 preceding siblings ...)
  2004-12-29 13:10 ` steven at gcc dot gnu dot org
@ 2005-07-23 22:32 ` pinskia at gcc dot gnu dot org
  2005-07-24  4:50 ` gdr at integrable-solutions dot net
  43 siblings, 0 replies; 47+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2005-07-23 22:32 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pinskia at gcc dot gnu dot org  2005-07-23 22:14 -------
cp/tree.c:827 (ovl_cons)                           11464712: 3.2%          0: 0.0%     660240: 1.4%    1732136: 
5.2%     433034

Hmm OVERLOAD tree takes 3% of the Garbage which seems like too big, though I don't know how big 
long the OVERLOAD trees are, I might add something to count that.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
  BugsThisDependsOn|                            |22635


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


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

* [Bug c++/12850] memory consumption for heavy template instantiations tripled since 3.3
  2003-10-30 23:42 [Bug c++/12850] New: memory consumption for heavy template instantiations tripled since 3.3 jens dot maurer at gmx dot net
                   ` (42 preceding siblings ...)
  2005-07-23 22:32 ` pinskia at gcc dot gnu dot org
@ 2005-07-24  4:50 ` gdr at integrable-solutions dot net
  43 siblings, 0 replies; 47+ messages in thread
From: gdr at integrable-solutions dot net @ 2005-07-24  4:50 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From gdr at integrable-solutions dot net  2005-07-24 03:36 -------
Subject: Re:  memory consumption for heavy template instantiations tripled since 3.3

"pinskia at gcc dot gnu dot org" <gcc-bugzilla@gcc.gnu.org> writes:


| cp/tree.c:827 (ovl_cons)                           11464712: 3.2%          0: 0.0%     660240: 1.4%    1732136: 
| 5.2%     433034
| 
| Hmm OVERLOAD tree takes 3% of the Garbage which seems like too big,
| though I don't know how big  
| long the OVERLOAD trees are, I might add something to count that.

It is not uncommon to have large overload sets in C++ -- that is what
people do when they discover that they can overload in the literal
sense ;-)

-- Gaby


-- 


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


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

end of thread, other threads:[~2005-07-24  3:36 UTC | newest]

Thread overview: 47+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-10-30 23:42 [Bug c++/12850] New: memory consumption for heavy template instantiations tripled since 3.3 jens dot maurer at gmx dot net
2003-10-30 23:43 ` [Bug c++/12850] " jens dot maurer at gmx dot net
2003-10-30 23:44 ` jens dot maurer at gmx dot net
2003-10-31  0:04 ` jens dot maurer at gmx dot net
2003-10-31  1:39 ` [Bug c++/12850] [3.4 Regression] " pinskia at gcc dot gnu dot org
2003-12-19  9:41 ` pinskia at gcc dot gnu dot org
2004-01-14 11:37   ` Jan Hubicka
2004-01-14 11:38   ` Jan Hubicka
2003-12-29 17:55 ` pinskia at gcc dot gnu dot org
2004-01-05  6:43 ` pinskia at gcc dot gnu dot org
2004-01-05  6:58 ` pinskia at gcc dot gnu dot org
2004-01-05  7:29 ` pinskia at gcc dot gnu dot org
2004-01-06 23:18 ` pinskia at gcc dot gnu dot org
2004-01-07  7:27 ` pinskia at gcc dot gnu dot org
2004-01-07  8:03 ` steven at gcc dot gnu dot org
2004-01-10 13:36 ` hubicka at gcc dot gnu dot org
2004-01-10 17:12 ` pinskia at gcc dot gnu dot org
2004-01-13 23:59 ` cvs-commit at gcc dot gnu dot org
2004-01-14 11:34 ` cvs-commit at gcc dot gnu dot org
2004-01-14 11:37 ` hubicka at ucw dot cz
2004-01-14 11:38 ` hubicka at ucw dot cz
2004-01-14 18:12 ` pinskia at gcc dot gnu dot org
2004-01-27 13:14 ` [Bug c++/12850] [3.4/3.5 " cvs-commit at gcc dot gnu dot org
2004-01-27 16:35 ` pinskia at gcc dot gnu dot org
2004-01-27 16:37 ` hubicka at ucw dot cz
2004-01-29  0:34 ` cvs-commit at gcc dot gnu dot org
2004-01-30 11:46 ` cvs-commit at gcc dot gnu dot org
2004-01-31 12:01 ` cvs-commit at gcc dot gnu dot org
2004-02-01 13:01 ` cvs-commit at gcc dot gnu dot org
2004-02-14 14:27 ` hubicka at gcc dot gnu dot org
2004-02-14 14:38 ` hubicka at ucw dot cz
2004-03-21 18:58 ` [Bug c++/12850] " mmitchel at gcc dot gnu dot org
2004-05-05 23:31 ` hubicka at gcc dot gnu dot org
2004-07-04 23:35 ` pinskia at gcc dot gnu dot org
2004-09-23 18:17 ` pinskia at gcc dot gnu dot org
2004-09-27  4:02 ` pinskia at gcc dot gnu dot org
2004-12-03  3:02 ` pinskia at gcc dot gnu dot org
2004-12-11 17:43 ` pinskia at gcc dot gnu dot org
2004-12-21  3:33 ` pinskia at gcc dot gnu dot org
2004-12-21  5:53 ` pinskia at gcc dot gnu dot org
2004-12-23 12:20 ` steven at gcc dot gnu dot org
2004-12-23 14:42 ` gdr at integrable-solutions dot net
2004-12-28 16:43 ` pinskia at gcc dot gnu dot org
2004-12-29 12:57 ` steven at gcc dot gnu dot org
2004-12-29 13:10 ` steven at gcc dot gnu dot org
2005-07-23 22:32 ` pinskia at gcc dot gnu dot org
2005-07-24  4:50 ` gdr at integrable-solutions dot net

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).