------- Comment #11 from asl at math dot spbu dot ru  2007-10-17 17:00 -------
Also, some chunk of code in function type creation (gfc_get_function_type() is
in question) looks suspicious to me. Let me explain on terms of C (I don't know
Fortran at all :) )

Consider we have two function decls:

int foo1();
struct some_fat_struct foo2();

Both are varargs functions, but return type for the second will be lowered to
void, so, after some lowering they in general should look like:

int foo(...);
void foo2(struct some_fat_struct *retval, ...);

The problem with gfortran is that function, which result is passed by reference
(determined with help of gfc_return_by_reference() call inside
gfc_get_function_type()) won't be varargs, so inside gfortran FE we'll end with
 something like:

void foo2(some_fat_struct *ptr); but:
int foo(...);

This looks pretty unlogical to me. Was it intentional?


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33097

Reply via email to