[前][次][番号順一覧][スレッド一覧]

ruby-changes:24495

From: knu <ko1@a...>
Date: Fri, 27 Jul 2012 13:12:24 +0900 (JST)
Subject: [ruby-changes:24495] knu:r36546 (ruby_1_8): * numeric.c (int_pow, fix_mul): Avoid optimization bugs of

knu	2012-07-27 13:12:08 +0900 (Fri, 27 Jul 2012)

  New Revision: 36546

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=36546

  Log:
    * numeric.c (int_pow, fix_mul): Avoid optimization bugs of
      clang.  Submitted by Wataru Kimura [Bug #6796].

  Modified files:
    branches/ruby_1_8/ChangeLog
    branches/ruby_1_8/numeric.c

Index: ruby_1_8/numeric.c
===================================================================
--- ruby_1_8/numeric.c	(revision 36545)
+++ ruby_1_8/numeric.c	(revision 36546)
@@ -2162,7 +2162,7 @@
     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
@@ -2320,9 +2320,9 @@
     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);
@@ -2332,7 +2332,7 @@
 	    y >>= 1;
 	}
 	{
-	    long xz = x * z;
+	    volatile long xz = x * z;
 	    if (!POSFIXABLE(xz) || xz / x != z) {
 		goto bignum;
 	    }
Index: ruby_1_8/ChangeLog
===================================================================
--- ruby_1_8/ChangeLog	(revision 36545)
+++ ruby_1_8/ChangeLog	(revision 36546)
@@ -1,3 +1,8 @@
+Fri Jul 27 13:04:31 2012  Akinori MUSHA  <knu@i...>
+
+	* numeric.c (int_pow, fix_mul): Avoid optimization bugs of
+	  clang.  Submitted by Wataru Kimura [Bug #6796].
+
 Fri Jun 29 21:19:36 2012  Nobuyoshi Nakada  <nobu@r...>
 
 	* eval.c (stack_extend): prevent ALLOCA_N, which reserves a memory

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]