зеркало из https://github.com/github/ruby.git
RBIMPL_ATTR_NOALIAS: not until LLVM 12
I observed CI failures. https://github.com/ruby/ruby/actions/runs/1240165911 It turns out that RBIMPL_ATTR_NOALIAS was not mature before. Skip using it for old clang, and everything work as expected.
This commit is contained in:
Родитель
ecaf3a391d
Коммит
0dea31c437
|
@ -46,10 +46,21 @@
|
|||
* that has to be passed to the function as a pointer. ::VALUE -taking
|
||||
* functions thus cannot be attributed as such.
|
||||
*/
|
||||
#include "ruby/internal/compiler_since.h"
|
||||
#include "ruby/internal/has/declspec_attribute.h"
|
||||
|
||||
/** Wraps (or simulates) `__declspec((noalias))` */
|
||||
#if RBIMPL_HAS_DECLSPEC_ATTRIBUTE(noalias)
|
||||
#if RBIMPL_COMPILER_BEFORE(Clang, 12, 0, 0)
|
||||
# /*
|
||||
# * `::llvm::Attribute::ArgMemOnly` was buggy before. Maybe because nobody
|
||||
# * actually seriously used it. It seems they somehow mitigated the situation
|
||||
# * in LLVM 12. Still not found the exact changeset which fiexed the
|
||||
# * attribute, though.
|
||||
# *
|
||||
# * :FIXME: others (armclang, xlclang, ...) can also be affected?
|
||||
# */
|
||||
# define RBIMPL_ATTR_NOALIAS() /* void */
|
||||
#elif RBIMPL_HAS_DECLSPEC_ATTRIBUTE(noalias)
|
||||
# define RBIMPL_ATTR_NOALIAS() __declspec(noalias)
|
||||
#else
|
||||
# define RBIMPL_ATTR_NOALIAS() /* void */
|
||||
|
|
Загрузка…
Ссылка в новой задаче