Commit b7e6a6b3 by Tobias Schlüter Committed by Paul Brook

trans-decl.c (gfc_get_extern_function_decl): Set DECL_IS_PURE only for functions.

	* trans-decl.c (gfc_get_extern_function_decl): Set DECL_IS_PURE
	only for functions.
	(gfc_build_function_decl): Likewise.

From-SVN: r82132
parent 21fdfcc1
2004-05-22 Tobias Schlter <tobias.schlueter@physik.uni-muenchen.de>
* trans-decl.c (gfc_get_extern_function_decl): Set DECL_IS_PURE
only for functions.
(gfc_build_function_decl): Likewise.
2004-05-22 Steven G. Kargl <kargls@comcast.net>
* check.c (gfc_check_system_clock): New function.
......
......@@ -951,9 +951,13 @@ gfc_get_extern_function_decl (gfc_symbol * sym)
sense. */
if (sym->attr.pure || sym->attr.elemental)
{
DECL_IS_PURE (fndecl) = 1;
/* TODO: check if pure/elemental procedures can have INTENT(OUT) parameters.
TREE_SIDE_EFFECTS (fndecl) = 0;*/
if (sym->attr.function)
DECL_IS_PURE (fndecl) = 1;
/* TODO: check if pure SUBROUTINEs don't have INTENT(OUT)
parameters and don't use alternate returns (is this
allowed?). In that case, calls to them are meaningless, and
can be optimized away. See also in gfc_build_function_decl(). */
TREE_SIDE_EFFECTS (fndecl) = 0;
}
sym->backend_decl = fndecl;
......@@ -1060,7 +1064,11 @@ gfc_build_function_decl (gfc_symbol * sym)
sense. */
if (attr.pure || attr.elemental)
{
DECL_IS_PURE (fndecl) = 1;
/* TODO: check if a pure SUBROUTINE has no INTENT(OUT) arguments
including a alternate return. In that case it can also be
marked as PURE. See also in gfc_get_extern_fucntion_decl(). */
if (attr.function)
DECL_IS_PURE (fndecl) = 1;
TREE_SIDE_EFFECTS (fndecl) = 0;
}
......
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