Commit 9964e830 by Tobias Burnus Committed by Tobias Burnus

re PR fortran/60543 (Function with side effect removed by the optimizer.)

2014-03-19  Tobias Burnus  <burnus@net-b.>

        PR fortran/60543
        * io.c (check_io_constraints): Use gfc_unset_implicit_pure.
        * resolve.c (resolve_ordinary_assign): Ditto.

From-SVN: r208693
parent a69e09c8
2014-03-19 Tobias Burnus <burnus@net-b.>
PR fortran/60543
* io.c (check_io_constraints): Use gfc_unset_implicit_pure.
* resolve.c (resolve_ordinary_assign): Ditto.
2014-03-19 Tobias Burnus <burnus@net-b.de>
PR fortran/60543
......
......@@ -3259,9 +3259,8 @@ if (condition) \
"an internal file in a PURE procedure",
io_kind_name (k));
if (gfc_implicit_pure (NULL) && (k == M_READ || k == M_WRITE))
gfc_current_ns->proc_name->attr.implicit_pure = 0;
if (k == M_READ || k == M_WRITE)
gfc_unset_implicit_pure (NULL);
}
if (k != M_READ)
......
......@@ -9165,7 +9165,7 @@ resolve_ordinary_assign (gfc_code *code, gfc_namespace *ns)
if (lhs->expr_type == EXPR_VARIABLE
&& lhs->symtree->n.sym != gfc_current_ns->proc_name
&& lhs->symtree->n.sym->ns != gfc_current_ns)
gfc_current_ns->proc_name->attr.implicit_pure = 0;
gfc_unset_implicit_pure (NULL);
if (lhs->ts.type == BT_DERIVED
&& lhs->expr_type == EXPR_VARIABLE
......@@ -9173,11 +9173,11 @@ resolve_ordinary_assign (gfc_code *code, gfc_namespace *ns)
&& rhs->expr_type == EXPR_VARIABLE
&& (gfc_impure_variable (rhs->symtree->n.sym)
|| gfc_is_coindexed (rhs)))
gfc_current_ns->proc_name->attr.implicit_pure = 0;
gfc_unset_implicit_pure (NULL);
/* Fortran 2008, C1283. */
if (gfc_is_coindexed (lhs))
gfc_current_ns->proc_name->attr.implicit_pure = 0;
gfc_unset_implicit_pure (NULL);
}
/* F2008, 7.2.1.2. */
......
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