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


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

Re: i386-coff: regression from gcc 2.8.1


> For that specific code fragment, I've traced the trouble to the regmove
> `optimization'. If I disable it for egcs, I get the exact same code that
> I used to get for gcc 2.8.1.

I haven't look at the details of your problem so that following may not
apply.  There was an improvement to regmove on June 11, 1998 which resulted
in better register numbering so that reload did less work.  Unfortunately
in some situations the register in questioned was allocated by local-alloc
and spilled by reload.  Prior to the change reload would allocate another
hard register in order to satisfy the RTL template (which required that
one of the input operands be the same as the output operand).  This wasn't
necessary after the change since regmove already took care of the constraint.
This would be fine but for the fact that registers allocated by local-alloc
which are spilled to the stack are normally left there.

If this is your problem then following patch which is already in CVS may
be of help.  In general the current development tree is much better at
handling register spillage.

ChangeLog:

Sat Sep  5 16:34:34 EDT 1998  John Wehle  (john@feith.com)

	* global.c: Update comments.
	(global_alloc): Assign allocation-numbers
	even for registers allocated by local_alloc in case
	they are later spilled and retry_global_alloc is called.
	(mark_reg_store, mark_reg_clobber,
	mark_reg_conflicts, mark_reg_death): Always record a
	conflict with a pseudo register even if it has been
	assigned to a hard register.
	(dump_conflicts): Don't dump pseudo registers already
	assigned to a hard register.
	* local-alloc.c: Update comment.

-- John
-------------------------------------------------------------------------
|   Feith Systems  |   Voice: 1-215-646-8000  |  Email: john@feith.com  |
|    John Wehle    |     Fax: 1-215-540-5495  |                         |
-------------------------------------------------------------------------


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