Commit Graph

2030 Commits

Author SHA1 Message Date
James Van Artsdalen
435defd182 (all gen_rtx (CONST_INT) references): Use GEN_INT to generate const_int rtx.
(legitimize_pic_address): Pass NULL_RTX instead of "0" as pointer.

From-SVN: r1981
1992-08-28 01:36:16 +00:00
James Van Artsdalen
0e7d0eb9de (record_note_if_dead): Delete function.
(record_reg_life_pat): Rewrite to handle any sort of pattern.
(record_reg_life): Change interface to record_reg_life_pat.
(stack_reg_life_analysis): Don't assume that MODE_FLOAT values are
always returned in a float reg.
(subst_stack_regs_pat): Add support for sin and cos insns.

From-SVN: r1980
1992-08-28 01:24:42 +00:00
James Van Artsdalen
a1ee10a4f4 (BUILT_IN_SIN,BUILT_IN_COS): New builtin codes.
From-SVN: r1979
1992-08-28 01:24:04 +00:00
James Van Artsdalen
28cf078dd2 (sin_optab,cos_optab): Define optabs for sin and cos.
(init_optabs): Initialize them.

From-SVN: r1978
1992-08-28 01:22:53 +00:00
James Van Artsdalen
d70326a5e8 (sin_optab,cos_optab): Declare optabs for sin and cos.
From-SVN: r1977
1992-08-28 01:22:01 +00:00
James Van Artsdalen
96a1b3afd4 (init_decl_processing): Add sin and cos as built-in functions.
From-SVN: r1976
1992-08-28 01:20:34 +00:00
Richard Stallman
1ba1e2a808 (emit_block_move): When trying movstrMM, cvt size to mode MM.
From-SVN: r1975
1992-08-27 22:54:40 +00:00
Michael Meissner
0e9414fd5c Allocate enough space for attr_printf; Use obstack_alloc instead of xmalloc.
From-SVN: r1974
1992-08-27 20:56:29 +00:00
Richard Stallman
8696da340c (readescape): For \x, don't include leading 0's in count.
From-SVN: r1973
1992-08-27 05:55:33 +00:00
Richard Stallman
e64bddee63 (check_format): DEL isn't printable.
From-SVN: r1972
1992-08-27 05:48:11 +00:00
Richard Stallman
7e6b19dcb1 (readescape): DEL isn't printable.
From-SVN: r1971
1992-08-27 05:45:47 +00:00
Richard Stallman
5fe5c2100b (init_decl_processing): Fix type of __builtin_constant_p.
From-SVN: r1970
1992-08-27 03:26:06 +00:00
Tom Wood
464b453d44 Enhance to fill the last delay slot of a call with an unconditional jump.
Enhance to fill the last delay slot of a call with an
	unconditional jump.
	(fill_simple_delay_slots): Look for the case of a call/branch
	first.  If this applies, record the jump as `last_delay_insn'.
	Later, don't look for additional delay insns if the last one has
	alreay been filled.
	(mark_target_live_regs): A sequence may end in an unconditional
	branch.

From-SVN: r1969
1992-08-26 22:19:37 +00:00
Michael Meissner
4d032a67aa Pass -shared/-non_shared to MIPS 3.0 linker if passed.
From-SVN: r1968
1992-08-26 21:21:55 +00:00
Richard Stallman
b842c19aff (current_block): Declared.
From-SVN: r1967
1992-08-26 21:05:32 +00:00
Tom Wood
9b1e668ec6 (define_function_unit): Correct and simplify memory unit
specification.

From-SVN: r1966
1992-08-26 20:54:09 +00:00
Richard Stallman
53d2fb4f5f (fold): Do A op C1 ? A : C2 opt only for INTEGER_TYPEs.
From-SVN: r1965
1992-08-26 19:45:07 +00: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
Richard Stallman
52d2830e77 Fix comment.
From-SVN: r1963
1992-08-26 18:56:07 +00:00
Jim Wilson
c0ac5f3197 Add #ifdef INSN_SCHEDULING around variables only used by schedule_insns.
Add #ifdef INSN_SCHEDULING around variables only used
by schedule_insns.
(INSN_QUEUE_SIZE): Delete default definition.

From-SVN: r1962
1992-08-25 23:49:54 -07:00
Jim Wilson
d562e42ef4 Partially undo Mar 7 change.
Partially undo Mar 7 change.  Only call
emit_library_call with no_queue == 1 for const functions.

From-SVN: r1961
1992-08-25 23:30:34 -07:00
Richard Stallman
2df53c0b9b (expand_expr): For BIND_EXPR, call insert_block on the block.
From-SVN: r1960
1992-08-26 06:05:46 +00:00
Richard Stallman
1b81aa1493 (fold): Avoid the normal STRIP_NOPS on arg of NOP_EXPR.
From-SVN: r1959
1992-08-26 06:04:35 +00:00
Richard Stallman
3bf40d1882 (poplevel): Store into BLOCK iff it is non-null.
(current_block): New function.
(struct binding_level): New field this_block.
(poplevel): Use this_block if nonzero, rather than making new BLOCK.
(insert_block, delete_block): New functions.

From-SVN: r1958
1992-08-26 06:03:24 +00:00
Jim Wilson
ec08cf0a39 (float*, fix*): Rewrite to match hardware...
(float*, fix*): Rewrite to match hardware; take/put
integer input/output from/to fp register instead of memory or
general register.  Delete 6 now obsolete combiner patterns.

From-SVN: r1957
1992-08-25 20:24:03 -07:00
Jim Wilson
5655f8855e (output_floatsisf2, output_floatsidf2, output_floatsitf2): Delete declarations.
From-SVN: r1956
1992-08-25 20:23:24 -07:00
Jim Wilson
e7952d8fa5 (SF_MODES): Allow SImode in fp registers.
(output_floatsisf2, output_floatsidf2, output_floatsitf2): Delete.

From-SVN: r1955
1992-08-25 20:22:37 -07:00
Richard Stallman
e939539ba6 (INSN_QUEUE_SIZE): Add default definition.
From-SVN: r1954
1992-08-25 21:36:10 +00:00
Richard Stallman
789d0ee515 (do_pragma): Warn if `#pragma implementation "foo.h"' is
invoked	after "foo.h" has been included.

From-SVN: r1953
1992-08-25 21:25:20 +00:00
Tom Wood
bee757e1c0 (struct attr_desc): Add unsigned_p field.
(struct function_unit_op): Add issue_delay, conflict_exp, and
	issue_exp fields.  Drop busyexp field.
	(struct function_unit): Add needs_blockage_function,
	needs_range_function, issue_delay, and max_blockage fields.  Drop
	costexp, and busy delay fields.
	(enum operator): Add POS_MINUS_OP, EQ_OP, MIN_OP, RANGE_OP.
	(operate_exp): Implement new ops.
	(make_internal_attr): Set unsigned_p based on the value of SPECIAL.
	(write_attr_get): Function is unsigned when unsigned_p is true.
	(write_attr_valueq): Write hex value of large constants in a comment.
	(simplify_by_exploding): Check for EXP having no EQ_ATTR expressions
	and for all values as the default.
	(find_and_mark_used_attributes): Add TERMS and NTERMS parameters.
	(max_attr_value): Allow IF_THEN_ELSE.
	(simplify_knowing, write_complex_function, extend_range): New
	functions.
	(gen_unit): Use local variables to name the fields.  Change the
	meaning of busy-delay to issue-delay.
	(expand_units): Compute issue_exp.  Write attributes for computing
	`<name>_unit_blockage' and `<name>_unit_blockage_range' functions.
	Compute max_blockage, and the needs_*_function values.
	(write_function_unit_info): Write blockage function and conflict cost
	functions using write_complex_function.  Write new function_unit_desc
	fields.
(expand_units): Use the normalized values of the
	unit's CONDEXP and BUSYEXP.

From-SVN: r1952
1992-08-25 20:26:02 +00:00
Tom Wood
de19227a25 (schedule_block): Add a virtual cycle counter CLOCK.
Pass CLOCK to schedule_insn.
	Compute the tail in the scheduling loop, not before it.
	Enable the stall code that advances the insn queue.
	Select the insn to schedule and block others with schedule_select.
	(adjust_priority): Renamed from launch_link.
	(schedule_insn): Renamed from launch_links.
(insn_queue): Use INSN_QUEUE_SIZE.

(insn_units, insn_blockage, insn_tick, unit_last_insn,
	unit_tick, unit_n_insns): New variables.
	(schedule_insns): Allocate and initialize insn_tick, insn_units, and
	insn_blockage.
	(insn_unit, blockage_range, clear_units, prepare_unit, schedule_unit,
	actual_hazard_this_instance, actual_hazard, potential_hazard,
	schedule_select): New functions.
	(schedule_block): Add dependencies to force insns to remain in order
	at the end of a block rather than relying on having the scheduler
	issue them in priority order.
(insn_cost): Add LINK and USED parameters.  All callers
	changed.  Supply an ADJUST_COST interface.
	(insn_cost): Make a dependence from a USE insn free.
	(priority): Clear the link cost adjustment bits.

From-SVN: r1951
1992-08-25 20:23:21 +00:00
Tom Wood
ef3fad0483 (extend_range, init_range): New functions.
(write_units): Add blockage_function, blockage_range_function,
	max_blockage and max_issue_delay fields to struct function_unit_desc.
	Drop max_busy_cost field.  Write #defines for min/max blockage,
	issue delay, multiplicity, and simultaneity and for BLOCKAGE_BITS
	and INSN_QUEUE_SIZE.
	(main): Compute the new values.

From-SVN: r1950
1992-08-25 20:22:38 +00:00
Tom Wood
c376c05b38 (LINK_COST_ZERO, LINK_COST_FREE): New macros.
From-SVN: r1949
1992-08-25 20:21:53 +00:00
Tom Wood
84ef5060e2 (type attribute, movdi movdf insns): Add loadd.
(unit attribute): Delete.
	(function units): Correct simultaneity values.  Break out
	independent units.  Add conflict matrix for the 88100 load double.

From-SVN: r1948
1992-08-25 20:21:20 +00:00
Tom Wood
af93f7bf68 (define_function_unit): Change meaning to ISSUE-DELAY.
Merge FP_MUL, FP_DIV, and FP_SQRT into one function unit.

From-SVN: r1947
1992-08-25 20:20:57 +00:00
Tom Wood
c8e18a2bc7 (define_function_unit): Change meaning to ISSUE-DELAY.
From-SVN: r1946
1992-08-25 20:19:49 +00:00
Tom Wood
f6601f3af4 entered into RCS
From-SVN: r1945
1992-08-25 20:13:49 +00:00
Tom Wood
77472c5a50 (delete_computation): Derived from delete_jump.
(delete_jump): Use delete_computation.

From-SVN: r1944
1992-08-25 19:20:27 +00:00
Richard Stallman
cdd8c058e9 (final_scan_insn): If 2 consec line notes have same line num, can omit one.
From-SVN: r1943
1992-08-25 17:43:28 +00:00
Michael Meissner
4401b31c0e Add %U to give last %u name.
From-SVN: r1942
1992-08-25 17:40:04 +00:00
Michael Meissner
ab78d4a881 Change MIPS fp to be at top of stack, instead of bottom; Fix calling mips-tfile with wrong .o file
From-SVN: r1941
1992-08-25 17:39:37 +00:00
Richard Stallman
8436fe3532 (process_command): Don't set verbose_flag if they make a
typo (e.g., `-v-E'); only when it's exactly "-v".

From-SVN: r1940
1992-08-25 03:07:57 +00:00
Richard Stallman
7d2d49af12 (build_unary_op): For ADDR_EXPR, just set TREE_CONSTANT
if staticp, but don't clear TREE_CONSTANT.

From-SVN: r1939
1992-08-24 22:13:54 +00:00
Richard Kenner
5874448344 (subst): When moving operation inside IF_THEN_ELSE, make a new rtx
instead of using SUBST due to sharing.

(simplify_comparison): Correct test for sign extension when trying to
widen comparison.

From-SVN: r1938
1992-08-24 06:48:59 -04:00
Richard Stallman
c7d2d61d20 (expand_end_bindings): Generation of NOTE_INSN_BLOCK_END
moved down so that it occurs after call to `expand_cleanups'.

From-SVN: r1937
1992-08-24 06:11:02 +00:00
Michael Meissner
7343f784c8 Do not define strcmp=__builtin_strcmp if not -fbuiltin/-fno-builtin
From-SVN: r1936
1992-08-23 20:37:12 +00:00
Richard Stallman
ecbe06a11f (__builtin_new): Cast the result of malloc.
From-SVN: r1935
1992-08-23 07:20:15 +00:00
Richard Stallman
72c8bb7f80 Fix typo in prev change.
From-SVN: r1934
1992-08-23 06:09:33 +00:00
Tom Wood
dfa09e2318 (insn_emit_once): Provide a zero constant for CC modes.
From-SVN: r1933
1992-08-22 10:44:25 +00:00
Richard Kenner
5a5064dcb3 (expand_binop): If, e.g., mulqi3 doesn't exist, try mulqihi3.
From-SVN: r1932
1992-08-21 19:21:30 -04:00