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: Potential fix for rdar://4658012


Richard Guenther wrote:
> On 8/26/06, Josh Conner <jconner@apple.com> wrote:
>> All -
>>
>> rdar://4658012 describes a 3.x -> 4.x gcc regression where stack usage
>> for a particular C++ function increases by 36x.  I have a relatively
>> simple fix that allows the sharing of stack space for temporaries
>> generated by the middle-end to hold the result of functions returning
>> values in memory.  Unfortunately, this approach is reported to have
>> caused an Ada front-end failure at some point in time on Sparc -- see
>> thread starting here:
>>
>>   http://gcc.gnu.org/ml/gcc/2006-08/msg00389.html
>>
>> So, I went looking for an approach which would fix this in the C++
>> front-end instead.  However, I discovered that the C front-end has a
>> similar problem.  e.g., this code:
>>
>>   typedef struct { char x[1000]; } S;
>>   S bar (void);
>>   void foo (void) {
>>     bar();
>>     bar();
>>   }
>>
>> eats 2000 bytes of stack, instead of 1000.
> 
> Applying the patch doesn't change this.  Is the patch you quoted
> incomplete?

Yes, it was.  I had also made the change you identified to the call to
assign_temp(), but because I didn't see any difference on the C++ test
cases I was using, I mistakenly overlooked its significance and had
failed to back it out.

- Josh


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