diff options
author | Tobias Burnus <burnus@net-b.de> | 2009-07-29 16:44:51 +0200 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2009-07-29 16:44:51 +0200 |
commit | 33215bb37f598adbbde2a90e301d37165072dcc2 (patch) | |
tree | b9e48641fe11527027e1e18678f511de2ba7d7c0 | |
parent | 50fc913551ce9e72ca3f5352c727ce9f87b17159 (diff) | |
download | gcc-33215bb37f598adbbde2a90e301d37165072dcc2.zip gcc-33215bb37f598adbbde2a90e301d37165072dcc2.tar.gz gcc-33215bb37f598adbbde2a90e301d37165072dcc2.tar.bz2 |
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
-rw-r--r-- | gcc/fortran/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/fortran/trans-decl.c | 3 | ||||
-rw-r--r-- | gcc/fortran/trans-types.c | 2 |
3 files changed, 11 insertions, 2 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 623c601..f89a8af 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -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 diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c index 65a6ac5..783c8f8 100644 --- a/gcc/fortran/trans-decl.c +++ b/gcc/fortran/trans-decl.c @@ -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; diff --git a/gcc/fortran/trans-types.c b/gcc/fortran/trans-types.c index 77b8b9c..7b84236 100644 --- a/gcc/fortran/trans-types.c +++ b/gcc/fortran/trans-types.c @@ -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); } |