Message ID | 40a84e8c-515c-6e29-d537-327c972a82d7@charter.net |
---|---|
State | New |
Headers | show |
On Tue, Oct 11, 2016 at 11:10:13AM -0700, Jerry DeLisle wrote: > > diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c > index bf60f747..18135d2f 100644 > --- a/gcc/fortran/simplify.c > +++ b/gcc/fortran/simplify.c > @@ -1768,11 +1768,13 @@ degrees_f (mpfr_t x, mp_rnd_t rnd_mode) > static void > radians_f (mpfr_t x, mp_rnd_t rnd_mode) > { > - mpfr_t tmp; > + mpfr_t tmp, modtmp; > mpfr_init (tmp); > + mpfr_init (modtmp); Delete modtmp. > > /* Set x = x % 360 to avoid offsets with large angles. */ > - mpfr_fmod_d (tmp, x, 360.0, rnd_mode); > + mpfr_set_d (modtmp, 360.0, GFC_RND_MODE); Change this to mpfr_set_ui(tmp, 360, rnd_mode); > + mpfr_fmod (tmp, x, modtmp, rnd_mode); Change this to mpfr_fmod (tmp, x, tmp, rnd_mode); > > /* Set x = x * pi. */ > mpfr_const_pi (tmp, rnd_mode); > @@ -1782,6 +1784,7 @@ radians_f (mpfr_t x, mp_rnd_t rnd_mode) > mpfr_div_d (x, x, 180.0, rnd_mode); > > mpfr_clear (tmp); > + mpfr_clear (modtmp); Delete this. > }
On Tue, Oct 11, 2016 at 11:10:13AM -0700, Jerry DeLisle wrote: > @@ -1782,6 +1784,7 @@ radians_f (mpfr_t x, mp_rnd_t rnd_mode) > mpfr_div_d (x, x, 180.0, rnd_mode); > I forgot to point out that the above should changed to mpfr_div_ui (x, x, 180, rnd_mode); In fact, any place where 180.0 and/or 360.0 should be chnage to the unsigned integer equivalent.
On Mon, 2016-10-11 08:43 AM, Markus Trippelsdorf <markus@trippelsdorf.de> wrote:
> This patch breaks bootstrap:
...
Sorry all!! was in a rush to get in the car this morning and made a
hasty commit. Fixed for r241001 (sorry Jerry, I was a little too
slow.)
---
Fritz Reese
On Tue, Oct 11, 2016 at 2:44 PM, Fritz Reese <fritzoreese@gmail.com> wrote: > On Mon, 2016-10-11 08:43 AM, Markus Trippelsdorf <markus@trippelsdorf.de> wrote: >> This patch breaks bootstrap: > ... > > Sorry all!! was in a rush to get in the car this morning and made a > hasty commit. Fixed for r241001 (sorry Jerry, I was a little too > slow.) > > --- > Fritz Reese
diff --git a/gcc/fortran/iresolve.c b/gcc/fortran/iresolve.c index f4f81b2e..4334522c 100644 --- a/gcc/fortran/iresolve.c +++ b/gcc/fortran/iresolve.c @@ -2702,6 +2702,7 @@ get_degrees (gfc_expr *rad) { gfc_expr *result, *factor; gfc_actual_arglist *mod_args; + mpfr_t tmp; gcc_assert (rad->ts.type == BT_REAL); diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c index bf60f747..18135d2f 100644 --- a/gcc/fortran/simplify.c +++ b/gcc/fortran/simplify.c @@ -1768,11 +1768,13 @@ degrees_f (mpfr_t x, mp_rnd_t rnd_mode) static void radians_f (mpfr_t x, mp_rnd_t rnd_mode) { - mpfr_t tmp; + mpfr_t tmp, modtmp; mpfr_init (tmp); + mpfr_init (modtmp); /* Set x = x % 360 to avoid offsets with large angles. */ - mpfr_fmod_d (tmp, x, 360.0, rnd_mode); + mpfr_set_d (modtmp, 360.0, GFC_RND_MODE); + mpfr_fmod (tmp, x, modtmp, rnd_mode); /* Set x = x * pi. */ mpfr_const_pi (tmp, rnd_mode); @@ -1782,6 +1784,7 @@ radians_f (mpfr_t x, mp_rnd_t rnd_mode) mpfr_div_d (x, x, 180.0, rnd_mode); mpfr_clear (tmp); + mpfr_clear (modtmp); }