[Patch, _eh, dawin, Version2] Allow targets to suppress epilogues in _eh frames.

IainS developer@sandoe-acoustics.co.uk
Mon Aug 16 10:07:00 GMT 2010


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.

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



More information about the Gcc-patches mailing list