This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
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