diff --git a/ChangeLog b/ChangeLog index c1c8c2f79c..615f6392ff 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +Mon May 30 15:44:16 2011 NARUSE, Yui + + * insns.def (opt_mult): as r31805, volatile it. + Without this, clang -O fails calculation. + + * numeric.c (fix_mul): ditto. + + * rational.c (f_imul): ditto. + Mon May 30 10:26:51 2011 NARUSE, Yui * numeric.c (int_pow): make sure to assign the result of x * z. diff --git a/insns.def b/insns.def index f75007dca2..d1158e6056 100644 --- a/insns.def +++ b/insns.def @@ -1445,13 +1445,14 @@ opt_mult { if (FIXNUM_2_P(recv, obj) && BASIC_OP_UNREDEFINED_P(BOP_MULT)) { - long a, b, c; + long a, b; a = FIX2LONG(recv); if (a == 0) { val = recv; } else { + volatile long c; b = FIX2LONG(obj); c = a * b; diff --git a/numeric.c b/numeric.c index 203bef9c65..40629f56b6 100644 --- a/numeric.c +++ b/numeric.c @@ -2322,7 +2322,7 @@ fix_mul(VALUE x, VALUE y) #if SIZEOF_LONG * 2 <= SIZEOF_LONG_LONG LONG_LONG d; #else - long c; + volatile long c; VALUE r; #endif diff --git a/rational.c b/rational.c index bd43a3617c..83ef5bf088 100644 --- a/rational.c +++ b/rational.c @@ -588,7 +588,7 @@ inline static VALUE f_imul(long a, long b) { VALUE r; - long c; + volatile long c; if (a == 0 || b == 0) return ZERO; diff --git a/version.h b/version.h index db207afbde..c072877c08 100644 --- a/version.h +++ b/version.h @@ -1,5 +1,5 @@ #define RUBY_VERSION "1.9.2" -#define RUBY_PATCHLEVEL 261 +#define RUBY_PATCHLEVEL 262 #define RUBY_VERSION_MAJOR 1 #define RUBY_VERSION_MINOR 9 #define RUBY_VERSION_TEENY 1