Commit Graph

67 Commits

Author SHA1 Message Date
Richard Kenner
e9fa0c7c6f Update FSF address.
From-SVN: r9966
1995-06-15 08:29:51 -04:00
Richard Kenner
025cc92388 (attach_deaths): In last change, use find_reg_note instead of
find_regno_note.

From-SVN: r9883
1995-06-05 19:23:02 -04:00
Richard Kenner
7b57d1d317 (attach_deaths): Don't add a REG_DEAD note if a REG_UNUSED note is
already present.

From-SVN: r9871
1995-06-03 22:08:38 -04:00
Jim Wilson
6382ae03d8 (reemit_notes): New function.
(schedule_block): Call reemit_notes twice.  Reorganize code for
handling SCHED_GROUP_P insns, so that reemit_notes works.

From-SVN: r9814
1995-05-24 18:41:18 -07:00
Richard Kenner
9faa82d8c0 Fix typos in comments.
From-SVN: r9712
1995-05-16 08:39:54 -04:00
Richard Kenner
3826a3da7f Update comments.
From-SVN: r8811
1995-01-25 14:40:53 -05:00
Jim Wilson
4480e13f5e (sched_analyze_insn): Parameter loop_note type changed to rtx, and name changed to loop_notes.
(sched_analyze_insn): Parameter loop_note type changed
to rtx, and name changed to loop_notes.  Code adding it to
REG_NOTES modified to account for type change.
(sched_analyze): Variable loop_note type changed to rtx, and name
changed to loop_notes.  Store LOOP_* REG_DEAD notes in it instead
of LOOP_* NOTE_LINE_NUMBER.
(schedule_block): Pass last not insn to emit_note_before call.

From-SVN: r8099
1994-09-20 12:57:18 -07:00
Richard Kenner
d90aadbb6d (sched_analyze_insn): Don't set SCHED_GROUP_P for previous INSN a USE
unless it's a USE of a REG.

From-SVN: r8083
1994-09-15 05:29:45 -04:00
Jim Wilson
babfe4370e (attach_deaths): Correct typo, use GET_MODE not GET_CODE.
From-SVN: r8043
1994-09-08 11:40:15 -07:00
Jim Wilson
208dc1d8f1 sched.c (sched_analyze_insn): Add new parameter loop_note.
* sched.c (sched_analyze_insn): Add new parameter loop_note.
If loop_note set, then serialize on this insn.
(sched_analyze): New variable loop_note.  Pass to
sched_analyze_insn.  Set it if we pass a NOTE_INSN_LOOP_BEG or
NOTE_INSN_LOOP_END.
(unlink_notes): Don't save away NOTE_INSN_LOOP_BEG or
NOTE_INSN_LOOP_END notes.
(schedule_block): Generalize code that looks for magic REG_DEAD
notes and converts them to notes.

From-SVN: r7956
1994-08-20 10:31:16 -07:00
Jim Wilson
96cbe26ae9 (attach_deaths): When adding REG_DEAD notes...
(attach_deaths): When adding REG_DEAD notes, check for
the case where a multiple register hard reg overlaps a register
set by the insn.

From-SVN: r7919
1994-08-14 15:59:58 -07:00
Richard Kenner
4c9a05bc55 Cast pointer operands to bzero, bcopy, and bcmp to (char *).
From-SVN: r7472
1994-06-14 18:19:28 -04:00
Richard Kenner
1af0b2da29 (sched_analyze_insn): Fix typo in last change.
From-SVN: r7272
1994-05-11 16:18:08 -04:00
Richard Kenner
b288f2b339 (sched_analyze_insn, attach_deaths_insn): Look at
CALL_INSN_FUNCTION_USAGE.

From-SVN: r7263
1994-05-07 12:16:15 -04:00
Doug Evans
dcfb710401 (attach_deaths): Create partial register dead notes using
register's intrinsic mode.

From-SVN: r7090
1994-04-20 03:40:01 +00:00
Richard Kenner
e02f385ab5 (clear_units): Remove decl of unused variable UNIT.
(actual_hazard_this_instance): Remove decl of unused variable I.
(actual_hazard): Remove two block-scope decls of unused variable BEST.
(sched_analyze_1): Remove decls of unused variables OFFSET and BIT.
(sched_analyze): Remove decl of unused variable DEST.
(sched_note_set): Remove decl of unused variable J.
(create_reg_dead_note): Remove decl of unused variable BACKLINK.
(new_sometimes_live): Remove decl of unused variable I.
(schedule_block): Remove decls of unused variables LAST_NOTE and REGNO.
(schedule_insns): Remove decls of unused variables I and INSNS.

From-SVN: r6893
1994-03-25 14:18:28 -05:00
Richard Kenner
7a3b13d103 (rtx_equal_for_tmemref_p): Commutative operations are identical if the
operands match in the opposite order.

From-SVN: r6732
1994-03-09 15:31:49 -05:00
Jim Wilson
438be795a5 (reg_pending_sets, reg_pending_sets_all): New variables.
(sched_analyze_1): Set reg_pending_sets instead of reg_last_sets.
(sched_analyze_2): Set reg_pending_sets or reg_pending_sets_all
instead of reg_last_sets.
(sched_analyze_insn): Use reg_pending_sets and
reg_pending_sets_all to set reg_last_sets.  Set
reg_pending_sets_all instead of reg_last_sets.
(schedule_block): Allocate and clear reg_pending_sets.

From-SVN: r6492
1994-02-06 13:26:28 -08:00
Jim Wilson
03217a8b98 (sched_analyze_insn): Add use dependencies for registers
mentioned in REG_DEAD notes.

From-SVN: r6453
1994-01-31 16:23:18 -08:00
Jim Wilson
7ecd5f1a30 (priority): Call insn_cost() for anti- and output-
dependencies as well as for true dependencies.

From-SVN: r6450
1994-01-31 16:13:06 -08:00
Jim Wilson
5124001030 (attach_deaths_insn): Add REG_DEAD notes to CLOBBER if
it is for a MEM.

From-SVN: r6432
1994-01-26 10:56:51 -08:00
Jim Wilson
a18730e12a (new_insn_dead_notes): Compare registers with rtx_equal_p.
From-SVN: r6366
1994-01-10 14:30:44 -08:00
Jim Wilson
489e2090a4 (priority): Handle INSN_DELETED_P insns, in addition to
insns which were deleted by being turned into notes.

From-SVN: r6272
1993-12-22 11:41:47 -08:00
Jim Wilson
38d4236812 (sched_analyze): For CALL_INSN followed by NOTE_INSN_SETJMP note...
(sched_analyze): For CALL_INSN followed by
NOTE_INSN_SETJMP note, make it depend on all registers not just
hard registers, and add a REG_DEAD -1 note.
(unlink_notes): Don't save away NOTE_INSN_SETJMP notes.
(schedule_block): After scheduling CALL_INSN, check for REG_DEAD
-1 note.  If find it, delete it, and output a NOTE_INSN_SETJMP note.

From-SVN: r6254
1993-12-21 10:58:10 -08:00
Jim Wilson
df5f5124d5 (sched_analyze_2): Make volatile asms depend on all
pseudo registers.

From-SVN: r5621
1993-10-05 16:22:04 -07:00
Jim Wilson
85cc7011a5 Add prototypes for static function.
(add_dependence, remove_dependence, regno_use_in): Now static.
(schedule_insns): Have dummy version also take FILE * parameter.

From-SVN: r5530
1993-09-29 12:04:41 -07:00
Jim Wilson
b5e9625567 (schedule_insns): Don't zero reg_n_calls_crossed for
pseudos live across multiple blocks.

From-SVN: r5515
1993-09-28 15:57:44 -07:00
Doug Evans
cd0ca9ad6d sched.c: (memrefs_conflict_p): We can work out whether references via...
* sched.c: (memrefs_conflict_p): We can work out whether references
via hard_frame_pointer_rtx are likely to conflict.
(attach_deaths, case REG): Don't add death notes for
HARD_FRAME_POINTER_REGNUM.

From-SVN: r5466
1993-09-24 19:54:46 +00:00
Richard Kenner
9e1835de3e (schedule_block): Correct type of BIT.
From-SVN: r5275
1993-09-07 14:40:27 -04:00
Jim Wilson
46aea93218 (sched_analyze_insn): Handle USE before a JUMP_INSN just
like a USE before a CALL_INSN.

From-SVN: r5141
1993-08-12 10:45:15 -07:00
Jim Wilson
211b330fd8 (schedule_insns): Don't emit a NOTE at the end of the last basic block if...
(schedule_insns): Don't emit a NOTE at the end of the last
basic block if that would put it between a JUMP_INSN and a BARRIER.

From-SVN: r5121
1993-08-09 12:37:23 -07:00
Jim Wilson
07f64b95a4 (schedule_block): Do not emit line number notes before other notes.
From-SVN: r5020
1993-07-28 10:40:30 -07:00
Jim Wilson
09d6547996 (add_dependence): Reject CODE_LABELs when searching for
last insn of a sched group.

From-SVN: r4667
1993-06-12 10:43:42 -07:00
Jim Wilson
35c7a24d64 (sched_analyze_2): Don't ignore USE insns when creating dependencies.
(sched_analyze): Likewise.

From-SVN: r4656
1993-06-10 09:55:59 -07:00
Jim Wilson
f52152d6ac (split_hard_reg_notes): Handle 0th sub register, and multiple register kills.
(split_hard_reg_notes): Handle 0th sub register, and
multiple register kills.
(update_flow_info): For multi-word hard regs, use
split_hard_reg_notes to add all REG_DEAD notes, instead of just
the additional ones due to splitting.

From-SVN: r4460
1993-05-14 14:16:34 -07:00
Jim Wilson
56b7c17e49 (create_reg_dead_note): Rewrite so as to conserve registers killed not number of REG_DEAD notes.
(create_reg_dead_note): Rewrite so as to conserve
registers killed not number of REG_DEAD notes.
(schedule_block): Change comments about dead_notes variable.

From-SVN: r4222
1993-04-25 14:24:15 -07:00
Richard Kenner
dc847d14bc (sched_analyze_1): Extra arg in anti_dependence call.
From-SVN: r4143
1993-04-13 17:21:21 -04: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
c3af9fc81e (reg_known_equiv_p): New variable.
(init_alias_analysis): Allocate and compute reg_known_equiv_p.
(sched_analyze_1): Reenable code for REG_EQUIV notes, using
reg_known_equiv_p so that it is only used on REG_EQUIV notes.
(sched_analyze_2): Likewise.  Only pass memory addresses to the
sched_analyze_2 call.

From-SVN: r3746
1993-03-15 11:48:38 -08:00
Jim Wilson
8b69d15430 (adjust_priority): Comment unreachable code.
(memrefs_conflict_p): Add comment about Fortran aliasing.

From-SVN: r3740
1993-03-15 11:33:21 -08:00
Jim Wilson
0b298be417 (true_dependence, anti_dependence, output_dependence):
Assume that MEM_IN_STRUCT_P QImode varying addresses can overlap a
non-MEM_IN_STRUCT_P fixed address.

From-SVN: r3426
1993-02-05 15:33:36 -08:00
Jim Wilson
edaf97c444 (sched_analyze_1...
(sched_analyze_1, sched_analyze_2): Ifdef out code added
for handling psuedo register equivalents that was added Dec 31 1992.

From-SVN: r3290
1993-01-19 17:13:48 -08:00
Jim Wilson
e6b89e8bf2 (sched_analyze_1, sched_analyze_2): If before reloading,
record dependences that may be introduced by reload substituting
equivalents for pseudo registers.

From-SVN: r3036
1992-12-31 14:44:22 -08:00
Jim Wilson
b7d9fc385d (sched_analyze_2): Use REG_NOTE_KIND not GET_MODE in add_dependence call.
(sched_analyze_insn): Likewise.

From-SVN: r3035
1992-12-31 14:42:35 -08:00
Jim Wilson
22162da3d7 (sched_note_set): Set subreg_p for anything except a paradoxical subreg.
From-SVN: r2464
1992-10-14 15:57:42 -07:00
Jim Wilson
bc78eb101e (sched_analyze_2, PRE_DEC case): Call sched_analyze_2 in
addition to sched_analyze_1.

From-SVN: r2240
1992-09-24 22:44:06 -07:00
Jim Wilson
11222b61f1 (sched_analyze_2): Remove an explicit dependence between an insn that uses CC0 and the immediately previous insn.
(sched_analyze_2): Remove an explicit dependence between an insn
that uses CC0 and the immediately previous insn.
(SCHED_GROUP_P represents the dependence.)
(schedule_block): Only check sets_cc0_p on an insn.

From-SVN: r2010
1992-08-31 18:26:25 -07: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
Richard Stallman
e939539ba6 (INSN_QUEUE_SIZE): Add default definition.
From-SVN: r1954
1992-08-25 21:36:10 +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