This is the mail archive of the fortran@gcc.gnu.org mailing list for the GNU Fortran 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, fortran] PR20541 - allocatable components (TR15541)


Paul Thomas <paulthomas2@wanadoo.fr> wrote on Fri, 06 Oct 2006:
Out of curiousity, why didn't you use alloca instead of doing all this bookkeeping? Maybe because you would have needed bookkeeping anyway for the case where the allocatable component would have been > -fmax-stack-var-size? Or is there a simpler reason?

Ignorance.


Having looked at the spec. for alloca, you are right, we would have had
to branch for >  -fmax-stack-var-size; otherwise the warnings in the
gcc manual would hold good.  I will put a TODO in the code somewhere.

It would simplify the code considerably - take a look for some of the
testcases!

For the record, I don't think a size restriction on the allocated components would render a patch for the TR unacceptable. Nor do I think that your patch is any less acceptable because you decided to manually allocate and deallocate the memory.


OTOH I think it would be a good thing if you could estimate the probable savings in terms of code size and complexity a patch with alloca (or whatever one calls it when one means the portable equivalent) would bring.

One thing that may render this more difficult than one expects, is that C has no notion of contained procedures, which may interfere with stack-based memory allocation. I.e. __builtin_alloca may not be well tested in all circumstance that are interesting to us. Maybe a middle-end person can weigh in on this?

(As an aside, I wonder if we should allocate temporaries on the stack instead of the heap, as we do currently. Going via a compiler builtin may be more transparent to the optimizers.)

- Tobi


---------------------------------------------------------------- This message was sent using IMP, the Internet Messaging Program.



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