]> sourceware.org Git - glibc.git/commit
Make __extern_always_inline usable on clang++ again
authorSiddhesh Poyarekar <siddhesh@redhat.com>
Tue, 16 Sep 2014 16:46:01 +0000 (22:16 +0530)
committerSiddhesh Poyarekar <siddhesh@redhat.com>
Tue, 16 Sep 2014 16:46:01 +0000 (22:16 +0530)
commit602f80ec8b966cfad3b61914cbe14ee606cedf6e
treed145754de1cdfebb3d9acec2a37890ddb9218a66
parent545583d664b64ff234b99aca0d85e99c8a55808f
Make __extern_always_inline usable on clang++ again

The fix for BZ #17266 (884ddc5081278f488ef8cd49951f41cfdbb480ce)
removed changes that had gone into cdefs.h to make
__extern_always_inline usable with clang++.  This patch adds back
support for clang to detect if GNU inlining semantics are available,
this time without breaking the gcc use case.  The check put here is
based on the earlier patch and assertion[1] that checking if
__GNUC_STDC_INLINE__ or __GNUC_GNU_INLINE__ is defined is sufficient
to determine that clang++ suports GNU inlining semantics.

Tested with a simple program that builds with __extern_always_inline
with the patch and fails compilation without it.

 #include <stdio.h>
 #include <sys/cdefs.h>

extern void foo_alias (void) __asm ("foo");

__extern_always_inline void
foo (void)
{
  puts ("hi oh world!");
  return foo_alias ();
}

void
foo_alias (void)
{
  puts ("hell oh world");
}

int
main ()
{
  foo ();
}

[1] https://sourceware.org/ml/libc-alpha/2012-12/msg00306.html

[BZ #17266]
* misc/sys/cdefs.h: Define __extern_always_inline for clang
4.2 and newer.
ChangeLog
misc/sys/cdefs.h
This page took 0.040645 seconds and 5 git commands to generate.