Commit bc8d3f91 by Jan Hubicka Committed by Jan Hubicka

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
parent 08f66b04
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> 2001-07-20 Aldy Hernandez <aldyh@redhat.com>
* config/mips/mips.h (ISA_HAS_NMADD_NMSUB): New macro. * config/mips/mips.h (ISA_HAS_NMADD_NMSUB): New macro.
......
...@@ -1846,8 +1846,7 @@ connect_post_landing_pads () ...@@ -1846,8 +1846,7 @@ connect_post_landing_pads ()
seq = get_insns (); seq = get_insns ();
end_sequence (); end_sequence ();
emit_insns_before (seq, region->resume); emit_insns_before (seq, region->resume);
flow_delete_insn (region->resume);
/* Leave the RESX to be deleted by flow. */
} }
} }
......
...@@ -5866,6 +5866,23 @@ fold (expr) ...@@ -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; goto binary;
case TRUNC_DIV_EXPR: case TRUNC_DIV_EXPR:
......
...@@ -1555,6 +1555,14 @@ copy_insn_list (insns, map, static_chain_value) ...@@ -1555,6 +1555,14 @@ copy_insn_list (insns, map, static_chain_value)
break; break;
case NOTE: 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 /* NOTE_INSN_FUNCTION_END and NOTE_INSN_FUNCTION_BEG are
discarded because it is important to have only one of discarded because it is important to have only one of
each in the current function. each in the current function.
...@@ -1992,18 +2000,18 @@ copy_rtx_and_substitute (orig, map, for_lhs) ...@@ -1992,18 +2000,18 @@ copy_rtx_and_substitute (orig, map, for_lhs)
copy = SUBREG_REG (copy); copy = SUBREG_REG (copy);
return gen_rtx_fmt_e (code, VOIDmode, 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: case CODE_LABEL:
LABEL_PRESERVE_P (get_label_from_map (map, CODE_LABEL_NUMBER (orig))) LABEL_PRESERVE_P (get_label_from_map (map, CODE_LABEL_NUMBER (orig)))
= LABEL_PRESERVE_P (orig); = LABEL_PRESERVE_P (orig);
return get_label_from_map (map, CODE_LABEL_NUMBER (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: case LABEL_REF:
copy copy
= gen_rtx_LABEL_REF = gen_rtx_LABEL_REF
......
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