Commit Graph

1999 Commits

Author SHA1 Message Date
James Van Artsdalen
bbda1b9c4a (TARGET_DEFAULT,VALUE_REGNO,FUNCTION_VALUE_REGNO): Moved from unix target files (aix386.h...
(TARGET_DEFAULT,VALUE_REGNO,FUNCTION_VALUE_REGNO): Moved from unix target
files (aix386.h, i386gas.h, i386sun.h, i386v.h, i386v4.h, i386vgas.h,
seq386.h).
(TARGET_DEFAULT): Make TARGET_IEEE_FP default on.
(VALUE_REGNO): Test for MODE_FLOAT instead of specific modes.
(VALUE_REGNO,FUNCTION_VALUE_REGNO): MODE_FLOAT return reg depends on
TARGET_FLOAT_RETURNS_IN_80387.

From-SVN: r2000
1992-08-31 07:04:09 +00:00
James Van Artsdalen
582329cb76 (TARGET_DEFAULT,VALUE_REGNO,FUNCTION_VALUE_REGNO): Move to unx386.h.
From-SVN: r1999
1992-08-31 07:03:32 +00:00
James Van Artsdalen
a91ae5fb58 (do_pragma): In prev. change, really use U_CHAR *, not char *.
From-SVN: r1998
1992-08-31 00:24:10 +00:00
Richard Stallman
ed9eaf9bb8 (create_builtin_decl): Set TREE_STATIC.
Don't set DECL_EXTERNAL or TREE_PUBLIC.

From-SVN: r1997
1992-08-30 21:05:48 +00:00
Richard Kenner
d98c1e3389 (RTL_HASH, attr_rtx): Avoid warnings by casting pointers to
HOST_WIDE_INT instead of int.

From-SVN: r1996
1992-08-29 22:41:36 -04:00
Richard Kenner
4a96984737 (expand_{binop,unop}): Don't make invalid paradoxical SUBREGs.
From-SVN: r1995
1992-08-29 22:39:51 -04:00
Richard Kenner
803090c427 (emit_library_call): Pass correct number of args to convert_to_mode.
(emit_block_move): Eliminate unnecessary test against HOST_BITS_PER_WIDE_INT.

From-SVN: r1994
1992-08-29 22:38:56 -04:00
James Van Artsdalen
c860870600 (record_reg_life): Mark an unused reg as such, even if it appears in
SET_SRC.

From-SVN: r1993
1992-08-29 07:33:16 +00:00
Richard Stallman
8a6c15383e (do_pragma): Use rindex, not strrchr.
From-SVN: r1992
1992-08-29 03:47:56 +00:00
Richard Stallman
c75ac904f8 (adjust_copied_decl_tree): New function.
(save_for_inline_copying):  When making copies of NOTE_INSN_BLOCK_END
notes, stash a "forwarding" pointer in the original to point to the
copy.  Also, when all BLOCKs & insns for a function have been copied,
call `adjust_copied_decl_tree' to fixup the end_note pointers in the
copied BLOCKs.

From-SVN: r1991
1992-08-29 03:21:11 +00:00
Richard Stallman
7629c93617 (last_block_end_note): New variable.
(remember_end_note):  New function.
(expand_end_bindings): Save NOTE_INSN_BLOCK_END in last_block_end_note.

(struct goto_fixup): New field context.
(fixup_cleanups): Function deleted.
(fixup_gotos): Put the fixup in a block, and put that block
into its proper place.  Use sequences, not reorder_insns.

From-SVN: r1990
1992-08-29 03:20:43 +00:00
Richard Stallman
6a286015a1 (poplevel): Call `remember_end_note' for each newly created BLOCK node.
From-SVN: r1989
1992-08-29 03:19:01 +00:00
Richard Stallman
5b3f0db1f5 (BLOCK_END_NOTE): Macro definition added.
(struct tree_block):  `end_note' field added.

From-SVN: r1988
1992-08-29 03:18:36 +00:00
Richard Stallman
f47ee9f26e (chainon): Check for op2 being the last elt of the chain.
From-SVN: r1987
1992-08-29 03:11:59 +00:00
Richard Stallman
f786509d93 (do_pragma): In prev. change, use U_CHAR *, not char *.
From-SVN: r1986
1992-08-28 17:26:23 +00:00
Tom Wood
5b17704609 (ADJUST_COST): Add definition.
From-SVN: r1985
1992-08-28 13:11:06 +00:00
James Van Artsdalen
664921b428 (movstrsi): Rewrite to handle operands correctly.
From-SVN: r1984
1992-08-28 06:24:41 +00:00
James Van Artsdalen
1bbddf1116 (expand_builtin): Add sin and cos as built-in functions.c
From-SVN: r1983
1992-08-28 01:49:35 +00:00
James Van Artsdalen
a199fdd675 (all patterns): Use GEN_INT instead of gen_rtx to get const_ints.
Avoid double-negative "! NON_*" constructs for clarity.
Pass NULL_PTR as null parameter instead of 0.
(sqrtM2): Patterns are only valid if IEEE FP or -ffast-math.
(sinM2,cosM2): New patterns.
(zero_extract test): New pattern.

From-SVN: r1982
1992-08-28 01:43:02 +00:00
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