Issue #6971 has been reported by vo.x (Vit Ondruch). ---------------------------------------- Bug #6971: r36832 breaks test/mkmf/test_convertible.rb https://bugs.ruby-lang.org/issues/6971 Author: vo.x (Vit Ondruch) Status: Open Priority: Normal Assignee: Category: Target version: ruby -v: ruby 2.0.0dev (2012-09-03 trunk 36887) [x86_64-linux] # make test-all TESTS=test/mkmf/test_convertible.rb CC = gcc LD = ld LDSHARED = gcc -shared CFLAGS = -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -mtune=generic -fPIC -m64 XCFLAGS = -include ruby/config.h -include ruby/missing.h -D_FORTIFY_SOURCE=2 -fstack-protector -fno-strict-overflow -fvisibility=hidden -DRUBY_EXPORT CPPFLAGS = -I. -I.ext/include/x86_64-linux -I./include -I. DLDFLAGS = -Wl,-soname,libruby.so.2.0 -fstack-protector -m64 SOLIBS = -lpthread -lrt -ldl -lcrypt -lm ./miniruby -I./lib -I. -I.ext/common ./tool/runruby.rb --extout=.ext -- --disable-gems "./test/runner.rb" --ruby="./miniruby -I./lib -I. -I.ext/common ./tool/runruby.rb --extout=.ext -- --disable-gems" test/mkmf/test_convertible.rb Run options: "--ruby=./miniruby -I./lib -I. -I.ext/common ./tool/runruby.rb --extout=.ext -- --disable-gems" # Running tests: [1/2] TestMkmf::TestConvertible#test_typeof_builtin = 0.42 s 1) Failure: test_typeof_builtin(TestMkmf::TestConvertible) [/builddir/build/BUILD/ruby-2.0.0-r36887/test/mkmf/test_convertible.rb:8]: convertible_int: checking for convertible type of short... -------------------- short -------------------- convertible_int: checking for convertible type of int... -------------------- int -------------------- convertible_int: checking for convertible type of long... -------------------- long -------------------- convertible_int: checking for convertible type of signed short... -------------------- failed In file included from /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby.h:33:0, from conftest.c:1: /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby/ruby.h: In function ???rb_float_value???: /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby/ruby.h:746:6: warning: suggest parentheses around arithmetic in operand of ???|??? [-Wparentheses] /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby/ruby.h:746:6: warning: suggest parentheses around arithmetic in operand of ???|??? [-Wparentheses] /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby/ruby.h:746:6: warning: suggest parentheses around arithmetic in operand of ???|??? [-Wparentheses] checked program was: /* begin */ 1: #include "ruby.h" 2: 3: int main(void) {return 0;} /* end */ In file included from /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby.h:33:0, from conftest.c:1: /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby/ruby.h: In function ???rb_float_value???: /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby/ruby.h:746:6: warning: suggest parentheses around arithmetic in operand of ???|??? [-Wparentheses] /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby/ruby.h:746:6: warning: suggest parentheses around arithmetic in operand of ???|??? [-Wparentheses] /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby/ruby.h:746:6: warning: suggest parentheses around arithmetic in operand of ???|??? [-Wparentheses] checked program was: /* begin */ 1: #include "ruby.h" 2: 3: typedef signed short rbcv_typedef_; 4: 5: /*top*/ 6: int conftest_const[((rbcv_typedef_)-1 < 0) ? 1 : -1]; /* end */ In file included from /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby.h:33:0, from conftest.c:1: /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby/ruby.h: In function ???rb_float_value???: /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby/ruby.h:746:6: error: suggest parentheses around arithmetic in operand of ???|??? [-Werror=parentheses] /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby/ruby.h:746:6: error: suggest parentheses around arithmetic in operand of ???|??? [-Werror=parentheses] /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby/ruby.h:746:6: error: suggest parentheses around arithmetic in operand of ???|??? [-Werror=parentheses] conftest.c: At top level: conftest.c:6:12: error: conflicting types for ???foo??? conftest.c:5:22: note: previous declaration of ???foo??? was here cc1: all warnings being treated as errors checked program was: /* begin */ 1: #include "ruby.h" 2: 3: typedef signed short rbcv_typedef_; 4: 5: extern rbcv_typedef_ foo(); 6: extern int foo(); /* end */ In file included from /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby.h:33:0, from conftest.c:1: /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby/ruby.h: In function ???rb_float_value???: /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby/ruby.h:746:6: error: suggest parentheses around arithmetic in operand of ???|??? [-Werror=parentheses] /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby/ruby.h:746:6: error: suggest parentheses around arithmetic in operand of ???|??? [-Werror=parentheses] /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby/ruby.h:746:6: error: suggest parentheses around arithmetic in operand of ???|??? [-Werror=parentheses] cc1: all warnings being treated as errors checked program was: /* begin */ 1: #include "ruby.h" 2: 3: typedef signed short rbcv_typedef_; 4: 5: extern rbcv_typedef_ foo(); 6: extern short foo(); /* end */ In file included from /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby.h:33:0, from conftest.c:1: /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby/ruby.h: In function ???rb_float_value???: /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby/ruby.h:746:6: error: suggest parentheses around arithmetic in operand of ???|??? [-Werror=parentheses] /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby/ruby.h:746:6: error: suggest parentheses around arithmetic in operand of ???|??? [-Werror=parentheses] /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby/ruby.h:746:6: error: suggest parentheses around arithmetic in operand of ???|??? [-Werror=parentheses] conftest.c: At top level: conftest.c:6:13: error: conflicting types for ???foo??? conftest.c:5:22: note: previous declaration of ???foo??? was here cc1: all warnings being treated as errors checked program was: /* begin */ 1: #include "ruby.h" 2: 3: typedef signed short rbcv_typedef_; 4: 5: extern rbcv_typedef_ foo(); 6: extern long foo(); /* end */ In file included from /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby.h:33:0, from conftest.c:1: /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby/ruby.h: In function ???rb_float_value???: /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby/ruby.h:746:6: error: suggest parentheses around arithmetic in operand of ???|??? [-Werror=parentheses] /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby/ruby.h:746:6: error: suggest parentheses around arithmetic in operand of ???|??? [-Werror=parentheses] /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby/ruby.h:746:6: error: suggest parentheses around arithmetic in operand of ???|??? [-Werror=parentheses] conftest.c: At top level: conftest.c:6:18: error: conflicting types for ???foo??? conftest.c:5:22: note: previous declaration of ???foo??? was here cc1: all warnings being treated as errors checked program was: /* begin */ 1: #include "ruby.h" 2: 3: typedef signed short rbcv_typedef_; 4: 5: extern rbcv_typedef_ foo(); 6: extern long long foo(); /* end */ -------------------- . <"short"> expected but was <nil>. [2/2] TestMkmf::TestConvertible#test_typeof_typedef = 0.33 s 2) Failure: test_typeof_typedef(TestMkmf::TestConvertible) [/builddir/build/BUILD/ruby-2.0.0-r36887/test/mkmf/test_convertible.rb:21]: convertible_int: checking for convertible type of test1_t... -------------------- failed In file included from /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby.h:33:0, from conftest.c:1: /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby/ruby.h: In function ???rb_float_value???: /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby/ruby.h:746:6: warning: suggest parentheses around arithmetic in operand of ???|??? [-Wparentheses] /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby/ruby.h:746:6: warning: suggest parentheses around arithmetic in operand of ???|??? [-Wparentheses] /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby/ruby.h:746:6: warning: suggest parentheses around arithmetic in operand of ???|??? [-Wparentheses] checked program was: /* begin */ 1: #include "ruby.h" 2: 3: #include <confdefs.h> 4: typedef test1_t rbcv_typedef_; 5: 6: /*top*/ 7: int conftest_const[((rbcv_typedef_)-1 < 0) ? 1 : -1]; /* end */ In file included from /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby.h:33:0, from conftest.c:1: /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby/ruby.h: In function ???rb_float_value???: /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby/ruby.h:746:6: error: suggest parentheses around arithmetic in operand of ???|??? [-Werror=parentheses] /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby/ruby.h:746:6: error: suggest parentheses around arithmetic in operand of ???|??? [-Werror=parentheses] /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby/ruby.h:746:6: error: suggest parentheses around arithmetic in operand of ???|??? [-Werror=parentheses] conftest.c: At top level: conftest.c:8:12: error: conflicting types for ???foo??? conftest.c:7:22: note: previous declaration of ???foo??? was here cc1: all warnings being treated as errors checked program was: /* begin */ 1: #include "ruby.h" 2: 3: #include <confdefs.h> 4: 5: typedef test1_t rbcv_typedef_; 6: 7: extern rbcv_typedef_ foo(); 8: extern int foo(); /* end */ In file included from /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby.h:33:0, from conftest.c:1: /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby/ruby.h: In function ???rb_float_value???: /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby/ruby.h:746:6: error: suggest parentheses around arithmetic in operand of ???|??? [-Werror=parentheses] /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby/ruby.h:746:6: error: suggest parentheses around arithmetic in operand of ???|??? [-Werror=parentheses] /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby/ruby.h:746:6: error: suggest parentheses around arithmetic in operand of ???|??? [-Werror=parentheses] cc1: all warnings being treated as errors checked program was: /* begin */ 1: #include "ruby.h" 2: 3: #include <confdefs.h> 4: 5: typedef test1_t rbcv_typedef_; 6: 7: extern rbcv_typedef_ foo(); 8: extern short foo(); /* end */ In file included from /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby.h:33:0, from conftest.c:1: /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby/ruby.h: In function ???rb_float_value???: /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby/ruby.h:746:6: error: suggest parentheses around arithmetic in operand of ???|??? [-Werror=parentheses] /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby/ruby.h:746:6: error: suggest parentheses around arithmetic in operand of ???|??? [-Werror=parentheses] /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby/ruby.h:746:6: error: suggest parentheses around arithmetic in operand of ???|??? [-Werror=parentheses] conftest.c: At top level: conftest.c:8:13: error: conflicting types for ???foo??? conftest.c:7:22: note: previous declaration of ???foo??? was here cc1: all warnings being treated as errors checked program was: /* begin */ 1: #include "ruby.h" 2: 3: #include <confdefs.h> 4: 5: typedef test1_t rbcv_typedef_; 6: 7: extern rbcv_typedef_ foo(); 8: extern long foo(); /* end */ In file included from /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby.h:33:0, from conftest.c:1: /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby/ruby.h: In function ???rb_float_value???: /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby/ruby.h:746:6: error: suggest parentheses around arithmetic in operand of ???|??? [-Werror=parentheses] /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby/ruby.h:746:6: error: suggest parentheses around arithmetic in operand of ???|??? [-Werror=parentheses] /builddir/build/BUILD/ruby-2.0.0-r36887/include/ruby/ruby.h:746:6: error: suggest parentheses around arithmetic in operand of ???|??? [-Werror=parentheses] conftest.c: At top level: conftest.c:8:18: error: conflicting types for ???foo??? conftest.c:7:22: note: previous declaration of ???foo??? was here cc1: all warnings being treated as errors checked program was: /* begin */ 1: #include "ruby.h" 2: 3: #include <confdefs.h> 4: 5: typedef test1_t rbcv_typedef_; 6: 7: extern rbcv_typedef_ foo(); 8: extern long long foo(); /* end */ -------------------- . <"short"> expected but was <nil>. Finished tests in 0.757810s, 2.6392 tests/s, 6.5980 assertions/s. 2 tests, 5 assertions, 2 failures, 0 errors, 0 skips ruby -v: ruby 2.0.0dev (2012-09-03 trunk 36887) [x86_64-linux] make: *** [yes-test-all] Error 2 It works just fine when reverting the patch. Testing with Fedora Rawhide. # rpm -q gcc gcc-4.7.1-7.fc19.x86_64 -- http://bugs.ruby-lang.org/