simplify.c (gfc_simplify_modulo): Don't clear before get result.
authorFeng Wang <fengwang@gcc.gnu.org>
Fri, 24 Jun 2005 03:23:04 +0000 (03:23 +0000)
committerFeng Wang <fengwang@gcc.gnu.org>
Fri, 24 Jun 2005 03:23:04 +0000 (03:23 +0000)
2005-06-24  Feng Wang  <fengwang@nudt.edu.cn>

        * simplify.c (gfc_simplify_modulo): Don't clear before get result.

2005-06-24  Feng Wang  <fengwang@nudt.edu.cn>

        * gfortran.dg/simplify_modulo.f90: New.

From-SVN: r101288

gcc/fortran/ChangeLog
gcc/fortran/simplify.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/simplify_modulo.f90 [new file with mode: 0644]

index 4badf66..99a232e 100644 (file)
@@ -1,4 +1,8 @@
-2005-06-22 Paul Brook  <paul@codesourcery.com>
+2005-06-24  Feng Wang  <fengwang@nudt.edu.cn>
+
+       * simplify.c (gfc_simplify_modulo): Don't clear before get result.
+
+2005-06-22  Paul Brook  <paul@codesourcery.com>
 
        PR fortran/21034
        * symbol.c (gfc_is_var_automatic): New function.
index 6797bca..fc3a9cb 100644 (file)
@@ -2231,12 +2231,11 @@ gfc_simplify_modulo (gfc_expr * a, gfc_expr * p)
       mpfr_div (quot, a->value.real, p->value.real, GFC_RND_MODE);
       mpfr_floor (iquot, quot);
       mpfr_mul (term, iquot, p->value.real, GFC_RND_MODE);
+      mpfr_sub (result->value.real, a->value.real, term, GFC_RND_MODE);
 
       mpfr_clear (quot);
       mpfr_clear (iquot);
       mpfr_clear (term);
-
-      mpfr_sub (result->value.real, a->value.real, term, GFC_RND_MODE);
       break;
 
     default:
index b96fc11..413f381 100644 (file)
@@ -1,3 +1,7 @@
+2005-06-24  Feng Wang  <fengwang@nudt.edu.cn>
+
+       * gfortran.dg/simplify_modulo.f90: New.
+
 2005-06-24  Jan Hubicka  <jh@suse.cz>
 
        * gcc.dg/tree-ssa/20040210-1.c: Fix for unit-at-a-time
diff --git a/gcc/testsuite/gfortran.dg/simplify_modulo.f90 b/gcc/testsuite/gfortran.dg/simplify_modulo.f90
new file mode 100644 (file)
index 0000000..550a3ad
--- /dev/null
@@ -0,0 +1,5 @@
+! { dg-do run }
+
+if (modulo (-8., -5.) .ne. -3.) call abort ()
+
+end