From patchwork Tue Oct 9 13:17:02 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [PING] Re: [RFA 1/n] Fix if conversion interactions with block partitioning Date: Tue, 09 Oct 2012 03:17:02 -0000 From: Matthew Gretton-Dann X-Patchwork-Id: 190297 Message-Id: To: Steven Bosscher Cc: gcc-patches@gcc.gnu.org, jle@rice.edu, rdsandiford@googlemail.com, ebotcazou@libertysurf.fr, rearnsha@arm.com, ramrad01@arm.com PING. On 24 September 2012 11:34, Matthew Gretton-Dann wrote: > On Wednesday 05 September 2012 13:47:19 Steven Bosscher wrote: >> On Wed, Sep 5, 2012 at 1:25 PM, Matthew Gretton-Dann wrote: >> > + /* If the two blocks are in different partitions we do not want to mark >> > + this as a fallthru edge. */ >> > + if (BB_PARTITION (b) != BB_PARTITION (c)) >> > + return; >> > + >> >> I think you should look for a REG_CROSSING_JUMP note on BB_END instead >> of comparing BB_PARTITION. > > Sorry for the delay in getting back to this. > > Anyway, I had a look at how other parts of cfgrtl.c handled this and it seems > as if they do both your suggestion and the check against different partitions. > > So this is what I have implemented in the attached patch. > > Cross tested arm-none-linux-gnueabi with QEmu. > > OK for trunk? > > Thanks, > > Matt > > gcc/ChangeLog: > > 2012-09-24 Matthew Gretton-Dann > > * cfgrtl.c (rtl_tidy_fallthru_edge): Don't tidy edges which > cross partitions. > > -- > Matthew Gretton-Dann > Linaro Toolchain Working Group > matthew.gretton-dann@linaro.org diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c index c62b5bc..8fcf7e4 100644 --- a/gcc/cfgrtl.c +++ b/gcc/cfgrtl.c @@ -1572,6 +1572,12 @@ rtl_tidy_fallthru_edge (edge e) if (INSN_P (q)) return; + /* If the two blocks are in different partitions we do not want to mark + this as a fallthru edge. */ + if (find_reg_note (BB_END (b), REG_CROSSING_JUMP, NULL_RTX) + || BB_PARTITION (b) != BB_PARTITION (c)) + return; + /* Remove what will soon cease being the jump insn from the source block. If block B consisted only of this single jump, turn it into a deleted note. */