summaryrefslogtreecommitdiff
path: root/gcc/ifcvt.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2002-06-06 23:20:43 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2002-06-06 21:20:43 +0000
commit0d682900c62864d3a11399087144d72c27a88c73 (patch)
treefaa2390f8f70ae3e60f4e184669ef5304b7cb309 /gcc/ifcvt.c
parentc991649cef7449cefc631fcbcf54c5fd181661c2 (diff)
downloadgcc-0d682900c62864d3a11399087144d72c27a88c73.tar.gz
i386.md (and promoting splitters): Disable QI to SImode promoting when doing so changes immediate to be 32bit.
* i386.md (and promoting splitters): Disable QI to SImode promoting when doing so changes immediate to be 32bit. * rtl.h (emit_*_scope): Declare. * emit-rtl.c (emit_*_scope): New global functions. (try_split): Copy scope. * ifcvt.c (noce_try_store_flag, noce_try_store_flag_constants, noce_try_flag_inc, noce_try_store_flag_mask, noce_try_cmove, noce_try_cmove_arith, noce_try_minmax, noce_try_abs, noce_process_if_block, find_cond_trap): Copy scopes. * recog.c (peephole2_optimize): likewise. From-SVN: r54327
Diffstat (limited to 'gcc/ifcvt.c')
-rw-r--r--gcc/ifcvt.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/gcc/ifcvt.c b/gcc/ifcvt.c
index 4ed1494416e..842eb547383 100644
--- a/gcc/ifcvt.c
+++ b/gcc/ifcvt.c
@@ -612,7 +612,7 @@ noce_try_store_flag (if_info)
seq = get_insns ();
end_sequence ();
- emit_insns_before (seq, if_info->jump);
+ emit_insns_before_scope (seq, if_info->jump, INSN_SCOPE (if_info->insn_a));
return TRUE;
}
@@ -747,7 +747,7 @@ noce_try_store_flag_constants (if_info)
if (seq_contains_jump (seq))
return FALSE;
- emit_insns_before (seq, if_info->jump);
+ emit_insns_before_scope (seq, if_info->jump, INSN_SCOPE (if_info->insn_a));
return TRUE;
}
@@ -807,7 +807,8 @@ noce_try_store_flag_inc (if_info)
if (seq_contains_jump (seq))
return FALSE;
- emit_insns_before (seq, if_info->jump);
+ emit_insns_before_scope (seq, if_info->jump,
+ INSN_SCOPE (if_info->insn_a));
return TRUE;
}
@@ -859,7 +860,8 @@ noce_try_store_flag_mask (if_info)
if (seq_contains_jump (seq))
return FALSE;
- emit_insns_before (seq, if_info->jump);
+ emit_insns_before_scope (seq, if_info->jump,
+ INSN_SCOPE (if_info->insn_a));
return TRUE;
}
@@ -954,7 +956,8 @@ noce_try_cmove (if_info)
seq = get_insns ();
end_sequence ();
- emit_insns_before (seq, if_info->jump);
+ emit_insns_before_scope (seq, if_info->jump,
+ INSN_SCOPE (if_info->insn_a));
return TRUE;
}
else
@@ -1116,7 +1119,7 @@ noce_try_cmove_arith (if_info)
tmp = get_insns ();
end_sequence ();
- emit_insns_before (tmp, if_info->jump);
+ emit_insns_before_scope (tmp, if_info->jump, INSN_SCOPE (if_info->insn_a));
return TRUE;
end_seq_and_fail:
@@ -1368,7 +1371,7 @@ noce_try_minmax (if_info)
if (seq_contains_jump (seq))
return FALSE;
- emit_insns_before (seq, if_info->jump);
+ emit_insns_before_scope (seq, if_info->jump, INSN_SCOPE (if_info->insn_a));
if_info->cond = cond;
if_info->cond_earliest = earliest;
@@ -1486,7 +1489,7 @@ noce_try_abs (if_info)
if (seq_contains_jump (seq))
return FALSE;
- emit_insns_before (seq, if_info->jump);
+ emit_insns_before_scope (seq, if_info->jump, INSN_SCOPE (if_info->insn_a));
if_info->cond = cond;
if_info->cond_earliest = earliest;
@@ -1758,7 +1761,7 @@ noce_process_if_block (test_bb, then_bb, else_bb, join_bb)
insn_b = gen_sequence ();
end_sequence ();
- emit_insn_after (insn_b, test_bb->end);
+ emit_insn_after_scope (insn_b, test_bb->end, INSN_SCOPE (insn_a));
}
/* Merge the blocks! */
@@ -2126,7 +2129,7 @@ find_cond_trap (test_bb, then_edge, else_edge)
return FALSE;
/* Emit the new insns before cond_earliest. */
- emit_insn_before (seq, cond_earliest);
+ emit_insn_before_scope (seq, cond_earliest, INSN_SCOPE (trap));
/* Delete the trap block if possible. */
remove_edge (trap_bb == then_bb ? then_edge : else_edge);