xref: /minix3/external/bsd/llvm/dist/clang/test/CodeGen/pr9614.c (revision f4a2713ac843a11c696ec80c0a5e3e5d80b4d338)
1*f4a2713aSLionel Sambuc // RUN: %clang_cc1 -triple x86_64-pc-linux -emit-llvm %s -o - | FileCheck %s
2*f4a2713aSLionel Sambuc 
3*f4a2713aSLionel Sambuc extern void foo_alias (void) __asm ("foo");
foo(void)4*f4a2713aSLionel Sambuc inline void foo (void) {
5*f4a2713aSLionel Sambuc   return foo_alias ();
6*f4a2713aSLionel Sambuc }
7*f4a2713aSLionel Sambuc extern void bar_alias (void) __asm ("bar");
bar(void)8*f4a2713aSLionel Sambuc inline __attribute__ ((__always_inline__)) void bar (void) {
9*f4a2713aSLionel Sambuc   return bar_alias ();
10*f4a2713aSLionel Sambuc }
11*f4a2713aSLionel Sambuc extern char *strrchr_foo (const char *__s, int __c)  __asm ("strrchr");
strrchr_foo(const char * __s,int __c)12*f4a2713aSLionel Sambuc extern inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * strrchr_foo (const char *__s, int __c)  {
13*f4a2713aSLionel Sambuc   return __builtin_strrchr (__s, __c);
14*f4a2713aSLionel Sambuc }
f(void)15*f4a2713aSLionel Sambuc void f(void) {
16*f4a2713aSLionel Sambuc   foo();
17*f4a2713aSLionel Sambuc   bar();
18*f4a2713aSLionel Sambuc   strrchr_foo("", '.');
19*f4a2713aSLionel Sambuc }
20*f4a2713aSLionel Sambuc 
21*f4a2713aSLionel Sambuc // CHECK-LABEL: define void @f()
22*f4a2713aSLionel Sambuc // CHECK: call void @foo()
23*f4a2713aSLionel Sambuc // CHECK-NEXT: call void @bar()
24*f4a2713aSLionel Sambuc // CHECK-NEXT: call i8* @strrchr(
25*f4a2713aSLionel Sambuc // CHECK-NEXT: ret void
26*f4a2713aSLionel Sambuc 
27*f4a2713aSLionel Sambuc // CHECK: declare void @foo()
28*f4a2713aSLionel Sambuc // CHECK: declare void @bar()
29*f4a2713aSLionel Sambuc // CHECK: declare i8* @strrchr(i8*, i32)
30