------- 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