re PR fortran/65542 (SPREAD intrinsic incorrectly accepted in initialization expressions with -std=f95)
2017-02-12 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/65542 * intrinsic.c (gfc_intrinsic_func_interface): Return an error for -std=f95 for disallowed transformational functions in initialization expressions. 2017-02-12 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/65542 * gfortran.dg/spread_init_expr_2.f90: New test case. From-SVN: r245376
This commit is contained in:
parent
ab874efd6b
commit
4bb91707a8
4 changed files with 38 additions and 0 deletions
|
@ -1,3 +1,10 @@
|
|||
2017-02-12 Thomas Koenig <tkoenig@gcc.gnu.org>
|
||||
|
||||
PR fortran/65542
|
||||
* intrinsic.c (gfc_intrinsic_func_interface): Return an error
|
||||
for -std=f95 for disallowed transformational functions in
|
||||
initialization expressions.
|
||||
|
||||
2017-02-09 Cesar Philippidis <cesar@codesourcery.com>
|
||||
Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
|
|
|
@ -4680,6 +4680,27 @@ gfc_intrinsic_func_interface (gfc_expr *expr, int error_flag)
|
|||
return MATCH_ERROR;
|
||||
}
|
||||
|
||||
/* F95, 7.1.6.1: Only transformational functions REPEAT, RESHAPE,
|
||||
SELECTED_INT_KIND, SELECTED_REAL_KIND, TRANSFER, and TRIM are allowed in
|
||||
initialization expressions. */
|
||||
|
||||
if (gfc_init_expr_flag && isym->transformational)
|
||||
{
|
||||
gfc_isym_id id = isym->id;
|
||||
if (id != GFC_ISYM_REPEAT && id != GFC_ISYM_RESHAPE
|
||||
&& id != GFC_ISYM_SI_KIND && id != GFC_ISYM_SR_KIND
|
||||
&& id != GFC_ISYM_TRANSFER && id != GFC_ISYM_TRIM
|
||||
&& !gfc_notify_std (GFC_STD_F2003, "Transformational function %qs "
|
||||
"at %L is invalid in an initialization "
|
||||
"expression", name, &expr->where))
|
||||
{
|
||||
if (!error_flag)
|
||||
gfc_pop_suppress_errors ();
|
||||
|
||||
return MATCH_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
gfc_current_intrinsic_where = &expr->where;
|
||||
|
||||
/* Bypass the generic list for min, max and ISO_C_Binding's c_loc. */
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2017-02-12 Thomas Koenig <tkoenig@gcc.gnu.org>
|
||||
|
||||
PR fortran/65542
|
||||
* gfortran.dg/spread_init_expr_2.f90: New test case.
|
||||
|
||||
2017-02-11 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR sanitizer/79341
|
||||
|
|
5
gcc/testsuite/gfortran.dg/spread_init_expr_2.f90
Normal file
5
gcc/testsuite/gfortran.dg/spread_init_expr_2.f90
Normal file
|
@ -0,0 +1,5 @@
|
|||
! { dg-do compile }
|
||||
! { dg-options "-std=f95" }
|
||||
module bug
|
||||
integer :: ibug(42) = spread(42, 1, 42) ! { dg-error "invalid in an initialization expression" }
|
||||
end module
|
Loading…
Add table
Reference in a new issue