integrate.c (copy_insn_list): handle NOTE_INSN_DELETED_LABEL, as if it were CODE_LABEL.
* integrate.c (copy_insn_list): handle NOTE_INSN_DELETED_LABEL, as if it were CODE_LABEL. (copy_rtx_and_substitute): Likewise; behave to NOTE_INSN_DELETED_LABEL identically as to CODE_LABEL. * fold-const (fold): Convert A/B/C to A/(B*C) and A/(B/C) to (A/B)*C * except.c (connect_post_landing_pads): Delete the RESX insns. From-SVN: r44193
This commit is contained in:
parent
08f66b0485
commit
bc8d3f9122
@ -1,3 +1,15 @@
|
||||
Fri Jul 20 13:24:16 CEST 2001 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
* integrate.c (copy_insn_list): handle
|
||||
NOTE_INSN_DELETED_LABEL, as if it were CODE_LABEL.
|
||||
(copy_rtx_and_substitute): Likewise; behave to NOTE_INSN_DELETED_LABEL
|
||||
identically as to CODE_LABEL.
|
||||
|
||||
* fold-const (fold): Convert A/B/C to A/(B*C) and
|
||||
A/(B/C) to (A/B)*C
|
||||
|
||||
* except.c (connect_post_landing_pads): Delete the RESX insns.
|
||||
|
||||
2001-07-20 Aldy Hernandez <aldyh@redhat.com>
|
||||
|
||||
* config/mips/mips.h (ISA_HAS_NMADD_NMSUB): New macro.
|
||||
|
@ -1846,8 +1846,7 @@ connect_post_landing_pads ()
|
||||
seq = get_insns ();
|
||||
end_sequence ();
|
||||
emit_insns_before (seq, region->resume);
|
||||
|
||||
/* Leave the RESX to be deleted by flow. */
|
||||
flow_delete_insn (region->resume);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -5866,6 +5866,23 @@ fold (expr)
|
||||
}
|
||||
}
|
||||
}
|
||||
/* Convert A/B/C to A/(B*C). */
|
||||
if (flag_unsafe_math_optimizations
|
||||
&& TREE_CODE (arg0) == RDIV_EXPR)
|
||||
{
|
||||
return fold (build (RDIV_EXPR, type, TREE_OPERAND (arg0, 0),
|
||||
build (MULT_EXPR, type, TREE_OPERAND (arg0, 1),
|
||||
arg1)));
|
||||
}
|
||||
/* Convert A/(B/C) to (A/B)*C. */
|
||||
if (flag_unsafe_math_optimizations
|
||||
&& TREE_CODE (arg1) == RDIV_EXPR)
|
||||
{
|
||||
return fold (build (MULT_EXPR, type,
|
||||
build (RDIV_EXPR, type, arg0,
|
||||
TREE_OPERAND (arg1, 0)),
|
||||
TREE_OPERAND (arg1, 1)));
|
||||
}
|
||||
goto binary;
|
||||
|
||||
case TRUNC_DIV_EXPR:
|
||||
|
@ -1555,6 +1555,14 @@ copy_insn_list (insns, map, static_chain_value)
|
||||
break;
|
||||
|
||||
case NOTE:
|
||||
if (NOTE_LINE_NUMBER (insn) == NOTE_INSN_DELETED_LABEL)
|
||||
{
|
||||
copy = emit_label (get_label_from_map (map,
|
||||
CODE_LABEL_NUMBER (insn)));
|
||||
map->const_age++;
|
||||
break;
|
||||
}
|
||||
|
||||
/* NOTE_INSN_FUNCTION_END and NOTE_INSN_FUNCTION_BEG are
|
||||
discarded because it is important to have only one of
|
||||
each in the current function.
|
||||
@ -1992,18 +2000,18 @@ copy_rtx_and_substitute (orig, map, for_lhs)
|
||||
copy = SUBREG_REG (copy);
|
||||
return gen_rtx_fmt_e (code, VOIDmode, copy);
|
||||
|
||||
/* We need to handle "deleted" labels that appear in the DECL_RTL
|
||||
of a LABEL_DECL. */
|
||||
case NOTE:
|
||||
if (NOTE_LINE_NUMBER (orig) != NOTE_INSN_DELETED_LABEL)
|
||||
break;
|
||||
|
||||
/* ... FALLTHRU ... */
|
||||
case CODE_LABEL:
|
||||
LABEL_PRESERVE_P (get_label_from_map (map, CODE_LABEL_NUMBER (orig)))
|
||||
= LABEL_PRESERVE_P (orig);
|
||||
return get_label_from_map (map, CODE_LABEL_NUMBER (orig));
|
||||
|
||||
/* We need to handle "deleted" labels that appear in the DECL_RTL
|
||||
of a LABEL_DECL. */
|
||||
case NOTE:
|
||||
if (NOTE_LINE_NUMBER (orig) == NOTE_INSN_DELETED_LABEL)
|
||||
return map->insn_map[INSN_UID (orig)];
|
||||
break;
|
||||
|
||||
case LABEL_REF:
|
||||
copy
|
||||
= gen_rtx_LABEL_REF
|
||||
|
Loading…
Reference in New Issue
Block a user