Project

General

Profile

Bug #6796 ยป patch-numeric.c.diff

kimuraw (Wataru Kimura), 07/26/2012 10:29 PM

View differences:

numeric.c (working copy)
VALUE x, y;
{
if (FIXNUM_P(y)) {
#ifdef __HP_cc
#if defined(__HP_cc) || defined(__clang__)
/* avoids an optimization bug of HP aC++/ANSI C B3910B A.06.05 [Jul 25 2005] */
volatile
#endif
......
y &= ~1;
do {
while (y % 2 == 0) {
long x2 = x * x;
volatile long x2 = x * x;
if (x2/x != x || !POSFIXABLE(x2)) {
VALUE v;
volatile VALUE v;
bignum:
v = rb_big_pow(rb_int2big(x), LONG2NUM(y));
if (z != 1) v = rb_big_mul(rb_int2big(neg ? -z : z), v);
......
y >>= 1;
}
{
long xz = x * z;
volatile long xz = x * z;
if (!POSFIXABLE(xz) || xz / x != z) {
goto bignum;
}
    (1-1/1)