From: pdahorek@... Date: 2018-08-05T13:52:57+00:00 Subject: [ruby-core:88295] [Ruby trunk Bug#14964] [MJIT] missing builtin methods Issue #14964 has been updated by ahorek (Pavel Rosick��). I'm using MSYS1 that could be a problem, but I don't see any difference or a reason why it shouldn't work. You don't pass any additional flags in ruby loco, also you have some patches, but none of them seem to be related to this error. Maybe the environment is different somehow even if the gcc version is the same (I tried multiple versions). So if MSYS2 works, it's ok I think. Unless somebody knows where the problem is and it's simple to fix. My only concern is, if mjit requires sse4 specific instructions, it could be problem on platforms that do not support them? What about ARM? ---------------------------------------- Bug #14964: [MJIT] missing builtin methods https://bugs.ruby-lang.org/issues/14964#change-73319 * Author: ahorek (Pavel Rosick��) * Status: Open * Priority: Normal * Assignee: * Target version: * ruby -v: * Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN ---------------------------------------- I'm having trouble building Ruby 2.6 on Windows. this is the first error: ``` building rb_mjit_header.h rb_mjit_header.h updated building .ext/include/x64-mingw32/rb_mjit_min_header-2.6.0.h ./miniruby.exe -I../ruby_2_6/lib -I. -I.ext/common ../ruby_2_6/tool/transform_mjit_header.rb "x86_64-w64-mingw32-gcc " rb_mjit_header.h .ext/include/x64-mingw32/rb_mjit_min_header-2.6.0.h error in initial header file: C:/Users/pdaho/AppData/Local/Temp/20180805-10076-12b1zho.c:1: warning: "__STDC__" redefined #define __STDC__ 1 : note: this is the location of the previous definition C:/Users/pdaho/AppData/Local/Temp/20180805-10076-12b1zho.c:2: warning: "__STDC_VERSION__" redefined #define __STDC_VERSION__ 201710L : note: this is the location of the previous definition C:/Users/pdaho/AppData/Local/Temp/20180805-10076-12b1zho.c:3: warning: "__STDC_UTF_16__" redefined #define __STDC_UTF_16__ 1 : note: this is the location of the previous definition C:/Users/pdaho/AppData/Local/Temp/20180805-10076-12b1zho.c:4: warning: "__STDC_UTF_32__" redefined #define __STDC_UTF_32__ 1 : note: this is the location of the previous definition C:/Users/pdaho/AppData/Local/Temp/20180805-10076-12b1zho.c:5: warning: "__STDC_HOSTED__" redefined #define __STDC_HOSTED__ 1 : note: this is the location of the previous definition C:/Users/pdaho/AppData/Local/Temp/20180805-10076-12b1zho.c:29: warning: "__BIGGEST_ALIGNMENT__" redefined #define __BIGGEST_ALIGNMENT__ 32 : note: this is the location of the previous definition C:/Users/pdaho/AppData/Local/Temp/20180805-10076-12b1zho.c: In function '__crc32b': C:/Users/pdaho/AppData/Local/Temp/20180805-10076-12b1zho.c:6216:10: error: implicit declaration of function '__builtin_ia32_crc32qi'; did you mean '__builtin_ia32_rolqi'? [-Werror=implicit-function-declaration] return __builtin_ia32_crc32qi (__C, __V); ^~~~~~~~~~~~~~~~~~~~~~ __builtin_ia32_rolqi compilation terminated due to -Wfatal-errors. cc1.exe: some warnings being treated as errors make: *** [.ext/include/x64-mingw32/rb_mjit_min_header-2.6.0.h] Error 1 rm x64-msvcrt-ruby260.rc rake aborted! ``` I tried various CFLAGS, it looks like -mcrc32 helped ``` building rb_mjit_header.h rb_mjit_header.h updated building .ext/include/x64-mingw32/rb_mjit_min_header-2.6.0.h ./miniruby.exe -I../ruby_2_6/lib -I. -I.ext/common ../ruby_2_6/tool/transform_mjit_header.rb "x86_64-w64-mingw32-gcc " rb_mjit_header.h .ext/include/x64-mingw32/rb_mjit_min_header-2.6.0.h error in initial header file: C:/Users/pdaho/AppData/Local/Temp/20180805-1196-12y4d1j.c:1: warning: "__STDC__" redefined #define __STDC__ 1 : note: this is the location of the previous definition C:/Users/pdaho/AppData/Local/Temp/20180805-1196-12y4d1j.c:2: warning: "__STDC_VERSION__" redefined #define __STDC_VERSION__ 201710L : note: this is the location of the previous definition C:/Users/pdaho/AppData/Local/Temp/20180805-1196-12y4d1j.c:3: warning: "__STDC_UTF_16__" redefined #define __STDC_UTF_16__ 1 : note: this is the location of the previous definition C:/Users/pdaho/AppData/Local/Temp/20180805-1196-12y4d1j.c:4: warning: "__STDC_UTF_32__" redefined #define __STDC_UTF_32__ 1 : note: this is the location of the previous definition C:/Users/pdaho/AppData/Local/Temp/20180805-1196-12y4d1j.c:5: warning: "__STDC_HOSTED__" redefined #define __STDC_HOSTED__ 1 : note: this is the location of the previous definition C:/Users/pdaho/AppData/Local/Temp/20180805-1196-12y4d1j.c: In function '_mm_stream_sd': C:/Users/pdaho/AppData/Local/Temp/20180805-1196-12y4d1j.c:9317:3: error: implicit declaration of function '__builtin_ia32_movntsd'; did you mean '__builtin_ia32_movntpd'? [-Werror=implicit-function-declaration] __builtin_ia32_movntsd (__P, (__v2df) __Y); ^~~~~~~~~~~~~~~~~~~~~~ __builtin_ia32_movntpd compilation terminated due to -Wfatal-errors. cc1.exe: some warnings being treated as errors make: *** [.ext/include/x64-mingw32/rb_mjit_min_header-2.6.0.h] Error 1 rm x64-msvcrt-ruby260.rc rake aborted! ``` I tried to add -march=barcelona -mtune=barcelona -msse4a as the gcc documentation says, but it didn't help. It looks like these instruction are SSE4a specific and some headers are missing. rev. https://github.com/ruby/ruby/commit/88975c821c99b852959958e2934de68a45be15e6 Windows 10 64bit, x86_64-w64-mingw32 GCC 7.2.0 - http://downloads.sourceforge.net/project/mingw-w64/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/7.2.0/threads-win32/seh AMD FX-8300 8C I can compile the lastest Ruby 2.5.1 with the same options. Is it a known problem? Maybe GCC isn't supported on Windows yet? -- https://bugs.ruby-lang.org/ Unsubscribe: