From: pdahorek@... Date: 2018-08-06T23:01:00+00:00 Subject: [ruby-core:88316] [Ruby trunk Bug#14964] [MJIT] missing builtin methods Issue #14964 has been updated by ahorek (Pavel Rosick��). File diff_msys2.diff added File rb_mjit_header_msys2.zip added ARCH_FLAG="-march=barcelona" works, but it isn't propagated to CFLAGS, so it doesn't have the desired effect. I think setting CFLAGS directly shouln't be a problem. It looks like it doesn't work only on MSYS1. I did the same on Linux and MSYS2 (gcc 8.2.0) without any problem. An interesting part is that on MSYS2, mjit header doesn't contain ```#define __SSE4A__ 1``` ``` irb(main):001:0> RbConfig::CONFIG['CFLAGS'] => "-march=barcelona -mtune=barcelona -O3 -pipe" ``` maybe march option should be ignored when building the mjit header and for some reason MSYS1 used it? MSYS1 isn't supported anymore and if it works properly on MSYS2, this can be closed. thanks @k0kubun ---------------------------------------- Bug #14964: [MJIT] missing builtin methods https://bugs.ruby-lang.org/issues/14964#change-73346 * Author: ahorek (Pavel Rosick��) * Status: Open * Priority: Normal * Assignee: k0kubun (Takashi Kokubun) * 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? ---Files-------------------------------- mjitheaders.zip (1.31 MB) diff.diff (3.65 KB) rb_mjit_header_msys2.zip (673 KB) diff_msys2.diff (1.75 MB) -- https://bugs.ruby-lang.org/ Unsubscribe: