Commit Graph

74 Commits

Author SHA1 Message Date
Richard Kenner
2d55b7e858 (find_reloads): Properly test for output operand when changing
RELOAD_FOR_OUTPUT_ADDRESS to RELOAD_FOR_INPUT_ADDRESS.

From-SVN: r6420
1994-01-23 20:11:18 -05:00
Richard Kenner
03b72c86a8 (push_reload...
(push_reload, find_reloads): Reload inside a paradoxical SUBREG of MEM
except don't force a reload unless the inner mode is narrower than
BIGGEST_ALIGNMENT.

From-SVN: r6302
1993-12-24 08:33:15 -05:00
Richard Kenner
fd72420f23 (find_reloads_toplev): Replace obsolete reference to
BYTE_LOADS_*_EXTEND with LOAD_EXTEND_OP.

From-SVN: r6174
1993-12-02 06:45:55 -05:00
Richard Stallman
0ba9317ecc (push_reload): Allow RELOAD_FOR_INPUT with a secondary
reload the same class as the input if the modes differ.

From-SVN: r6089
1993-11-15 00:20:51 +00:00
Richard Kenner
3a322c50e1 (find_reloads, case 'o'): A pseudo is not always an offsettable memref.
(find_reloads): If we reload a constant into a register via memory, count it
as two reloads.

From-SVN: r6000
1993-11-04 19:00:08 -05:00
Richard Kenner
ca76982841 (push_reload, find_reloads): If an operand is a SUBREG of a PLUS,
force a reload and reload what is inside.

From-SVN: r5814
1993-10-19 19:20:04 -04:00
Jim Wilson
d9771f6295 (form_sum): Undo Sep 28 change.
From-SVN: r5548
1993-10-01 15:27:08 -07:00
Richard Stallman
0d38001f71 (find_reloads): Don't call find_reloads_toplev
(or anything like that)	for match_operator operands.

From-SVN: r5527
1993-09-29 02:21:41 +00:00
Jim Wilson
0ec1e3690e (form_sum): Change the way that form_sum canonicalizes addresses...
(form_sum): Change the way that form_sum canonicalizes
addresses, so that it never creates (PLUS (PLUS MEM CONST_INT) REG)
but instead canonicallizes this to (PLUS (PLUS REG CONST_INT) MEM).

From-SVN: r5506
1993-09-28 15:22:08 -07:00
Richard Kenner
09bf025089 (push_reload...
(push_reload, find_reloads): Use new macros LOAD_EXTEND_OP and
WORD_REGISTER_OPERATION instead of BYTE_LOADS_*_EXTEND and
LOAD_EXTEND.

From-SVN: r5475
1993-09-25 08:22:29 -04:00
Doug Evans
a36d4c6259 reload.c: (immune_p): Constants never overlap hard frame pointer references.
* reload.c: (immune_p): Constants never overlap hard frame pointer references.
(find_reloads_address): Compute invalid references to the hard
frame pointer in a register; also (reg + const)
and (reg + reg + const).

From-SVN: r5462
1993-09-24 19:50:44 +00:00
Richard Kenner
e64c4f9e2e (find_reloads): Reject an alternative if two operands match the same
output and we have to do a reload.

From-SVN: r5363
1993-09-19 12:48:55 -04:00
Richard Kenner
4644aad40e (earlyclobber_operand_p): New function.
(combine_reloads): Use it.
(find_reloads): Set reload_earlyclobbers earlier.
(refers_to_regno_for_reload_p): Count something being stored into if it is
an earlyclobber operand.

From-SVN: r5352
1993-09-18 07:57:54 -04:00
Richard Stallman
944d7b1408 (find_reloads): For PLUS operand, call find_reloads_toplev.
From-SVN: r5342
1993-09-16 17:35:50 +00:00
Richard Stallman
adb44af89e (find_reloads): Fix bugs in previous change.
From-SVN: r5329
1993-09-15 13:40:11 +00:00
Richard Stallman
36b505688d (find_dummy_reload): New args inmode, outmode.
(find_reloads): Pass new args.
(push_reload): Likewise.

From-SVN: r5319
1993-09-14 16:39:28 +00:00
Richard Kenner
915bb7632b (find_reloads): Bump REJECT for a hard register; just not for a
pseudo.

From-SVN: r5244
1993-09-01 18:46:03 -04:00
Jim Wilson
87935f601e (find_reloads_address_1): Handle SUBREGs same as REGs.
From-SVN: r5240
1993-09-01 15:07:57 -07:00
Jim Wilson
f40fac9b07 (push_reload): Abort is secondary_reload wants same
class as an input reload.

From-SVN: r5236
1993-08-31 14:22:41 -07:00
Richard Kenner
92b376919d (find_reloads): Don't combine two reloads if their reload_reg_rtx
values differ.

From-SVN: r5103
1993-08-07 18:21:23 -04:00
Richard Kenner
a61c98cf7f (push_reload, find_reloads): Treat (subreg (pseudo)) and (subreg (mem)) the same.
(push_reload, find_reloads): Treat (subreg (pseudo)) and (subreg (mem))
the same.
If we have (subreg:M1 (mem:M2 ...) ...), never do anything special if M1
and M2 are the same size.

From-SVN: r5097
1993-08-07 07:42:21 -04:00
Richard Kenner
f72ccbe63a (push_reload, find_reloads): Refine when we reload inside a SUBREG by respecting BYTE_LOADS_*_EXTEND...
(push_reload, find_reloads): Refine when we reload inside a SUBREG by
respecting BYTE_LOADS_*_EXTEND; see comments in push_reload.

From-SVN: r5076
1993-08-05 19:17:30 -04:00
Richard Kenner
26f1a00ea1 (subst_reloads): Don't use gen_lowpart_common to get reload register
into proper mode.

From-SVN: r4854
1993-07-05 17:59:09 -04:00
Richard Stallman
c1875d66e2 (find_reloads_address): Be selective about what inner
addresses to allow in an indirect mem ref.

From-SVN: r4783
1993-06-28 07:44:08 +00:00
Richard Stallman
73f6789529 (find_reloads): When merging reloads again after they have been changed...
(find_reloads): When merging reloads again after they have
been changed, do check reload_reg_class and reload_nocombine.

From-SVN: r4762
1993-06-26 21:19:02 +00:00
Richard Stallman
dbf85761b5 (make_memloc): Don't reuse a memloc.
From-SVN: r4675
1993-06-14 08:47:36 +00:00
Richard Stallman
86c31b2d15 (push_reload): Fix NULL arg in last change.
(push_reload): When IN is a subreg of a multiword reg
that uses a funny number of registers, and SUBREG_WORD is nonzero,
and IN must match an output, reload both the reg and the subreg.

From-SVN: r4556
1993-05-24 07:51:12 +00:00
Richard Stallman
54b5ffe961 (find_equiv_reg): Set goal_mem_addr_varies
for all but true constant addresses.

From-SVN: r4406
1993-05-10 05:01:08 +00:00
Richard Stallman
05b4ec4f0f (push_reload): Don't use IN as the reload reg in in-out
reload if it is set elsewhere in the insn.

From-SVN: r4382
1993-05-07 22:05:09 +00:00
Richard Kenner
f55b1d9739 (find_equiv_reg): Don't look inside a CONST_DOUBLE; use
operand_subword instead.

From-SVN: r4373
1993-05-06 18:18:06 -04:00
Richard Stallman
e05a9da8f9 (push_reload): Allow non-paradoxical SUBREGs of MEM
on machines that extend byte loads.

From-SVN: r4305
1993-05-02 14:01:55 +00:00
Richard Kenner
2c0623e83a (form_sum): Use mode of inputs when making new PLUS.
From-SVN: r3928
1993-03-30 15:34:11 -05:00
Richard Kenner
77545d45a3 (secondary_memlocs_elim): Now one per mode per operand.
(get_secondary_mem, combine_reloads): Reflect changed var above.
(clear_secondary_mem): Use bzero.

From-SVN: r3915
1993-03-29 16:39:58 -05:00
Richard Kenner
a8c9daebab Add prototypes for all static functions and clean up some definitions.
(struct decompose): Move to before function declarations.
(secondary_memlocs_elim): One per operand, not per mode.
(get_secondary_mem): Accept and use reload description (opnum and type).
(push_reload): Accept and use new reload description instead of old NEEDED_FOR.
Define two new macros: MERGEABLE_RELOADS and MERGE_TO_OTHER.
Use these macros to see if reloads can be merged and how to do it.
(transfer_replacements): New function.
(combine_reloads): Refine when we can combine reloads.
(find_reloads): Use new method of tracking what a reload is for.
When we make a CLOBBER insn, do so with DImode.
Merge cases of making optional reloads, avoid making output-only optional
reloads, refine when we may not make in-out optional reloads, and make an
optional reload for a pair of matching operands.
(find_reloads_toplev, find_reloads_address{,_1, part}): Accept and use reload
description.
(forget_volatility): Delete long-obsolete function.

From-SVN: r3911
1993-03-29 06:27:52 -05:00
Jim Wilson
b24a53d584 (get_secondary_mem): Use macro SECONDARY_MEMORY_NEEDED_RTX.
From-SVN: r3758
1993-03-16 11:52:45 -08:00
Richard Stallman
b39555b4d7 (find_reloads_address): Use strict_memory_address_p
to check for valid indirect address.

From-SVN: r3478
1993-02-16 22:13:45 +00:00
Jeff Law
f2fbfe928c reload.c (find_reloads_toplev): When handling a (subreg (reg)) where (reg) will be replaced by a memory...
* reload.c (find_reloads_toplev): When handling a (subreg (reg))
	where (reg) will be replaced by a memory reference, if the memory
	address is invalid for the mode of the subreg, then search the
	memory address for reloads.

From-SVN: r3385
1993-01-29 10:09:30 -07:00
Paul Eggert
ac2a945455 # Fix misspellings in comments.
From-SVN: r3183
1993-01-10 22:49:32 +00:00
Jim Wilson
dca52d8026 (operands_match_p): For WORDS_BIG_ENDIAN machines,
make multiple register operands equivalent if the last register of
the groups are the same.
(subst_reloads): Use gen_lowpart_common to change mode of
reloadreg.

From-SVN: r3030
1992-12-31 14:31:24 -08:00
Richard Stallman
5488078fdc (push_reload): Move the NO_REGS abort after the error check for asms, to avoid crashing for asms.
(push_reload): Move the NO_REGS abort after the
error check for asms, to avoid crashing for asms.
Fix inmode and outmode too, if they are VOID for an asm.

From-SVN: r2989
1992-12-30 07:28:37 +00:00
Jim Wilson
8d618585fc (get_secondary_mem): Don't save address if it isn't valid.
From-SVN: r2886
1992-12-16 11:19:12 -08:00
Richard Stallman
5aa14feece (find_reloads) [SMALL_REGISTER_CLASSES]:
Don't use preferred_class for a multiword register.

From-SVN: r2815
1992-11-27 23:52:02 +00:00
Richard Kenner
e64708b6b7 (combine_reloads): Don't combine with a reload needed for multiple
things.

From-SVN: r2752
1992-11-17 18:31:53 -05:00
Richard Kenner
3c80f7ed51 (find_reloads_address): When copying memref after we've made recursive
calls on it, copy any replacements we made.

From-SVN: r2642
1992-10-28 17:03:55 -05:00
Richard Stallman
ca3e4a2f2d (find_reloads_address): Redo last change: copy the mem
in the same way it's usually done.

From-SVN: r2503
1992-10-18 00:49:34 +00:00
Jim Wilson
ea9c5b9e08 (find_reloads): Don't let an operand have a numbered
constraint that makes it match itself.

From-SVN: r2463
1992-10-14 15:51:59 -07:00
Richard Stallman
d25554549b (find_reloads_address): If tem != ad, then create a new
mem to hold it and store it back into memrefloc.

From-SVN: r2330
1992-10-06 00:19:55 +00:00
Richard Kenner
191b18e9de (find_reloads_address): Properly check for constant address.
From-SVN: r2220
1992-09-23 19:26:34 -04:00
Richard Kenner
46da6b3a5a (find_reloads, find_reloads_toplev): Treat BYTE_LOADS_SIGN_EXTEND just
like BYTE_LOADS_ZERO_EXTEND.

From-SVN: r2188
1992-09-20 05:50:34 -04:00
Richard Stallman
3934c98b30 Add comment in find_reloads.
From-SVN: r2187
1992-09-20 07:25:26 +00:00