* pack.c (pack_unpack, AVOID_CC_BUG): Very ugly workaround for

optimization bug of Oracle Solaris Studio 12.4 on Solaris
  with -xO4 optimization option. [Bug #11684]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52559 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
ngoto 2015-11-13 17:06:43 +00:00
Родитель f2b760e336
Коммит 238c6c5b89
2 изменённых файлов: 17 добавлений и 1 удалений

Просмотреть файл

@ -1,3 +1,9 @@
Sat Nov 14 01:53:52 2015 Naohisa Goto <ngotogenome@gmail.com>
* pack.c (pack_unpack, AVOID_CC_BUG): Very ugly workaround for
optimization bug of Oracle Solaris Studio 12.4 on Solaris
with -xO4 optimization option. [Bug #11684]
Fri Nov 13 23:00:23 2015 Hiroshi Shirosaki <h.shirosaki@gmail.com>
* configure.in: unset LD_PRELOAD on mingw. msys2 child processes

12
pack.c
Просмотреть файл

@ -1100,6 +1100,15 @@ hex2num(char c)
rb_ary_store(ary, RARRAY_LEN(ary)+tmp_len-1, Qnil); \
} while (0)
/* Workaround for Oracle Solaris Studio 12.4 C compiler optimization bug
* with "-xO4" optimization option.
*/
#if defined(__SUNPRO_C) && __SUNPRO_C == 0x5130
# define AVOID_CC_BUG volatile
#else
# define AVOID_CC_BUG
#endif
static VALUE
infected_str_new(const char *ptr, long len, VALUE str)
{
@ -1231,7 +1240,8 @@ pack_unpack(VALUE str, VALUE fmt)
char *p, *pend;
VALUE ary;
char type;
long len, tmp_len;
long len;
AVOID_CC_BUG long tmp_len;
int star;
#ifdef NATINT_PACK
int natint; /* native integer */