Ok if no regressions. Ramana
On Wed, Oct 10, 2012 at 9:57 AM, Bin Cheng <bin.ch...@arm.com> wrote: > Ping^2 > >> -----Original Message----- >> From: gcc-patches-ow...@gcc.gnu.org [mailto:gcc-patches-ow...@gcc.gnu.org] > On >> Behalf Of Bin Cheng >> Sent: Monday, October 08, 2012 2:36 PM >> To: gcc-patches@gcc.gnu.org >> Cc: Ramana Radhakrishnan; Richard Earnshaw; 'Richard Sandiford' >> Subject: RE: [PING Updated]: [PATCH GCC/ARM] Fix problem that > hardreg_cprop >> opportunities are missed on thumb1 >> >> Ping. >> >> > -----Original Message----- >> > From: gcc-patches-ow...@gcc.gnu.org >> > [mailto:gcc-patches-ow...@gcc.gnu.org] >> On >> > Behalf Of Bin Cheng >> > Sent: Tuesday, September 25, 2012 4:00 PM >> > To: 'Richard Sandiford' >> > Cc: Ramana Radhakrishnan; Richard Earnshaw; gcc-patches@gcc.gnu.org >> > Subject: RE: [Updated]: [PATCH GCC/ARM] Fix problem that hardreg_cprop >> > opportunities are missed on thumb1 >> > >> > >> > > -----Original Message----- >> > > From: Richard Sandiford [mailto:rdsandif...@googlemail.com] >> > > Sent: Wednesday, September 05, 2012 6:09 AM >> > > To: Bin Cheng >> > > Cc: Ramana Radhakrishnan; 'Eric Botcazou'; gcc-patches@gcc.gnu.org >> > > Subject: Re: Ping: [PATCH GCC/ARM] Fix problem that hardreg_cprop >> > > opportunities are missed on thumb1 >> > >> > > Subtraction of zero isn't canonical rtl though. Passes after >> > > peephole2 >> > would >> > > be well within their rights to simplify the expression back to a move. >> > > From that point of view, making the passes recognise (plus X 0) and >> > > (minus >> > X 0) >> > > as special cases would be inconsistent. >> > > >> > > Rather than make the Thumb 1 CC usage implicit in the rtl stream, >> > > and >> > carry >> > > the current state around in cfun->machine, it seems like it would be >> > better to >> > > get md_reorg to rewrite the instructions into a form that makes the >> > > use of condition codes explicit. >> > > >> > > md_reorg also sounds like a better place in the pipeline than >> > > peephole2 to >> > be >> > > doing this kind of transformation, although I admit I have zero >> > > evidence >> > to >> > > back that up... >> > > >> > >> > Hi Richard, >> > >> > This is the updated patch according to your suggestions. I removed the >> > peephole2 patterns and introduced function thumb1_reorg to rewrite >> > instructions in md_reorg pass. >> > >> > In addition to missed propagation, this patch also detects following > case: >> > mov r5, r0 >> > str r0, [r4] <-------miscellaneous irrelevant instructions >> > [cmp r0, 0] <-------saved >> > bne .Lxxx >> > >> > Patch tested on arm-none-eabi/cortex-m0, no regressions introduced. >> > >> > Is it OK? >> > >> > Thanks. >> > >> > 2012-09-25 Bin Cheng <bin.ch...@arm.com> >> > >> > * config/arm/arm.c (thumb1_reorg): New function. >> > (arm_reorg): Call thumb1_reorg. >> > (thumb1_final_prescan_insn): Record src operand in thumb1_cc_op0. >> > * config/arm/arm.md : Remove peephole2 patterns which rewrites move >> > into subtract of ZERO. >> >> >>