This is the mail archive of the 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: Question about memory allocation in ifcvt.c

On Sun, Oct 14, 2012 at 1:05 AM, thorsten <> wrote:
> Hello all,
> this might be a noob Question but perhaps someone is so kind as to shed some
> light...
> using gcc-4.5.4 to build large files (as in wireshark or qemu) with
> Optimizations enabled (in my case -O2 -pipe -march=core2
> -fomit-frame-pointer) I get segmentation faults due to Stack limits, when
> using the standard stacksize on linux.

It is not a large file which is the problem but rather large functions
in this case that is the issue.

>> I figured out that ifcvt.c uses alloca to reserve mem on the stack. this is
> the point where the segmentation fault occurs.

It is also a regression from what I can tell too from 4.1.x.

It was introduced by:
commit 268de9b99fd9a7440549cf09781af0566ff076a1
Author: ian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>
Date:   Sun Jan 15 02:49:17 2006 +0000

        * ifcvt.c (noce_init_if_info): New static function, broken out of
        (noce_process_if_block): Call noce_init_if_info.
        (check_cond_move_block): New static function.
        (cond_move_process_if_block): New static function.
        (process_if_block): Call cond_move_process_if_block.
        * New test.

    git-svn-id: svn+ssh://

Maybe Ian can mention why he used alloca there instead of xmalloc.

Andrew Pinski

> So beeing curious, I changed alloca to xmalloc to use the heap instead of
> the stack, thinking this is likely to cause a huge penalty in compile-speed.
> But comparing both the gcc-alloca and gcc-xmalloc the compiletimes do not
> differ significantly. And the gcc-xmalloc does not crash anymore due to
> limited stackspace.
> So here is my question: What is the reason for using alloca (Stack) instead
> of xmalloc (heap) in ifcvt.c? I have seen, that also gcc-4.7.2 still uses
> alloca.
> Thanks!
> Thorsten

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