From: Steven G. Kargl Date: Sat, 12 Jan 2019 00:33:01 +0000 (+0000) Subject: re PR fortran/35031 (ELEMENTAL procedure with BIND(C)) X-Git-Tag: releases/gcc-7.5.0~663 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1195efaf15f6542232503003f5f3a8ae9620ad8c;p=thirdparty%2Fgcc.git re PR fortran/35031 (ELEMENTAL procedure with BIND(C)) 2019-01-11 Steven G. Kargl PR fortran/35031 * decl.c (gfc_match_entry): Check for F2018:C1546. Fix nearby mis-indentation. 2019-01-11 Steven G. Kargl PR fortran/35031 * gfortran.dg/pr35031.f90: new test. From-SVN: r267874 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index e12b57709616..1a00f9411f8a 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2019-01-11 Steven G. Kargl + + PR fortran/35031 + * decl.c (gfc_match_entry): Check for F2018:C1546. Fix nearby + mis-indentation. + 2018-12-29 Paul Thomas Backport from trunk diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c index 42879f063e2c..2f69028ac2c0 100644 --- a/gcc/fortran/decl.c +++ b/gcc/fortran/decl.c @@ -6479,9 +6479,11 @@ gfc_match_entry (void) gfc_error ("Missing required parentheses before BIND(C) at %C"); return MATCH_ERROR; } - if (!gfc_add_is_bind_c (&(entry->attr), entry->name, - &(entry->declared_at), 1)) - return MATCH_ERROR; + + if (!gfc_add_is_bind_c (&(entry->attr), entry->name, + &(entry->declared_at), 1)) + return MATCH_ERROR; + } if (!gfc_current_ns->parent @@ -6565,6 +6567,14 @@ gfc_match_entry (void) return MATCH_ERROR; } + /* F2018:C1546 An elemental procedure shall not have the BIND attribute. */ + if (proc->attr.elemental && entry->attr.is_bind_c) + { + gfc_error ("ENTRY statement at %L with BIND(C) prohibited in an " + "elemental procedure", &entry->declared_at); + return MATCH_ERROR; + } + entry->attr.recursive = proc->attr.recursive; entry->attr.elemental = proc->attr.elemental; entry->attr.pure = proc->attr.pure; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index f4b6678f203b..80317b36aa34 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2019-01-11 Steven G. Kargl + + PR fortran/35031 + * gfortran.dg/pr35031.f90: new test. + 2019-01-09 Eric Botcazou * gcc.target/sparc/tls-ld-int8.c: New test. diff --git a/gcc/testsuite/gfortran.dg/pr35031.f90 b/gcc/testsuite/gfortran.dg/pr35031.f90 new file mode 100644 index 000000000000..a4d784060064 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr35031.f90 @@ -0,0 +1,10 @@ +! { dg-do compile } +elemental subroutine sub2(x) + integer, intent(in) :: x + entry sub2_c(x) bind(c) ! { dg-error "prohibited in an elemental" } +end subroutine sub2 + +elemental function func2(x) + integer, intent(in) :: x + entry func2_c(x) bind(c) ! { dg-error "prohibited in an elemental" } +end function func2