Won't be able to look at it till later in the afternoon . got a few other 
things to finish up during the day. 

Ramana

> -----Original Message-----
> From: Zhenqiang Chen [mailto:zhenqiang.c...@linaro.org]
> Sent: 16 October 2012 08:44
> To: Ramana Radhakrishnan
> Cc: linaro-toolchain
> Subject: Re: Add dwarf/unwind info in epilogue
> 
> On 16 October 2012 14:58, Ramana Radhakrishnan
> <ramana.radhakrish...@arm.com> wrote:
> > shrink-wrap.patch doesn't apply cleanly to the revision you suggest.
> If you give a clean patch and some description of what happens I might
> be able to take a look ..
> 
> Please try the new one. With the patch, your build might fail when
> build libraries.
> 
>     internal compiler error: in maybe_record_trace_start, at
> dwarf2cfi.c:2224
> 
> To get a toolchain, just remove the line at dwarf2cfi.c:2224.
> 
>     gcc_checking_assert (cfi_row_equal_p (cur_row, ti->beg_row));
> 
> After build OK. Re add the line at dwarf2cfi.c:2224 and make install.
> 
> > What do you expect to happen with the testcases ? ICE ? wrong-code ,
> wrong-debug info, what ?
> 
> All cases will be ICE due to wrong debug info.
> My option is: -mthumb -mcpu=cortex-m3 -O2 -g
> For all cases, it will ICE.
> 
>    internal compiler error: in maybe_record_trace_start, at
> dwarf2cfi.c:2224
> 
> The root cause:
> Without shrink-wrap, the code is like
> 
> push
> ...
> pop
> return //The return has only one predecessor. No dwarf check for this
> case, even if the dwarf info is wrong.
> 
> With shrink-wrap, the basic code is like
> 
> tst ... L1
> push
> ...
> pop
> return  // no dwarf check for it
> L1:
> simple_return  // no dwarf check for it
> 
> After some optimization the code is like
> 
> tst ... L1
> push
> ...
> pop
> // ************The return is optimized *********
> L1:
> simple_return  //Now the simple_return has two predecessors. dwarf
> check fail at this block if the debug info is wrong.
> 
> Thanks!
> -Zhenqiang
> 
> 
> > ________________________________________
> > From: Zhenqiang Chen [zhenqiang.c...@linaro.org]
> > Sent: 16 October 2012 04:44
> > To: Ramana Radhakrishnan
> > Cc: linaro-toolchain
> > Subject: Re: Add dwarf/unwind info in epilogue
> >
> > On 16 October 2012 10:22, Ramana Radhakrishnan
> > <ramana.radhakrish...@arm.com> wrote:
> >> Zhenqiang,
> >>
> >> I've been spending sometime scratching my head around this one
> tonight. Can you show me the original shrink-wrap patch as well the
> test case that triggers this failure ? I have my suspicion on something
> but need to run a few experiments before commenting further.
> >
> > p4.patch is from the mail-list discussion:
> > http://old.nabble.com/Shrink-wrapping%3A-Introduction-to31220423.html
> >
> > shrink-wrap.patch is my patch against r192445.
> >
> > *.c are test cases: -O2 -g
> >
> > There is no fail in gcc-linaro-4.5 since "simple_return" and "normal
> > return" can not be optimized as one common return.
> >
> > Thanks!
> > -Zhenqiang
> >
> >
> >> On 15 Oct 2012, at 10:57, Zhenqiang Chen <zhenqiang.c...@linaro.org>
> wrote:
> >>
> >>> Hi Ramana,
> >>>
> >>> The attached file is a reference patch to add more dwarf/unwind
> info
> >>> in epilogue. Please help to review.
> >>>
> >>> Without the patch, dwarf check fail for the following cases when
> >>> enabling shrink-wrap:
> >>>
> >>>    tst ... L1 //simple_return
> >>>    push ...
> >>>    ...
> >>>    pop  ...  //.cfa_offset is not 0
> >>> L1:
> >>>    bx lr //common simple_return
> >>>
> >>> Thanks!
> >>> -
> Zhenqiang<dwarf.patch>_______________________________________________
> >>> linaro-toolchain mailing list
> >>> linaro-toolchain@lists.linaro.org
> >>> http://lists.linaro.org/mailman/listinfo/linaro-toolchain
> >>
> >>
> >


_______________________________________________
linaro-toolchain mailing list
linaro-toolchain@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-toolchain

Reply via email to