[#46807] [ruby-trunk - Bug #7625][Open] Arrayを継承したオブジェクトのcompactがArrayを返す — "mogya@... (Daisuke Furukawa)" <mogya@...>

19 messages 2012/12/26

[#46822] [ruby-trunk - Feature #7639][Open] More freedom for location of comments — "sawa (Tsuyoshi Sawada)" <sawadatsuyoshi@...>

14 messages 2012/12/30

[ruby-dev:46726] Re: some warnings compiled with gcc 4.6.3

From: Shugo Maeda <shugo@...>
Date: 2012-12-11 06:21:40 UTC
List: ruby-dev #46726
前田です。

2012年12月11日 15:01 Shugo Maeda <shugo@ruby-lang.org>:
> これ、GC対策なので設定だけして参照しないのは意図どおりなんですよね?
> 以下のように警告を抑制してしまってはまずいでしょうか?
>
> --- a/ext/bigdecimal/extconf.rb
> +++ b/ext/bigdecimal/extconf.rb
> @@ -3,4 +3,8 @@ require 'mkmf'
>  have_func("labs", "stdlib.h")
>  have_func("llabs", "stdlib.h")
>
> +if CONFIG["GCC"] == "yes"
> +  $warnflags += " -Wno-unused-but-set-variable"
> +end
> +
>  create_makefile('bigdecimal')

これだと古いgccでまずいのでこんな感じですかね

--- a/ext/bigdecimal/bigdecimal.c
+++ b/ext/bigdecimal/bigdecimal.c
@@ -59,8 +59,18 @@ static ID id_floor;
 static ID id_to_r;
 static ID id_eq;

+#define GCC_VERSION_SINCE(major, minor, patchlevel) \
+  (defined(__GNUC__) && !defined(__INTEL_COMPILER) && \
+   ((__GNUC__ > (major)) ||  \
+    (__GNUC__ == (major) && __GNUC_MINOR__ > (minor)) || \
+    (__GNUC__ == (major) && __GNUC_MINOR__ == (minor) &&
__GNUC_PATCHLEVEL__ >= (patchlevel))))
+
 /* MACRO's to guard objects from GC by keeping them in stack */
+#if GCC_VERSION_SINCE(4,3,0)
+#define ENTER(n) volatile VALUE vStack[n] __attribute__ ((unused));int iStack=0
+#else
 #define ENTER(n) volatile VALUE vStack[n];int iStack=0
+#endif
 #define PUSH(x)  vStack[iStack++] = (VALUE)(x);
 #define SAVE(p)  PUSH(p->obj);
 #define GUARD_OBJ(p,y) {p=y;SAVE(p);}

--
Shugo Maeda

In This Thread