diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2017-02-16 23:21:58 +0900 |
|---|---|---|
| committer | GitHub <[email protected]> | 2017-02-16 23:21:58 +0900 |
| commit | 4dae285325b4bb44904fc45ac80797dae3f62c9b (patch) | |
| tree | c4966028ba696ce87d76585a927b18284f897174 | |
| parent | 097da2399ae9dc0a8db1761feae7d1921b7a89ad (diff) | |
| parent | bd2b76ea85c5d949ded48f4c117bda4074b675aa (diff) | |
| download | mruby-4dae285325b4bb44904fc45ac80797dae3f62c9b.tar.gz mruby-4dae285325b4bb44904fc45ac80797dae3f62c9b.zip | |
Merge pull request #3457 from dabroz/fix-clang-32-64
Build fix for 32-bit clang 3.8/3.9 with MRB_INT64
| -rw-r--r-- | include/mruby/numeric.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/include/mruby/numeric.h b/include/mruby/numeric.h index e4086487e..36489b1ce 100644 --- a/include/mruby/numeric.h +++ b/include/mruby/numeric.h @@ -42,6 +42,16 @@ mrb_value mrb_num_div(mrb_state *mrb, mrb_value x, mrb_value y); # define MRB_HAVE_TYPE_GENERIC_CHECKED_ARITHMETIC_BUILTINS #endif +// Clang 3.8 and 3.9 have problem compiling mruby in 32-bit mode, when MRB_INT64 is set +// because of missing __mulodi4 and similar functions in its runtime. We need to use custom +// implementation for them. +#ifdef MRB_HAVE_TYPE_GENERIC_CHECKED_ARITHMETIC_BUILTINS +#if defined(__clang__) && (__clang_major__ == 3) && (__clang_minor__ >= 8) && \ + defined(MRB_32BIT) && defined(MRB_INT64) +#undef MRB_HAVE_TYPE_GENERIC_CHECKED_ARITHMETIC_BUILTINS +#endif +#endif + #ifdef MRB_HAVE_TYPE_GENERIC_CHECKED_ARITHMETIC_BUILTINS #ifndef MRB_WORD_BOXING |
