From a2bdefc8fb5ad56bfcfd98a60698e7a6f1945b73 Mon Sep 17 00:00:00 2001 From: schwab Date: Thu, 17 Jul 2014 08:40:15 +0000 Subject: [PATCH] Summary: Generate canonical infinity for the Motorola extended real format * real.c (encode_ieee_extended_motorola): Clear integer bit in the infinity format. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@212744 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++++ gcc/real.c | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ee335f2176e..c1b2a285886 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2014-07-17 Andreas Schwab + + * real.c (encode_ieee_extended_motorola): Clear integer bit in the + infinity format. + 2014-07-17 Richard Biener PR rtl-optimization/61801 diff --git a/gcc/real.c b/gcc/real.c index 231fc96c932..1c2f709c9d0 100644 --- a/gcc/real.c +++ b/gcc/real.c @@ -3481,6 +3481,11 @@ encode_ieee_extended_motorola (const struct real_format *fmt, long *buf, long intermed[3]; encode_ieee_extended (fmt, intermed, r); + if (r->cl == rvc_inf) + /* For infinity clear the explicit integer bit again, so that the + format matches the canonical infinity generated by the FPU. */ + intermed[1] = 0; + /* Motorola chips are assumed always to be big-endian. Also, the padding in a Motorola extended real goes between the exponent and the mantissa. At this point the mantissa is entirely within -- 2.11.4.GIT