Commit Graph

3941 Commits

Author SHA1 Message Date
Brendan Kehoe
6eff269e95 define CONSTANT_ADDRESS_P(X) to not use CONST_DOUBLE
From-SVN: r3954
1993-03-31 15:09:44 -05:00
James Van Artsdalen
6ec87b9de9 (emit_swap_insn): Don't link cc0 insns: emit swap after cc0 user.
From-SVN: r3953
1993-03-31 17:30:15 +00:00
Richard Kenner
8877eb002f (LINK_SPEC): New definition.
From-SVN: r3952
1993-03-31 07:02:28 -05:00
Richard Kenner
1ff0c00d9f (insert_regs): If a REG already is in a class but not in the mode we
want, don't do anything to the classes.

From-SVN: r3951
1993-03-31 07:00:31 -05:00
Jeff Law
e6878cb948 * pa.h (toplevel): Declare output_bb.
From-SVN: r3950
1993-03-31 01:48:35 -07:00
Jeff Law
d2364a742a pa.c (output_cbranch): New function.
* pa.c (output_cbranch): New function.  Given the operands of the
	branch, possible nullification, length of the branch, possible branch
	negation, and the branch insn itself, return the output template for
	the desired conditional branch.
	(output_bb): Likewise, but for branch on bit.

From-SVN: r3949
1993-03-31 01:48:22 -07:00
Richard Stallman
0cf4720c58 (optimize_reg_copy_1): Don't increment n_calls specially if P is a call_insn.
From-SVN: r3948
1993-03-31 08:31:13 +00:00
Richard Stallman
d788976496 (convert_to_real): Pass mode arg to REAL_VALUE_ATOF.
From-SVN: r3947
1993-03-31 07:02:59 +00:00
Richard Stallman
e8650b8fcc entered into RCS
From-SVN: r3946
1993-03-31 06:42:45 +00:00
Richard Stallman
f5118aa5c8 (rtx_to_tree_code): Declare.
From-SVN: r3945
1993-03-31 05:54:38 +00:00
Richard Stallman
0c5e217dc9 (rtx_to_tree_code): New function.
From-SVN: r3944
1993-03-31 05:54:18 +00:00
Richard Stallman
d3159aee6e (simplify_binary_operation): real_value_truncate returns REAL_VALUE_TYPE.
(simplify_binary_operation): real_value_truncate
returns REAL_VALUE_TYPE.
Convert rtx_code into tree_code for argument to REAL_ARITHMETIC.

(simplify_unary_operation): Use new ..._RNDZINT macros
instead of casting value of REAL_VALUE_FIX_TRUNCATE
and REAL_VALUE_UNSIGNED_FIX_TRUNCATE.

From-SVN: r3943
1993-03-31 05:53:29 +00:00
Richard Stallman
e9f7ae4446 (expand_fix): Initialized REAL_VALUE_TYPE confuses some compilers.
From-SVN: r3942
1993-03-31 05:51:30 +00:00
Richard Stallman
2c7ff63c06 (assemble_real): Case TFmode and XFmode invoke ASM_OUTPUT_LONG_DOUBLE.
From-SVN: r3941
1993-03-31 05:50:52 +00:00
Richard Stallman
a19a1b5d5c Include real.h to get the definition of REAL_VALUE_TYPE.
From-SVN: r3940
1993-03-31 05:50:32 +00:00
Richard Stallman
5008b8ae95 (real_value_truncate): If REAL_ARITHMETIC, replace by routine of same name in real.c.
(real_value_truncate): If REAL_ARITHMETIC, replace
by routine of same name in real.c.
target_isinf, target_isnan, target_negative): Likewise.
(const_binop): Delete `register' from decls using REAL_VALUE_TYPE.
(fold_convert): Use REAL_VALUE_TO_INT.

From-SVN: r3939
1993-03-31 05:50:11 +00:00
Richard Stallman
1632afcaa7 (operand_subword): Use REAL_VALUE_TO_TARGET_SINGLE to convert to target float.
If REAL_ARITHMETIC is defined, let real.c handle incompatible host
and target floating point bit patterns.
(init_emit_once): Add machine_mode argument to REAL_VALUE_ATOF.

From-SVN: r3938
1993-03-31 05:48:38 +00:00
Richard Stallman
4b438c9e61 (split_double) : Use REAL_VALUE macros to extract ints
from float mode CONST_DOUBLEs.

From-SVN: r3937
1993-03-31 05:46:40 +00:00
Richard Stallman
1454a5ba18 (yylex): Convert real decimal constants directly to the precision specified by the letter at the end of the number.
(yylex): Convert real decimal constants directly
to the precision specified by the letter at the end of the number.
Pass mode arg to REAL_VALUE_ATOF to specify precision.
Move the "out of range of double" error check.

From-SVN: r3936
1993-03-31 05:44:03 +00:00
Richard Stallman
ee7e54412f (real.o): New target.
(OBJS): Add real.o.

From-SVN: r3935
1993-03-31 05:41:37 +00:00
Richard Stallman
fd76a739e5 If REAL_ARITHMETIC is defined or if LONG_DOUBLE_TYPE_SIZE is 96...
If REAL_ARITHMETIC is defined or if LONG_DOUBLE_TYPE_SIZE
is 96, then define REAL_VALUE_ macros to invoke functions in real.c.

(REAL_VALUE_RNDZINT, REAL_VALUE_UNSIGNED_RNDZINT):
New macros truncate toward zero to integer value but
return REAL_VALUE_TYPE.

(REAL_VALUE_TO_DECIMAL): New macro defaults to
fprintf if no REAL_ARITHMETIC, otherwise uses real.c for
binary to decimal conversion.  Used in ASM_OUTPUT_ macros.

From-SVN: r3934
1993-03-31 05:39:37 +00:00
Richard Stallman
985b6196e6 Initial revision
From-SVN: r3933
1993-03-31 05:30:24 +00:00
Jeff Law
751a3523c0 * Jeff for Tege.
* pa.md (sminsi3, smaxsi3): Fix bug in last change.

From-SVN: r3932
1993-03-30 15:02:05 -07:00
Michael Meissner
574c75a3b4 fkx
fix CLASS_MAX_NREGS to reflect -mfloat64 and -msoft-float.

From-SVN: r3931
1993-03-30 21:50:50 +00:00
Richard Kenner
dbc131f3cc (record_dead_and_set_regs): Record death of all hard regs when a multi-reg object in hard regs dies.
(record_dead_and_set_regs): Record death of all hard regs when a multi-reg
object in hard regs dies.
(move_deaths): Handle the case when we only have to move part of a
multi-register death note.

From-SVN: r3930
1993-03-30 15:37:29 -05:00
Richard Kenner
99309f3bcb (find_regno_note): Find note that overlaps REGNO, not just one that
mentions REGNO explicitly.

From-SVN: r3929
1993-03-30 15:36:43 -05: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
118bdbf8fa (OBJS): Add insn-opinit.o.
(insn-opinit.o, insn-opinit.c, stamp-opinit): New rules.
(genopinit, genopinit.o): Likewise.

From-SVN: r3927
1993-03-30 15:31:01 -05:00
Richard Kenner
35be450715 (init_reload): Don't initialize optabs here.
From-SVN: r3926
1993-03-30 15:30:29 -05:00
Richard Kenner
5d81dc5b88 (extendtab, fixtab, fixtrunctab, floattab): Not static.
(init_extends, init_fixtab, init_floattab): Deleted.
(init_optabs): Move active stuff from above functions in.
Delete filling of optabs.
Call init_all_optabs.

From-SVN: r3925
1993-03-30 15:29:35 -05:00
Richard Kenner
27b3f75422 (extendtab, fixtab, fixtrunctab, floattab, movstr_optab): New
definitions.

From-SVN: r3924
1993-03-30 15:28:53 -05:00
Richard Kenner
e6677db3fd (movstr_optab): No longer static.
(init_expr_once): Don't initialize movstr_optab.

From-SVN: r3923
1993-03-30 15:28:12 -05:00
Richard Kenner
af9e4a0cf0 Initial revision
From-SVN: r3922
1993-03-30 15:25:14 -05:00
Richard Kenner
d08ea79fd7 (emit_reload_insns): Properly track what was reloaded into what register when...
(emit_reload_insns): Properly track what was reloaded into what
register when what we reloaded was a hard register group.

From-SVN: r3921
1993-03-30 05:40:07 -05:00
Richard Kenner
9295e6afce (num_sign_bit_copies, case PLUS, case MULT): Replace occurrences of
HOST_BITS_PER_INT with HOST_BITS_PER_WIDE_INT.

From-SVN: r3920
1993-03-29 18:34:54 -05:00
Jim Wilson
6559c3f4f6 (movsi+2): Add f/f constraint case.
From-SVN: r3919
1993-03-29 14:39:25 -08:00
Jim Wilson
563465600f (schedule_block): Reset n_ready if schedule_select
removes all insns from ready list.

From-SVN: r3918
1993-03-29 14:34:25 -08:00
Jim Wilson
1e39f528f7 (FUNCTION_PROFILER): Call output_function_profiler.
(CALL_USED_REGISTERS): Add more comments about register usage.

From-SVN: r3917
1993-03-29 14:32:52 -08:00
Jim Wilson
7a24dbcfa9 (i960_function_prologue): When profiling, don't use those registers clobbered around an mcount call.
(i960_function_prologue): When profiling, don't use those
registers clobbered around an mcount call.
(output_function_profiler): New function.

From-SVN: r3916
1993-03-29 14:32:08 -08: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
7967c666c2 Add prototypes for all functions defined in file.
Change a few occurrences of RTX_CODE to enum rtx_code for consistency.
(merge_trees): Add casts of args to mybcopy.
(write_tree_1): Now static.
(fatal): Always called with one arg, so define that way.

From-SVN: r3914
1993-03-29 16:16:35 -05:00
Richard Stallman
e4135fa5a2 (collect_iterators): Cast tree code to int for indexing.
From-SVN: r3913
1993-03-29 18:57:45 +00:00
Richard Kenner
96c8223248 Add missing declarations for external functions in reload.c, reload1.c,
and caller-save.c.
(reload_strict_low, reload_needed_for_multiple, reload_needed_for): Deleted.
(reload_opnum): New array.
(enum reload_type): Renamed from reload_when_needed and expanded to include
more reload types.
(reload_n_operands): New variable.

From-SVN: r3912
1993-03-29 06:28:45 -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
Richard Kenner
546b63fb94 Add prototypes for static functions.
(REGISTER_MOVE_COST, MEMORY_MOVE_COST): Include default definitions.
(reload): Count number of registers needed for insn using new reload type
information.
If mode of insn is DImode, don't change it.
Refine the way we handle conflict with the return value register.
Don't try to account for needs already covered by previously spilled
registers; instead, put them back in the front of potential_reload_regs and
let them be allocated again.
(order_regs_for_reload): Don't restrict regs explicitly used if we have
SMALL_REGISTER_CLASSES defined.
(reload_as_needed): Don't need to deactivate optional reloads ever; if they
inherit, it must have been safe.
Call merge_assigned_reloads if SMALL_REGISTER_CLASSES.
(reload_reg_used_*): Refine our tracking of reload reg usage by defining more
of these HARD_REG_SETs.
(mark_reload_reg_in_use, reload_reg_free_p): Rework to use new method of
describing where a reload register is used.
(reload_reg_free_before_p, reload_reg_reaches_end_p): Likewise.
(allocate_reload_reg): Pass new reload descriptions.
(choose_reload_regs): Likewise.
Save and restore the new HARD_REG_SETs.
Remove now-redundant code to prevent conflicts.
(merge_assigned_reloads): New function.
(emit_reload_insns): Output each reload type into its own sequence, then
output the sequences in the proper order.
Put our output reloads after a CLOBBER made by find_reloads.
Pass ALL_REGS to find_equiv_regs; nothing special about GENERAL_REGS.
Don't use an old equivalence if doing so would be more expensive.
Clean up tracking of values still in reload regs using reload description
info to see if the reload reaches the end of the insn.
(gen_input_reload): Pass reload description and emit insns to end of current
sequence.
(inc_for_reload): Return void; no longer need INSN as operand.
Emit insns to end of current sequence.

From-SVN: r3910
1993-03-29 06:24:36 -05:00
Richard Stallman
f81497d905 (expand_expr, case MAX_EXPR/MIN_EXPR): If mode is multiword int,
use do_jump_by_parts_greater_rtx to compare efficiently.
(do_jump_by_parts_greater_rtx): New function.

From-SVN: r3909
1993-03-29 08:23:24 +00:00
Richard Stallman
42f00318ab (store_parm_decls): Use pedwarn for "promoted arg doesn't
match prototype" warning.

From-SVN: r3908
1993-03-29 04:49:21 +00:00
Richard Kenner
5d2ac65e2b (expand_call): Always allocate TARGET in mode of result expression;
VALREG might have been promoted.
Ensure TARGET is a REG when checking for promotion and verify that we
get back the mode we expect.

From-SVN: r3907
1993-03-28 20:26:03 -05:00
Jeff Law
994571561f pa.md (smin, [...]): New patterns.
* pa.md (smin, umin, smax, umax): New patterns.

	* pa.md (cbranch define_delay): Enable nullification of
	conditional branch delay slots (based upon branch direction).
	(conditional branch patterns): Call output_cbranch to get the
	correct output template.  Long conditional branches with an
	annulled delay slot have a length of 3.
	(branch on bit patterns): Call output_bb to get the correct
	output template.  Long branches with an annulled delay slot have
	a length of 3.
	(decrement and branch pattern): Handle nullification of long

From-SVN: r3906
1993-03-28 16:56:26 -07:00
Richard Stallman
f2878c6b32 (expand_expr): For COMPONENT_REF, don't force_reg op0 if it is BLKmode.
From-SVN: r3905
1993-03-28 23:55:45 +00:00