[patch, libgfortran] PR48767 Rounding Up followup patch
Jerry DeLisle
jvdelisle@frontier.com
Sat Apr 30 15:32:00 GMT 2011
On 04/30/2011 12:56 AM, Janne Blomqvist wrote:
> On Sat, Apr 30, 2011 at 04:33, Jerry DeLisle<jvdelisle@frontier.com> wrote:
>> Hi,
>>
>> The attached patch does some cleanup and a check for trailing zeros to
>> decide whether or not to round.
>>
>> I have added the additional test cases posted on the bugzilla to the
>> existing test case round_3.f08.
>>
>> Regression tested on x86-64.
>>
>> OK for trunk and then I will back port the whole enchilada to 4.6.1 in a few
>> weeks. Please consider the starting point of the zero scan carefully. I
>> have not convinced myself that the d * p covers all cases, but it works for
>> all cases I have tried.
>
> I'm a bit suspicious about that as well:
>
> + /* Scan for trailing zeros to see if we really need to round it. */
> + for(i = 1 + d * p ; i< ndigits; i++)
> + {
> + if (digits[i] != '0')
> + goto do_rnd;
> + }
> + goto skip;
>
I must have been tired yesterday. Revised chunk. Regression tests OK.
@@ -233,7 +231,13 @@
if (sign_bit)
goto skip;
rchar = '0';
- break;
+ /* Scan for trailing zeros to see if we really need to round it. */
+ for(i = nbefore + nafter; i < ndigits; i++)
+ {
+ if (digits[i] != '0')
+ goto do_rnd;
+ }
+ goto skip;
case ROUND_DOWN:
if (!sign_bit)
goto skip;
OK for trunk?
Jerry
More information about the Gcc-patches
mailing list