diff options
author | bstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-05-17 05:56:15 +0000 |
---|---|---|
committer | bstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-05-17 05:56:15 +0000 |
commit | f259ef2dde37cdc1994ab89de4202de11db1758d (patch) | |
tree | fa16d409fa166f36caaced4b9b18b5c11655a10f /gcc/loop-invariant.c | |
parent | f901aa342fec3c1daf7be7c1f6258571542389b1 (diff) | |
download | gcc-f259ef2dde37cdc1994ab89de4202de11db1758d.tar.gz |
2008-05-17 Basile Starynkevitch <basile@starynkevitch.net>
MELT branch merged with trunk r135459
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/melt-branch@135460 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/loop-invariant.c')
-rw-r--r-- | gcc/loop-invariant.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/gcc/loop-invariant.c b/gcc/loop-invariant.c index f043884b15a..384649d8515 100644 --- a/gcc/loop-invariant.c +++ b/gcc/loop-invariant.c @@ -563,7 +563,8 @@ find_exits (struct loop *loop, basic_block *body, FOR_BB_INSNS (body[i], insn) { if (CALL_P (insn) - && !CONST_OR_PURE_CALL_P (insn)) + && (RTL_LOOPING_CONST_OR_PURE_CALL_P (insn) + || !RTL_CONST_OR_PURE_CALL_P (insn))) { has_call = true; bitmap_set_bit (may_exit, i); @@ -796,8 +797,7 @@ find_invariant_insn (rtx insn, bool always_reached, bool always_executed) /* Until we get rid of LIBCALLS. */ if (find_reg_note (insn, REG_RETVAL, NULL_RTX) - || find_reg_note (insn, REG_LIBCALL, NULL_RTX) - || find_reg_note (insn, REG_NO_CONFLICT, NULL_RTX)) + || find_reg_note (insn, REG_LIBCALL, NULL_RTX)) return; #ifdef HAVE_cc0 @@ -904,7 +904,8 @@ find_invariants_bb (basic_block bb, bool always_reached, bool always_executed) if (always_reached && CALL_P (insn) - && !CONST_OR_PURE_CALL_P (insn)) + && (RTL_LOOPING_CONST_OR_PURE_CALL_P (insn) + || ! RTL_CONST_OR_PURE_CALL_P (insn))) always_reached = false; } } |