From 5ba02ca6478e2a90d3b314642be17e0d27d84898 Mon Sep 17 00:00:00 2001 From: Geoff Keating Date: Sun, 14 May 2000 21:18:13 +0000 Subject: [PATCH] optabs.c (expand_float): Don't allow mode widening that causes double rounding. * optabs.c (expand_float): Don't allow mode widening that causes double rounding. From-SVN: r33894 --- gcc/ChangeLog | 5 ++++- gcc/optabs.c | 4 ++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 15e3633814f..169ee51a584 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,4 +1,7 @@ -2000-05-13 Geoffrey Keating +2000-05-14 Geoffrey Keating + + * optabs.c (expand_float): Don't allow mode widening that causes + double rounding. * invoke.texi (RS/6000 and PowerPC Options): Update -m64/-m32 flags to their current names -maix64 and -maix32. diff --git a/gcc/optabs.c b/gcc/optabs.c index 0cfe0649d6f..9f9871581aa 100644 --- a/gcc/optabs.c +++ b/gcc/optabs.c @@ -3888,6 +3888,10 @@ expand_float (to, from, unsignedp) { int doing_unsigned = unsignedp; + if (fmode != GET_MODE (to) + && significand_size (fmode) < GET_MODE_BITSIZE (GET_MODE (from))) + continue; + icode = can_float_p (fmode, imode, unsignedp); if (icode == CODE_FOR_nothing && imode != GET_MODE (from) && unsignedp) icode = can_float_p (fmode, imode, 0), doing_unsigned = 0; -- 2.30.2