From 033418dcdef2ee561dde2947ec43ee5591619806 Mon Sep 17 00:00:00 2001 From: Tobias Burnus Date: Tue, 28 Aug 2012 20:18:11 +0200 Subject: [PATCH] re PR fortran/54389 ([F2003/F2008 difference] PURE functions and pointer dummy arguments / DECL_PURE_P issue) 2012-08-28 Tobias Burnus PR fortran/54389 * trans-decl.c (gfc_get_extern_function_decl, build_function_decl): Don't mark impure elemental functions as DECL_PURE_P and honour implicit_pure. From-SVN: r190757 --- gcc/fortran/ChangeLog | 7 +++++++ gcc/fortran/trans-decl.c | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 3a6a23e8199..582eb26f2c0 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,10 @@ +2012-08-28 Tobias Burnus + + PR fortran/54389 + * trans-decl.c (gfc_get_extern_function_decl, + build_function_decl): Don't mark impure elemental + functions as DECL_PURE_P and honour implicit_pure. + 2012-08-28 Tobias Burnus PR fortran/54382 diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c index 35a859b6d6c..7e59cb6dcb4 100644 --- a/gcc/fortran/trans-decl.c +++ b/gcc/fortran/trans-decl.c @@ -1783,7 +1783,7 @@ gfc_get_extern_function_decl (gfc_symbol * sym) /* Set attributes for PURE functions. A call to PURE function in the Fortran 95 sense is both pure and without side effects in the C sense. */ - if (sym->attr.pure || sym->attr.elemental) + if (sym->attr.pure || sym->attr.implicit_pure) { if (sym->attr.function && !gfc_return_by_reference (sym)) DECL_PURE_P (fndecl) = 1; @@ -1912,7 +1912,7 @@ build_function_decl (gfc_symbol * sym, bool global) /* Set attributes for PURE functions. A call to a PURE function in the Fortran 95 sense is both pure and without side effects in the C sense. */ - if (attr.pure || attr.elemental) + if (attr.pure || attr.implicit_pure) { /* TODO: check if a pure SUBROUTINE has no INTENT(OUT) arguments including an alternate return. In that case it can also be -- 2.30.2