From: Feng Wang Date: Tue, 16 Aug 2005 12:58:46 +0000 (+0000) Subject: [multiple changes] X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=20fe2233a7169a95be493c7f0a335a3332711d8b;p=gcc.git [multiple changes] 2004-08-16 Huang Chun * trans-expr.c (gfc_conv_power_op): Evaluate the expression before expand. 2005-08-16 Feng Wang * gfortran.dg/power.f90: New test. From-SVN: r103155 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 2d4a86a8550..1850b3127b4 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2004-08-16 Huang Chun + + * trans-expr.c (gfc_conv_power_op): Evaluate the expression before + expand. + 2005-08-14 Asher Langton * 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 0e4e55dc69d..69b24109443 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 7d05ac7d2dc..407be8cd0ce 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2005-08-16 Feng Wang + + * gfortran.dg/power.f90: New test. + 2005-08-16 Jakub Jelinek 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 00000000000..5f6b6c6c3a3 --- /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