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:
parent
f4655693b5
commit
05b432db5b
@ -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.
|
||||
|
@ -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))
|
||||
|
@ -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;
|
||||
|
21
gcc/toplev.c
21
gcc/toplev.c
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user