Commit e24e7211 by Jan Hubicka Committed by Richard Henderson

re PR rtl-optimization/11350 (undefined labels with -Os -fPIC)

        PR opt/11350
        * cfgcleanup.c (try_optimize_cfg): Suppress tablejump removal
        after reload.
        * cfgrtl.c (rtl_can_merge_blocks, cfglayout_can_merge_blocks,
        rtl_try_redirect_by_replacing_branch): Likewise.

From-SVN: r75968
parent fbf3e0dd
2004-01-16 Jan Hubicka <jh@suse.cz>
PR opt/11350
* cfgcleanup.c (try_optimize_cfg): Suppress tablejump removal
after reload.
* cfgrtl.c (rtl_can_merge_blocks, cfglayout_can_merge_blocks,
rtl_try_redirect_by_replacing_branch): Likewise.
2004-01-15 Geoffrey Keating <geoffk@apple.com> 2004-01-15 Geoffrey Keating <geoffk@apple.com>
PR pch/13689 PR pch/13689
......
...@@ -1766,7 +1766,7 @@ try_optimize_cfg (int mode) ...@@ -1766,7 +1766,7 @@ try_optimize_cfg (int mode)
/* If the jump insn has side effects, /* If the jump insn has side effects,
we can't kill the edge. */ we can't kill the edge. */
&& (GET_CODE (BB_END (b)) != JUMP_INSN && (GET_CODE (BB_END (b)) != JUMP_INSN
|| (flow2_completed || (reload_completed
? simplejump_p (BB_END (b)) ? simplejump_p (BB_END (b))
: onlyjump_p (BB_END (b)))) : onlyjump_p (BB_END (b))))
&& (next = merge_blocks_move (s, b, c, mode))) && (next = merge_blocks_move (s, b, c, mode)))
......
...@@ -661,7 +661,7 @@ rtl_can_merge_blocks (basic_block a,basic_block b) ...@@ -661,7 +661,7 @@ rtl_can_merge_blocks (basic_block a,basic_block b)
/* If the jump insn has side effects, /* If the jump insn has side effects,
we can't kill the edge. */ we can't kill the edge. */
&& (GET_CODE (BB_END (a)) != JUMP_INSN && (GET_CODE (BB_END (a)) != JUMP_INSN
|| (flow2_completed || (reload_completed
? simplejump_p (BB_END (a)) : onlyjump_p (BB_END (a))))); ? simplejump_p (BB_END (a)) : onlyjump_p (BB_END (a)))));
} }
...@@ -703,7 +703,7 @@ try_redirect_by_replacing_jump (edge e, basic_block target, bool in_cfglayout) ...@@ -703,7 +703,7 @@ try_redirect_by_replacing_jump (edge e, basic_block target, bool in_cfglayout)
if (tmp || !onlyjump_p (insn)) if (tmp || !onlyjump_p (insn))
return false; return false;
if ((!optimize || flow2_completed) && tablejump_p (insn, NULL, NULL)) if ((!optimize || reload_completed) && tablejump_p (insn, NULL, NULL))
return false; return false;
/* Avoid removing branch with side effects. */ /* Avoid removing branch with side effects. */
...@@ -2607,7 +2607,7 @@ cfg_layout_can_merge_blocks_p (basic_block a, basic_block b) ...@@ -2607,7 +2607,7 @@ cfg_layout_can_merge_blocks_p (basic_block a, basic_block b)
/* If the jump insn has side effects, /* If the jump insn has side effects,
we can't kill the edge. */ we can't kill the edge. */
&& (GET_CODE (BB_END (a)) != JUMP_INSN && (GET_CODE (BB_END (a)) != JUMP_INSN
|| (flow2_completed || (reload_completed
? simplejump_p (BB_END (a)) : onlyjump_p (BB_END (a))))); ? simplejump_p (BB_END (a)) : onlyjump_p (BB_END (a)))));
} }
......
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