Commit 866f20d6 by Richard Biener Committed by Richard Biener

tree-switch-conversion.c (collect_switch_conv_info): Simplify and allow all…

tree-switch-conversion.c (collect_switch_conv_info): Simplify and allow all blocks to be forwarders.

2014-06-17  Richard Biener  <rguenther@suse.de>

	* tree-switch-conversion.c (collect_switch_conv_info): Simplify
	and allow all blocks to be forwarders.

From-SVN: r211735
parent 00bdef2c
2014-06-17 Richard Biener <rguenther@suse.de>
* tree-switch-conversion.c (collect_switch_conv_info): Simplify
and allow all blocks to be forwarders.
2014-06-17 Yufeng Zhang <yufeng.zhang@arm.com> 2014-06-17 Yufeng Zhang <yufeng.zhang@arm.com>
PR target/61483 PR target/61483
......
...@@ -640,15 +640,16 @@ collect_switch_conv_info (gimple swtch, struct switch_conv_info *info) ...@@ -640,15 +640,16 @@ collect_switch_conv_info (gimple swtch, struct switch_conv_info *info)
info->other_count += e->count; info->other_count += e->count;
/* See if there is one common successor block for all branch /* See if there is one common successor block for all branch
targets. If it exists, record it in FINAL_BB. */ targets. If it exists, record it in FINAL_BB.
FOR_EACH_EDGE (e, ei, info->switch_bb->succs) Start with the destination of the default case as guess
{ or its destination in case it is a forwarder block. */
if (! single_pred_p (e->dest)) if (! single_pred_p (e_default->dest))
{ info->final_bb = e_default->dest;
info->final_bb = e->dest; else if (single_succ_p (e_default->dest)
break; && ! single_pred_p (single_succ (e_default->dest)))
} info->final_bb = single_succ (e_default->dest);
} /* Require that all switch destinations are either that common
FINAL_BB or a forwarder to it. */
if (info->final_bb) if (info->final_bb)
FOR_EACH_EDGE (e, ei, info->switch_bb->succs) FOR_EACH_EDGE (e, ei, info->switch_bb->succs)
{ {
......
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