diff options
author | Tobias Burnus <burnus@net-b.de> | 2010-02-10 17:43:22 +0100 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2010-02-10 17:43:22 +0100 |
commit | 975d3303cc10d90d73d3e9344fe3765ca7e9efa2 (patch) | |
tree | 31b8aee9540326d8a2d66586f9ced66b24ffcf6c /gcc | |
parent | 3b2524b12683ad95e582a4fc74ae19c6927a398d (diff) | |
download | gcc-975d3303cc10d90d73d3e9344fe3765ca7e9efa2.zip gcc-975d3303cc10d90d73d3e9344fe3765ca7e9efa2.tar.gz gcc-975d3303cc10d90d73d3e9344fe3765ca7e9efa2.tar.bz2 |
re PR fortran/43015 (ICE with BIND(C) and -fbounds-check in mingw-w64 cross-compiler)
2010-02-10 Tobias Burnus <burnus@net-b.de>
PR fortran/43015
* trans-decl.c (gfc_generate_function_code): Only check
actual-vs.-dummy character bounds if not bind(C).
2010-02-10 Tobias Burnus <burnus@net-b.de>
PR fortran/43015
* gfortran.dg/bind_c_usage_20.f90: New test.
From-SVN: r156663
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/trans-decl.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/bind_c_usage_20.f90 | 13 |
4 files changed, 26 insertions, 2 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 0e562a8..fc9a641 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2010-02-10 Tobias Burnus <burnus@net-b.de> + + PR fortran/43015 + * trans-decl.c (gfc_generate_function_code): Only check + actual-vs.-dummy character bounds if not bind(C). + 2010-02-10 Jakub Jelinek <jakub@redhat.com> PR fortran/42309 diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c index 062310a..34e153a 100644 --- a/gcc/fortran/trans-decl.c +++ b/gcc/fortran/trans-decl.c @@ -1,5 +1,5 @@ /* Backend function setup - Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Paul Brook @@ -4367,7 +4367,7 @@ gfc_generate_function_code (gfc_namespace * ns) /* If bounds-checking is enabled, generate code to check passed in actual arguments against the expected dummy argument attributes (e.g. string lengths). */ - if (gfc_option.rtcheck & GFC_RTCHECK_BOUNDS) + if ((gfc_option.rtcheck & GFC_RTCHECK_BOUNDS) && !sym->attr.is_bind_c) add_argument_checking (&body, sym); tmp = gfc_trans_code (ns->code); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 0829924..fdb07a6 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-02-10 Tobias Burnus <burnus@net-b.de> + + PR fortran/43015 + * gfortran.dg/bind_c_usage_20.f90: New test. + 2010-02-10 Jakub Jelinek <jakub@redhat.com> PR debug/43010 diff --git a/gcc/testsuite/gfortran.dg/bind_c_usage_20.f90 b/gcc/testsuite/gfortran.dg/bind_c_usage_20.f90 new file mode 100644 index 0000000..0a6fa9e --- /dev/null +++ b/gcc/testsuite/gfortran.dg/bind_c_usage_20.f90 @@ -0,0 +1,13 @@ +! { dg-do compile } +! { dg-options "-fcheck=bounds" } +! +! PR fortran/43015 +! +! Contributed by Dennis Wassel +! +SUBROUTINE foo(msg) BIND(C, name = "Foo") + USE, INTRINSIC :: iso_c_binding + IMPLICIT NONE + CHARACTER (KIND=C_CHAR), INTENT (out) :: msg(*) +END SUBROUTINE foo + |