This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug fortran/33097] Function decl trees without proper argument list
- From: "asl at math dot spbu dot ru" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 17 Oct 2007 17:00:35 -0000
- Subject: [Bug fortran/33097] Function decl trees without proper argument list
- References: <bug-33097-14919@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- 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