This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [Patch, GCC/Thumb-1]Mishandle the label type insn in function thumb1_reorg


On Wed, Jun 18, 2014 at 10:16 AM, Terry Guo <terry.guo@arm.com> wrote:
>
>
>> -----Original Message-----
>> From: Richard Earnshaw
>> Sent: Wednesday, June 18, 2014 4:31 PM
>> To: Terry Guo
>> Cc: gcc-patches@gcc.gnu.org; Ramana Radhakrishnan
>> Subject: Re: [Patch, GCC/Thumb-1]Mishandle the label type insn in function
>> thumb1_reorg
>>
>> On 10/06/14 12:42, Terry Guo wrote:
>> > Hi There,
>> >
>> > The thumb1_reorg function use macro INSN_CODE to find expected
>> instructions.
>> > But the macro INSN_CODE doesn't work for label type instruction. The
>> > INSN_CODE(label_insn) will return the label number. When we have a lot
>> of
>> > labels and current label_insn is the first insn of basic block, the
>> > INSN_CODE(label_insn) could accidentally equal to
>> CODE_FOR_cbranchsi4_insn
>> > in this case. This leads to ICE due to SET_SRC(label_insn) in subsequent
>> > code. In general we should skip all such improper insns. This is the purpose
>> > of attached small patch.
>> >
>> > Some failures in recent gcc regression test on thumb1 target are caused by
>> > this reason. So with this patch, all of them passed and no new failures. Is
>> > it ok to trunk?
>> >
>> > BR,
>> > Terry
>> >
>> > 2014-06-10  Terry Guo  <terry.guo@arm.com>
>> >
>> >      * config/arm/arm.c (thumb1_reorg): Move to next basic block if the
>> head
>> >      of current basic block isn't a proper insn.
>> >
>>
>> I think you should just test that "insn != BB_HEAD (bb)".  The loop
>> immediately above this deals with the !NON-DEBUG insns, so the logic is
>> confusing the way you've written it.
>>
>> R.
>>
>
> Thanks for comments. The patch is updated and tested. No more ICE. Is this one OK?
>
> BR,
> Terry

Hi,
The bug is also reported for 4.9 branch at
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61712
As far as I checked, the ICE is also caused by label instruction as in
this message thread.
Since the fix is on trunk more than two weeks, could we back port it
to 4.9 branch?

Thanks,
bin


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]