aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorTobias Burnus <burnus@gcc.gnu.org>2012-02-01 20:01:49 +0100
committerTobias Burnus <burnus@gcc.gnu.org>2012-02-01 20:01:49 +0100
commit887ee29f8e30cfa163eb584b0d6d40689679b639 (patch)
tree7e972460c7393e3f569d7eccd0c04aa622008a33 /gcc
parentc2b13bb66d214425e2c616b34de09111c5b0e3a6 (diff)
downloadgcc-887ee29f8e30cfa163eb584b0d6d40689679b639.zip
gcc-887ee29f8e30cfa163eb584b0d6d40689679b639.tar.gz
gcc-887ee29f8e30cfa163eb584b0d6d40689679b639.tar.bz2
2012-02-01 Tobias Burnus
PR fortran/52059 * trans-expr.c (gfc_conv_procedure_call): Add array ref only to variables. 2012-02-01 Tobias Burnus PR fortran/52059 * gfortran.dg/elemental_function_1.f90: New. From-SVN: r183807
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/trans-expr.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/elemental_function_1.f9022
4 files changed, 34 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index fbbfccf..2a7cc28 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2012-02-01 Tobias Burnus
+
+ PR fortran/52059
+ * trans-expr.c (gfc_conv_procedure_call): Add array ref
+ only to variables.
+
2012-01-31 Tobias Burnus <burnus@net-b.de>
PR fortran/52024
diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c
index 657b4f4..4574c8e 100644
--- a/gcc/fortran/trans-expr.c
+++ b/gcc/fortran/trans-expr.c
@@ -3526,7 +3526,7 @@ gfc_conv_procedure_call (gfc_se * se, gfc_symbol * sym,
gfc_init_se (&parmse, se);
parm_kind = ELEMENTAL;
- if (se->ss->dimen > 0
+ if (se->ss->dimen > 0 && e->expr_type == EXPR_VARIABLE
&& se->ss->info->data.array.ref == NULL)
{
gfc_conv_tmp_array_ref (&parmse);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 8179fc7..95b1ece 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2012-02-01 Tobias Burnus
+
+ PR fortran/52059
+ * gfortran.dg/elemental_function_1.f90: New.
+
2012-02-01 Georg-Johann Lay <avr@gjlay.de>
PR rtl-optimization/51374
diff --git a/gcc/testsuite/gfortran.dg/elemental_function_1.f90 b/gcc/testsuite/gfortran.dg/elemental_function_1.f90
new file mode 100644
index 0000000..8f556f4
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/elemental_function_1.f90
@@ -0,0 +1,22 @@
+! { dg-do compile }
+!
+! PR fortran/52059
+!
+!
+
+subroutine baz
+ real(kind=8) :: a(99), b
+ interface bar
+ function bar (x, y)
+ integer, intent(in) :: x, y
+ real(kind=8), dimension((y-x)) :: bar
+ end function bar
+ end interface
+ b = 1.0_8
+ a = foo (bar(0,35) / dble(34), b)
+contains
+ elemental real(kind=8) function foo(x, y)
+ real(kind=8), intent(in) :: x, y
+ foo = 1
+ end function foo
+end subroutine baz