https://bugs.llvm.org/show_bug.cgi?id=37784
Bug ID: 37784
Summary: clang does not define __GNUC_GNU_INLINE__
Product: clang
Version: trunk
Hardware: PC
OS: Linux
Status: NEW
Severity: enhancement
Priority: P
Component: Frontend
Assignee: unassignedclangb...@nondot.org
Reporter: ndesaulni...@google.com
CC: lloz...@chromium.org, llvm-bugs@lists.llvm.org,
manojgu...@google.com, srhi...@google.com
In the linux kernel, we prefer to use gnu89 semantics for extern inline
functions. Writing a feature test for the attribute gnu_inline should be
straightforward, except that gcc did not get __has_attribute until 5.1.
Instead, older versions of gcc define __GNUC_GNU_INLINE__ if that attribute is
supported. It seems that clang does not, which makes writing a feature test a
little wonky:
#ifdef __GNUC_GNU_INLINE__
#define __gnu_inline __attribute__((gnu_inline))
#else
#define __gnu_inline
#warning "No gnu inline"
#endif
produces a warning in clang.
We can likely work around this via:
#ifndef __has_attribute // Optional of course.
#define __has_attribute(x) 0 // Compatibility with non-clang compilers.
#endif
#if defined(__GNUC_GNU_INLINE__) || __has_attribute(gnu_inline)
#define __gnu_inline __attribute__(gnu_inline)
#endif
--
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs