re PR fortran/40898 (STDCALL mangling problem for strings @8 instead of @4)

2009-07-29  Tobias Burnus  <burnus@net-b.de>

        PR fortran/40898
        * trans-types.c (gfc_get_function_type): Do not add hidden
        string-length argument for BIND(C) procedures.
        * trans-decl.c (create_function_arglist): Skip over nonexisting
        string-length arguments for BIND(C) procedures.

From-SVN: r150216
This commit is contained in:
Tobias Burnus 2009-07-29 16:44:51 +02:00 committed by Tobias Burnus
parent 50fc913551
commit 33215bb37f
3 changed files with 11 additions and 2 deletions

View File

@ -1,3 +1,11 @@
2009-07-29 Tobias Burnus <burnus@net-b.de>
PR fortran/40898
* trans-types.c (gfc_get_function_type): Do not add hidden
string-length argument for BIND(C) procedures.
* trans-decl.c (create_function_arglist): Skip over nonexisting
string-length arguments for BIND(C) procedures.
2009-07-28 Jakub Jelinek <jakub@redhat.com>
PR fortran/40878

View File

@ -1724,7 +1724,8 @@ create_function_arglist (gfc_symbol * sym)
type = TREE_VALUE (typelist);
if (f->sym->ts.type == BT_CHARACTER)
if (f->sym->ts.type == BT_CHARACTER
&& (!sym->attr.is_bind_c || sym->attr.entry_master))
{
tree len_type = TREE_VALUE (hidden_typelist);
tree length = NULL_TREE;

View File

@ -2249,7 +2249,7 @@ gfc_get_function_type (gfc_symbol * sym)
Contained procedures could pass by value as these are never
used without an explicit interface, and cannot be passed as
actual parameters for a dummy procedure. */
if (arg->ts.type == BT_CHARACTER)
if (arg->ts.type == BT_CHARACTER && !sym->attr.is_bind_c)
nstr++;
typelist = gfc_chainon_list (typelist, type);
}