Commit 05b432db by Jan Hubicka Committed by Jan Hubicka

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
parent f4655693
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> 2001-06-26 Gabriel Dos Reis <gdr@codesourcery.com>
* diagnostic.h (diagnostic_prefixing_rule_t): New enum type. * diagnostic.h (diagnostic_prefixing_rule_t): New enum type.
......
...@@ -4410,7 +4410,8 @@ ...@@ -4410,7 +4410,8 @@
(float_truncate:SF (float_truncate:SF
(match_operand:DF 1 "nonimmediate_operand" ""))) (match_operand:DF 1 "nonimmediate_operand" "")))
(clobber (match_operand 2 "" ""))] (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)))] [(set (match_dup 0) (float_truncate:SF (match_dup 1)))]
"") "")
...@@ -8310,7 +8311,7 @@ ...@@ -8310,7 +8311,7 @@
(set_attr "mode" "SI")]) (set_attr "mode" "SI")])
(define_split (define_split
[(set (match_operand 0 "ext_register_operand" "") [(set (match_operand 0 "register_operand" "")
(and (match_dup 0) (and (match_dup 0)
(const_int -65536))) (const_int -65536)))
(clobber (reg:CC 17))] (clobber (reg:CC 17))]
...@@ -8323,7 +8324,7 @@ ...@@ -8323,7 +8324,7 @@
(and (match_dup 0) (and (match_dup 0)
(const_int -256))) (const_int -256)))
(clobber (reg:CC 17))] (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))] [(set (strict_low_part (match_dup 1)) (const_int 0))]
"operands[1] = gen_lowpart (QImode, operands[0]);") "operands[1] = gen_lowpart (QImode, operands[0]);")
...@@ -8332,7 +8333,7 @@ ...@@ -8332,7 +8333,7 @@
(and (match_dup 0) (and (match_dup 0)
(const_int -65281))) (const_int -65281)))
(clobber (reg:CC 17))] (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) [(parallel [(set (zero_extract:SI (match_dup 0)
(const_int 8) (const_int 8)
(const_int 8)) (const_int 8))
......
...@@ -1906,8 +1906,6 @@ sched_init (dump_file) ...@@ -1906,8 +1906,6 @@ sched_init (dump_file)
/* Initialize issue_rate. */ /* Initialize issue_rate. */
issue_rate = ISSUE_RATE; issue_rate = ISSUE_RATE;
split_all_insns (1);
/* We use LUID 0 for the fake insn (UID 0) which holds dependencies for /* We use LUID 0 for the fake insn (UID 0) which holds dependencies for
pseudos which do not cross calls. */ pseudos which do not cross calls. */
old_max_uid = get_max_uid () + 1; old_max_uid = get_max_uid () + 1;
......
...@@ -3410,13 +3410,16 @@ rest_of_compilation (decl) ...@@ -3410,13 +3410,16 @@ rest_of_compilation (decl)
timevar_pop (TV_GCSE); timevar_pop (TV_GCSE);
#endif #endif
timevar_push (TV_SCHED);
split_all_insns (1);
#ifdef INSN_SCHEDULING #ifdef INSN_SCHEDULING
/* Print function header into sched dump now /* Print function header into sched dump now
because doing the sched analysis makes some of the dump. */ because doing the sched analysis makes some of the dump. */
if (optimize > 0 && flag_schedule_insns) if (optimize > 0 && flag_schedule_insns)
{ {
timevar_push (TV_SCHED);
open_dump_file (DFI_sched, decl); open_dump_file (DFI_sched, decl);
/* Do control and data sched analysis, /* Do control and data sched analysis,
...@@ -3425,15 +3428,15 @@ rest_of_compilation (decl) ...@@ -3425,15 +3428,15 @@ rest_of_compilation (decl)
schedule_insns (rtl_dump_file); schedule_insns (rtl_dump_file);
close_dump_file (DFI_sched, print_rtl_with_bb, insns); 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 /* Register lifetime information was updated as part of verifying
the schedule. */ the schedule. */
register_life_up_to_date = 1; register_life_up_to_date = 1;
} }
#endif #endif
timevar_pop (TV_SCHED);
ggc_collect ();
/* Determine if the current function is a leaf before running reload /* Determine if the current function is a leaf before running reload
since this can impact optimizations done by the prologue and since this can impact optimizations done by the prologue and
...@@ -3510,14 +3513,8 @@ rest_of_compilation (decl) ...@@ -3510,14 +3513,8 @@ rest_of_compilation (decl)
} }
/* If optimizing, then go ahead and split insns now since we are about /* 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 to recompute flow information anyway. */
reload, do the splitting unconditionally here to avoid gcc from losing
REG_DEAD notes. */
#ifdef STACK_REGS
if (1)
#else
if (optimize > 0) if (optimize > 0)
#endif
{ {
int old_labelnum = max_label_num (); int old_labelnum = max_label_num ();
...@@ -3619,6 +3616,8 @@ rest_of_compilation (decl) ...@@ -3619,6 +3616,8 @@ rest_of_compilation (decl)
/* Do control and data sched analysis again, /* Do control and data sched analysis again,
and write some more of the results to dump file. */ and write some more of the results to dump file. */
split_all_insns (1);
schedule_insns (rtl_dump_file); schedule_insns (rtl_dump_file);
close_dump_file (DFI_sched2, print_rtl_with_bb, insns); close_dump_file (DFI_sched2, print_rtl_with_bb, insns);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment