From patchwork Mon Nov 26 22:47:43 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: Fix the bug of comparing goto_locus to UNKNOWN_LOCATION Date: Mon, 26 Nov 2012 12:47:43 -0000 From: Dehao Chen X-Patchwork-Id: 202040 Message-Id: To: GCC Patches Cc: Richard Guenther Hi, This patch fixes a bug of comparing goto_locus to UNKNOWN_LOCATION when combining basic blocks. Bootstrapped and and passed gcc regression tests. Is it okay for trunk? Thanks, Dehao gcc/ChangeLog: 2012-11-26 Dehao Chen * cfgrtl.c (rtl_merge_blocks): Check with UNKNOWN_LOCATION correctly. (cfg_layout_merge_blocks): Likewise. Index: gcc/cfgrtl.c =================================================================== --- gcc/cfgrtl.c (revision 193828) +++ gcc/cfgrtl.c (working copy) @@ -890,7 +890,8 @@ rtl_merge_blocks (basic_block a, basic_block b) df_bb_delete (b->index); /* If B was a forwarder block, propagate the locus on the edge. */ - if (forwarder_p && !EDGE_SUCC (b, 0)->goto_locus) + if (forwarder_p + && LOCATION_LOCUS (EDGE_SUCC (b, 0)->goto_locus) == UNKNOWN_LOCATION) EDGE_SUCC (b, 0)->goto_locus = EDGE_SUCC (a, 0)->goto_locus; if (dump_file) @@ -4149,7 +4150,7 @@ cfg_layout_merge_blocks (basic_block a, basic_bloc /* If B was a forwarder block, propagate the locus on the edge. */ if (forwarder_p - && LOCATION_LOCUS (EDGE_SUCC (b, 0)->goto_locus) != UNKNOWN_LOCATION) + && LOCATION_LOCUS (EDGE_SUCC (b, 0)->goto_locus) == UNKNOWN_LOCATION) EDGE_SUCC (b, 0)->goto_locus = EDGE_SUCC (a, 0)->goto_locus; if (dump_file)