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, _eh, dawin, Version2] Allow targets to suppress epilogues in _eh frames.


On Mon, Aug 16, 2010 at 10:52:39AM +0100, IainS wrote:
>
> On 16 Aug 2010, at 05:15, Jack Howarth wrote:
>
>>>   I am also seeing the failure...
>>>
>>> FAIL: gfortran.dg/g77/980701-0.f  -Os  execution test
>
> Hm.  This test does not contain any (overt) exception handling, I guess 
> we must be seeing an interaction with the fortran runtime
> (or some aspect of the optimize for smallest code which is unexpected  
> --- note that m32 forces frame pointers on for optimize_size).
>
> The salient difference between trunk and the patched version is that  
> there are no unwind frames emitted for the patched version.
> Un-patched trunk sets -fasynchronous-unwind-tables.

This seems to be in line with the comments I found in...

http://llvm.org/bugs/show_bug.cgi?id=4945

in particular comment 2 there which indicates that -fasynchronous-unwind-tables
should be defaulted on with -fomit-frame-pointer on x86-32 (for gdb at least).

>
> The test passes if   either
>
> -fno-omit-frame-pointers
>
> or
>
> -funwind-tables
>
> is given.
>
> this can be replicated on un-patched trunk by passing '-fno- 
> asynchronous-frame-tables'.
>
> Given that -fno-asynchronous-frame-tables does not sit well with  
> dawin...
> I could arrange either to default to  "-funwind-tables" on m64 (at least 
> for fortran) but please note the following:
>
> ======
> apple_local 4.2.1 (5646) gcc/config/i386/i386.c:
>
>   if (TARGET_64BIT)
>     {
>       /* Mach-O doesn't support omitting the frame pointer for now.  */
>       if (flag_omit_frame_pointer == 2)
> 	flag_omit_frame_pointer = (TARGET_MACHO ? 0 : 1);
>
> but we have recently changed trunk to this:
>
>   if (TARGET_64BIT)
>     {
>       if (flag_zee == 2)
>         flag_zee = 1;
>       if (flag_omit_frame_pointer == 2)
> 	flag_omit_frame_pointer = 1;
>
>
> ------
>
> If you know that the "does not support" is no longer true for Darwin10 - 
> then, fine, we can arrange the target over-rides to switch it off for 
> Darwin10.
>
> Otherwise, I'm not sure how we can justify omitting frame pointers by  
> default for m64 OSX
> Mike?
>
> cheers,
> Iain


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