From: "phasis68 (Heesob Park)" Date: 2012-04-29T23:06:32+09:00 Subject: [ruby-core:44758] [ruby-trunk - Bug #6370] NaNTest failed for Ruby 1.9.3 P194 Issue #6370 has been updated by phasis68 (Heesob Park). I can reproduce this issue on GCC 4.7.0 Mingw32. The optimization flag -Ofast is the root cause of this issue. Accoring to the manual, -Ofast is same to -O3 and -ffast-math. And -ffast-math sets -fno-math-errno, -funsafe-math-optimizations, -ffinite-math-only, -fno-rounding-math, -fno-signaling-nans and -fcx-limited-range. The flag -ffinite-math-only means "Allow optimizations for floating-point arithmetic that assume that arguments and results are not NaNs or +-Infs." So the nan test is not worked as expected. The workaround is adding -fno-finite-math-only in case of -Ofast flag. ---------------------------------------- Bug #6370: NaNTest failed for Ruby 1.9.3 P194 https://bugs.ruby-lang.org/issues/6370#change-26319 Author: raylinn@gmail.com (ray linn) Status: Assigned Priority: Normal Assignee: luislavena (Luis Lavena) Category: Target version: ruby -v: ruby 1.9.3p194 (2012-04-20) [x64-mingw32] The Ruby 1.9.3 is compibled by GCC 4.7.0 (MinGW64) under Windows64. Configure line is as following: .configure --build=x86_64-w64-mingw32 CFLAGS="-Ofast -mieee-fp -I/usr/local/include" CPPFLAGS="-Ofast -mieee-fp -I/usr/local/include" LDFLAGS="-L/usr/local/lib" When compiled complete, run make test, it reports: not ok float 15 -- C:/msys/1.0/home/beta/ruby-1.9.3-p194/sample/test.rb:1410:in `nan_test' not ok float 20 -- C:/msys/1.0/home/beta/ruby-1.9.3-p194/sample/test.rb:1410:in `nan_test' not ok float 25 -- C:/msys/1.0/home/beta/ruby-1.9.3-p194/sample/test.rb:1410:in `nan_test' not ok float 30 -- C:/msys/1.0/home/beta/ruby-1.9.3-p194/sample/test.rb:1410:in `nan_test' not ok float 35 -- C:/msys/1.0/home/beta/ruby-1.9.3-p194/sample/test.rb:1410:in `nan_test' not ok float 40 -- C:/msys/1.0/home/beta/ruby-1.9.3-p194/sample/test.rb:1410:in `nan_test' not ok float 45 -- C:/msys/1.0/home/beta/ruby-1.9.3-p194/sample/test.rb:1410:in `nan_test' not ok/test: 903 failed 7 marked these 7 lines could pass the test #nan_test(nan, 0) #nan_test(nan, 1) #nan_test(nan, -1) #nan_test(nan, 1000) #nan_test(nan, -1000) #nan_test(nan, 1_000_000_000_000) #nan_test(nan, -1_000_000_000_000) -- http://bugs.ruby-lang.org/