aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorTobias Burnus <burnus@net-b.de>2010-02-10 17:43:22 +0100
committerTobias Burnus <burnus@gcc.gnu.org>2010-02-10 17:43:22 +0100
commit975d3303cc10d90d73d3e9344fe3765ca7e9efa2 (patch)
tree31b8aee9540326d8a2d66586f9ced66b24ffcf6c /gcc
parent3b2524b12683ad95e582a4fc74ae19c6927a398d (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/fortran/trans-decl.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/bind_c_usage_20.f9013
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
+