Commit 2e9cc48c by Tobias Burnus Committed by Tobias Burnus

match.c (gfc_match_stopcode): Permit error stop in pure procedures with F2015.

gcc/fortran/
2014-12-31  Tobias Burnus  <burnus@net-b.de>

        * match.c (gfc_match_stopcode): Permit error stop in pure
        procedures with F2015.

gcc/testsuite/
2014-12-31  Tobias Burnus  <burnus@net-b.de>

        * gfortran.dg/error_stop_3.f90: New.
        * gfortran.dg/error_stop_4.f90: New.
        * gfortran.dg/coarray_3.f90: Remove a dg-error.

From-SVN: r219127
parent 1a33dc9e
2014-12-31 Tobias Burnus <burnus@net-b.de>
* match.c (gfc_match_stopcode): Permit error stop in pure
procedures with F2015.
2014-12-31 Uros Bizjak <ubizjak@gmail.com>
* trans-array.c (trans_array_bound_check): Use xasprintf instead
......
......@@ -2557,7 +2557,8 @@ gfc_match_cycle (void)
}
/* Match a number or character constant after an (ALL) STOP or PAUSE statement. */
/* Match a number or character constant after an (ERROR) STOP or PAUSE
statement. */
static match
gfc_match_stopcode (gfc_statement st)
......@@ -2581,9 +2582,18 @@ gfc_match_stopcode (gfc_statement st)
if (gfc_pure (NULL))
{
gfc_error ("%s statement not allowed in PURE procedure at %C",
gfc_ascii_statement (st));
goto cleanup;
if (st == ST_ERROR_STOP)
{
if (!gfc_notify_std (GFC_STD_F2015, "%s statement at %C in PURE "
"procedure", gfc_ascii_statement (st)))
goto cleanup;
}
else
{
gfc_error ("%s statement not allowed in PURE procedure at %C",
gfc_ascii_statement (st));
goto cleanup;
}
}
gfc_unset_implicit_pure (NULL);
......
2014-12-31 Tobias Burnus <burnus@net-b.de>
* gfortran.dg/error_stop_3.f90: New.
* gfortran.dg/error_stop_4.f90: New.
* gfortran.dg/coarray_3.f90: Remove a dg-error.
2014-12-31 Iain Sandoe <iain@codesourcery.com>
* obj-c++.dg/lambda-0.mm New.
......
......@@ -79,7 +79,7 @@ pure subroutine pureSub()
critical ! { dg-error "Image control statement CRITICAL" }
end critical ! { dg-error "Expecting END SUBROUTINE statement" }
sync all ! { dg-error "Image control statement SYNC" }
error stop ! { dg-error "not allowed in PURE procedure" }
error stop
end subroutine pureSub
......
! { dg-do compile }
! { dg-options "-std=gnu" }
!
! F2015 permits ERROR STOP in PURE procedures
! FIXME: Change to -std=f2015, when available
!
pure subroutine foo()
error stop "failed"
end
! { dg-do compile }
! { dg-options "-std=f2008ts" }
!
! F2015 permits ERROR STOP in PURE procedures
! FIXME: Change to error_stop_3.f90 to -std=f2015.
!
pure subroutine foo()
error stop "failed" ! { dg-error "GNU Extension: ERROR STOP statement at .1. in PURE procedure" }
end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment