From: "naruse (Yui NARUSE)" <naruse@...> Date: 2013-04-30T19:37:30+09:00 Subject: [ruby-core:54717] [ruby-trunk - Bug #8349] [mingw] adding -mfpmath=sse -msse2 causes segv on Windows 7 Issue #8349 has been updated by naruse (Yui NARUSE). ������������SSE ��������������������������������������������������������������������������������������������������� objdump ������������������������������������������������������������������������������������������ ---------------------------------------- Bug #8349: [mingw] adding -mfpmath=sse -msse2 causes segv on Windows 7 https://bugs.ruby-lang.org/issues/8349#change-39062 Author: h.shirosaki (Hiroshi Shirosaki) Status: Assigned Priority: Normal Assignee: naruse (Yui NARUSE) Category: Target version: current: 2.1.0 ruby -v: ruby 2.1.0dev (2013-04-30 trunk 40528) [i386-mingw32] Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN I tried -mfpmath=sse -msse2 with mingw on Windows 7 and got 2 segv while make test-all. Here is the detail. https://gist.github.com/anonymous/5487498 I don't know why these options causes segv, but adding volatile seems to fix this. Is this ok to commit? diff --git a/re.c b/re.c index fe7e390..5c96276 100644 --- a/re.c +++ b/re.c @@ -154,7 +154,8 @@ rb_memsearch_qs(const unsigned char *xs, long m, const unsigned char *ys, long n { const unsigned char *x = xs, *xe = xs + m; const unsigned char *y = ys; - VALUE i, qstable[256]; + volatile VALUE i; + VALUE qstable[256]; /* Preprocessing */ for (i = 0; i < 256; ++i) diff --git a/regcomp.c b/regcomp.c index 1373ff2..8c0e2b5 100644 --- a/regcomp.c +++ b/regcomp.c @@ -5306,7 +5306,7 @@ set_optimize_exact_info(regex_t* reg, OptExactInfo* e) static void set_optimize_map_info(regex_t* reg, OptMapInfo* m) { - int i; + volatile int i; for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++) reg->map[i] = m->map[i]; -- http://bugs.ruby-lang.org/