i386.md (float_truncate splitter, [...]): Add reload_completted; fix operand predicate.

* i386.md (float_truncate splitter, and to mov splitters): Add
	reload_completted; fix operand predicate.

	* haifa-sched.c (sched_init): Do not split insns.
	* toplev.c (rest_of_compilation): Call split_all_insns before
	sched1 pass; simplify condition of post-reload splitter;
	call split_all_insn before sched2 pass.

From-SVN: r43575
This commit is contained in:
Jan Hubicka 2001-06-26 12:47:33 +02:00 committed by Jan Hubicka
parent f4655693b5
commit 05b432db5b
4 changed files with 25 additions and 17 deletions

View File

@ -1,3 +1,13 @@
Tue Jun 26 12:40:12 CEST 2001 Jan Hubicka <jh@suse.cz>
* i386.md (float_truncate splitter, and to mov splitters): Add
reload_completed; fix operand predicate.
* haifa-sched.c (sched_init): Do not split insns.
* toplev.c (rest_of_compilation): Call split_all_insns before
sched1 pass; simplify condition of post-reload splitter;
call split_all_insn before sched2 pass.
2001-06-26 Gabriel Dos Reis <gdr@codesourcery.com>
* diagnostic.h (diagnostic_prefixing_rule_t): New enum type.

View File

@ -4410,7 +4410,8 @@
(float_truncate:SF
(match_operand:DF 1 "nonimmediate_operand" "")))
(clobber (match_operand 2 "" ""))]
"TARGET_80387 && !FP_REG_P (operands[0]) && !FP_REG_P (operands[1])"
"TARGET_80387 && reload_completed
&& !FP_REG_P (operands[0]) && !FP_REG_P (operands[1])"
[(set (match_dup 0) (float_truncate:SF (match_dup 1)))]
"")
@ -8310,7 +8311,7 @@
(set_attr "mode" "SI")])
(define_split
[(set (match_operand 0 "ext_register_operand" "")
[(set (match_operand 0 "register_operand" "")
(and (match_dup 0)
(const_int -65536)))
(clobber (reg:CC 17))]
@ -8323,7 +8324,7 @@
(and (match_dup 0)
(const_int -256)))
(clobber (reg:CC 17))]
"(optimize_size || !TARGET_PARTIAL_REG_STALL)"
"(optimize_size || !TARGET_PARTIAL_REG_STALL) && reload_completed"
[(set (strict_low_part (match_dup 1)) (const_int 0))]
"operands[1] = gen_lowpart (QImode, operands[0]);")
@ -8332,7 +8333,7 @@
(and (match_dup 0)
(const_int -65281)))
(clobber (reg:CC 17))]
"(optimize_size || !TARGET_PARTIAL_REG_STALL)"
"(optimize_size || !TARGET_PARTIAL_REG_STALL) && reload_completed"
[(parallel [(set (zero_extract:SI (match_dup 0)
(const_int 8)
(const_int 8))

View File

@ -1906,8 +1906,6 @@ sched_init (dump_file)
/* Initialize issue_rate. */
issue_rate = ISSUE_RATE;
split_all_insns (1);
/* We use LUID 0 for the fake insn (UID 0) which holds dependencies for
pseudos which do not cross calls. */
old_max_uid = get_max_uid () + 1;

View File

@ -3410,13 +3410,16 @@ rest_of_compilation (decl)
timevar_pop (TV_GCSE);
#endif
timevar_push (TV_SCHED);
split_all_insns (1);
#ifdef INSN_SCHEDULING
/* Print function header into sched dump now
because doing the sched analysis makes some of the dump. */
if (optimize > 0 && flag_schedule_insns)
{
timevar_push (TV_SCHED);
open_dump_file (DFI_sched, decl);
/* Do control and data sched analysis,
@ -3425,15 +3428,15 @@ rest_of_compilation (decl)
schedule_insns (rtl_dump_file);
close_dump_file (DFI_sched, print_rtl_with_bb, insns);
timevar_pop (TV_SCHED);
ggc_collect ();
/* Register lifetime information was updated as part of verifying
the schedule. */
register_life_up_to_date = 1;
}
#endif
timevar_pop (TV_SCHED);
ggc_collect ();
/* Determine if the current function is a leaf before running reload
since this can impact optimizations done by the prologue and
@ -3510,14 +3513,8 @@ rest_of_compilation (decl)
}
/* If optimizing, then go ahead and split insns now since we are about
to recompute flow information anyway. Since we can't split insns after
reload, do the splitting unconditionally here to avoid gcc from losing
REG_DEAD notes. */
#ifdef STACK_REGS
if (1)
#else
to recompute flow information anyway. */
if (optimize > 0)
#endif
{
int old_labelnum = max_label_num ();
@ -3619,6 +3616,8 @@ rest_of_compilation (decl)
/* Do control and data sched analysis again,
and write some more of the results to dump file. */
split_all_insns (1);
schedule_insns (rtl_dump_file);
close_dump_file (DFI_sched2, print_rtl_with_bb, insns);