re PR fortran/35031 (ELEMENTAL procedure with BIND(C))

2019-01-11  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/35031
	* decl.c (gfc_match_entry): Check for F2018:C1546.  Fix nearby
	mis-indentation.
 
2019-01-11  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/35031
	* gfortran.dg/pr35031.f90: new test.

From-SVN: r267864
This commit is contained in:
Steven G. Kargl 2019-01-11 23:41:04 +00:00
parent e334d7a702
commit 89508a3fc6
4 changed files with 34 additions and 3 deletions

View File

@ -1,3 +1,9 @@
2019-01-11 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/35031
* decl.c (gfc_match_entry): Check for F2018:C1546. Fix nearby
mis-indentation.
2019-01-11 Jakub Jelinek <jakub@redhat.com>
PR middle-end/85956

View File

@ -7431,9 +7431,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
@ -7517,6 +7519,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;

View File

@ -1,3 +1,8 @@
2019-01-11 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/35031
* gfortran.dg/pr35031.f90: new test.
2019-01-11 Marek Polacek <polacek@redhat.com>
PR c++/88692, c++/87882 - -Wredundant-move false positive with *this.

View File

@ -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