aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog5
-rw-r--r--gcc/fortran/trans-expr.c1
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gfortran.dg/power.f9011
4 files changed, 21 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 2d4a86a..1850b31 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,8 @@
+2004-08-16 Huang Chun <chunhuang73@hotmail.com>
+
+ * trans-expr.c (gfc_conv_power_op): Evaluate the expression before
+ expand.
+
2005-08-14 Asher Langton <langton2@llnl.gov>
* parse.c (match): Enclosed macro in do...while(0) and braces.
diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c
index 0e4e55d..69b2410 100644
--- a/gcc/fortran/trans-expr.c
+++ b/gcc/fortran/trans-expr.c
@@ -654,6 +654,7 @@ gfc_conv_power_op (gfc_se * se, gfc_expr * expr)
gfc_init_se (&lse, se);
gfc_conv_expr_val (&lse, expr->value.op.op1);
+ lse.expr = gfc_evaluate_now (lse.expr, &lse.pre);
gfc_add_block_to_block (&se->pre, &lse.pre);
gfc_init_se (&rse, se);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 7d05ac7..407be8c 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2005-08-16 Feng Wang <fengwang@nudt.edu.cn>
+
+ * gfortran.dg/power.f90: New test.
+
2005-08-16 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/23299
diff --git a/gcc/testsuite/gfortran.dg/power.f90 b/gcc/testsuite/gfortran.dg/power.f90
new file mode 100644
index 0000000..5f6b6c6
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/power.f90
@@ -0,0 +1,11 @@
+! { dg-do run }
+integer i
+i = 0
+if ( a (i) ** 5 .ne. 1) call abort ()
+contains
+function a (i)
+integer a, i
+i = i + 1
+a = i
+end function
+end