Commit Graph

17 Commits

Author SHA1 Message Date
Richard Kenner
54bd7fd4f6 Avoid #ifdef HARD_REG_SET.
From-SVN: r6974
1994-04-06 07:07:02 -04:00
Doug Evans
dc17cfda7d (MAX_MOVE_MAX, MAX_UNITS_PER_WORD): New macros.
(regno_save_mode, regno_save_mem): Use them.

From-SVN: r5102
1993-08-07 19:58:54 +00:00
Richard Stallman
73737e867f (restore_referenced_regs): New variable saveregs which is number of regs to save at a time...
(restore_referenced_regs): New variable saveregs
which is number of regs to save at a time, instead of numregs,
which is total number of registers to save.

From-SVN: r4445
1993-05-14 04:22:03 +00:00
Richard Kenner
c1f0402289 Add prototypes for static functions.
(choose_hard_reg_mode): Add missing parameters declaration.

From-SVN: r3886
1993-03-26 17:29:57 -05:00
Jim Wilson
193013107a (CEIL): Delete.
(restore_referenced_regs): New var NUMREGS.  Pass NUMREGS to
insert_save_restore instead of using using CEIL.

From-SVN: r3427
1993-02-05 15:35:32 -08:00
Richard Kenner
b5c2c9bc2f (setup_save_areas): Don't assign save area for a group if some
register in the group has already been assigned an area.

From-SVN: r3000
1992-12-30 07:02:45 -05:00
Richard Stallman
34536f93eb (save_call_clobbered_regs): Ensure any insns we add
are in the same basic block as the insn we added them for.

From-SVN: r2726
1992-11-09 20:07:35 +00:00
Richard Stallman
39fa348549 (setup_save_areas): Don't look at WORDS_BIG_ENDIAN.
From-SVN: r2049
1992-09-03 23:25:40 +00:00
Richard Stallman
9233f8ce48 (insert_save_restore): Correct test for
determining whether multiple registers can be saved.

From-SVN: r2042
1992-09-03 07:13:23 +00:00
Jeff Law
c515799cd1 caller-save.c (init_caller_save): If we were unable to find a simple insn which meets all its constraints to save...
* caller-save.c (init_caller_save): If we were unable to
	find a simple insn which meets all its constraints to save
	and restore with a single insn in a mode, then set
	regno_save_mode to VOIDmode to insure that this mode is never
	used to caller-save the	current register.

From-SVN: r2038
1992-09-02 17:08:44 -06:00
Jeff Law
d8ed9afb2c caller-save.c (restore_referenced_regs): When restoring a referenced hard register...
* caller-save.c (restore_referenced_regs): When restoring a
	referenced hard register, use CEIL instead of truncating
	divide to determine the maximum number of registers to
	restore.
	(insert_save_restore): Document maxrestore parameter.
	(CEIL): Define.

From-SVN: r2003
1992-08-31 08:05:07 -06:00
Jeff Law
f95361c8d0 Major rework to have caller-saves emit load/store double insns when...
Major rework to have caller-saves emit load/store double insns when
	possible and to avoid useless resaving of registers restored for
	source accesses only.
	* caller-save.c (toplevel): All arrays are multi-dimensional to
	hold information for multiple save/restore insns.  New variable
	hard_regs_need_restore.
	(choose_hard_reg_mode): New argument `nregs' indicating how many
	hard registers are desired.  All callers changed.
	(init_caller_save): Change initialization to handle multiple
	register saves.  A call-used register can not be live across
	if we can not find a single register mode to save it in.
	(multiple register saves are optional)
	(init_save_areas): Change initialization of regno_save_mem to
	handle multiple register saves.
	(setup_save_areas): Allocate space for consecutive hard registers
	in aligned consecutive memory locations.   When allocating space
	for consecutive hard registers, also initialize regno_save_mem
	for each hard register stored as a single word.
	(save_call_clobbered_regs): Initialize hard_regs_need_restore.
	Set hard_regs_need_restore to hard_regs_saved after crossing
	a call.  Also recompute n_regs_saved.  At the end of a basic block
	we need only restore registers in hard_regs_need_restore.
	(set_reg_live, clear_reg_live): Do the right thing for
	hard_regs_need_restore and hard_regs_saved.
	(restore_referenced_regs): Just return if X is a clobber.
	Test hard_regs_need_restore to determine when to restore a hard
	register from the save area.
	(insert_save_restore): Now returns the number of extra registers
	saved/restored.  New argument `maxrestore' which constrains how
	many hard registers should be restored.  All callers changed.
	Do stores of consecutive registers with double store insns if
	possible.  Else do them with single word insns. Likewise for
	loads, except constrained by maxrestore.  Set hard_regs_saved
	and hard_regs_need_restore appropriately to minimize useless
	saves into the save area.  Test against	hard_regs_need_restore
	when trying to restore multiple regs and similarly test against
	hard_regs_saved when storing multiple regs.

From-SVN: r1964
1992-08-26 13:41:20 -06:00
Charles Hannum
3245eea08a entered into RCS
From-SVN: r1466
1992-07-06 19:55:04 +00:00
Richard Kenner
916f14f12b *** empty log message ***
From-SVN: r727
1992-04-11 20:30:30 -04:00
Richard Kenner
09835ed242 *** empty log message ***
From-SVN: r676
1992-04-03 19:22:29 -05:00
Richard Stallman
e048626b05 *** empty log message ***
From-SVN: r352
1992-02-21 06:30:52 +00:00
Richard Stallman
c5986054c2 Initial revision
From-SVN: r308
1992-02-12 17:16:21 +00:00