summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeoff Keating <geoffk@cygnus.com>2000-05-14 21:18:13 +0000
committerGeoffrey Keating <geoffk@gcc.gnu.org>2000-05-14 21:18:13 +0000
commit5ba02ca6478e2a90d3b314642be17e0d27d84898 (patch)
treedf6d96007a36c9c9bd1d22176cfd5ce6465ced5f
parentfa06229fde4a5653017dba04af680ec3f398cd4d (diff)
downloadgcc-5ba02ca6478e2a90d3b314642be17e0d27d84898.tar.gz
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
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/optabs.c4
2 files changed, 8 insertions, 1 deletions
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 <geoffk@cygnus.com>
+2000-05-14 Geoffrey Keating <geoffk@cygnus.com>
+
+ * 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;