diff options
author | Koichi Sasada <ko1@atdot.net> | 2020-05-29 13:50:58 +0900 |
---|---|---|
committer | Koichi Sasada <ko1@atdot.net> | 2020-05-29 13:50:58 +0900 |
commit | d300a734414ef6de7e8eb563b7cc4389c455ed08 (patch) | |
tree | 8bf74eeff069a67906551823dd8e345cc3bb4409 /include/ruby/assert.h | |
parent | 03d7f3cdb2550449bcf1c0c1b5529b5197dfb418 (diff) | |
download | ruby-d300a734414ef6de7e8eb563b7cc4389c455ed08.tar.gz |
RUBY_ASSERT_NOASSUME
If __builtin_assume() is enables and RUBY_DEBUG=0, RUBY_ASSERT(expr)
will be compiled to __builtin_assume(expr) and compiler can assume
expr is true and apply aggressive optimizations. However we observed
doubtful behavior because of compiler optimizations, we introduce
new macro RUBY_ASSERT_NOASSUME to disable __builtin_assume().
With this macro, we can try without __builtin_assume().
Diffstat (limited to 'include/ruby/assert.h')
-rw-r--r-- | include/ruby/assert.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/include/ruby/assert.h b/include/ruby/assert.h index 5b435da8b9..8967973bf8 100644 --- a/include/ruby/assert.h +++ b/include/ruby/assert.h @@ -101,7 +101,7 @@ RBIMPL_SYMBOL_EXPORT_END() # define RBIMPL_ASSERT_OR_ASSUME(_) RUBY_ASSERT(_) #elif defined(RBIMPL_HAVE___ASSUME) # define RBIMPL_ASSERT_OR_ASSUME(_) RBIMPL_ASSUME(_) -#elif RBIMPL_HAS_BUILTIN(__builtin_assume) && RBIMPL_COMPILER_SINCE(Clang, 7, 0, 0) +#elif !RUBY_ASSERT_NOASSUME && RBIMPL_HAS_BUILTIN(__builtin_assume) && RBIMPL_COMPILER_SINCE(Clang, 7, 0, 0) # define RBIMPL_ASSERT_OR_ASSUME(_) RBIMPL_ASSUME(_) #else # define RBIMPL_ASSERT_OR_ASSUME(_) /* void */ |