1 // RUN: %clang_cc1 -triple x86_64-pc-linux -emit-llvm %s -o - | FileCheck %s 2 3 extern void foo_alias (void) __asm ("foo"); 4 inline void foo (void) { 5 return foo_alias (); 6 } 7 extern int abs_alias (int) __asm ("abs"); 8 inline __attribute__ ((__always_inline__)) int abs (int x) { 9 return abs_alias(x); 10 } 11 extern char *strrchr_foo (const char *__s, int __c) __asm ("strrchr"); 12 extern inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * strrchr_foo (const char *__s, int __c) { 13 return __builtin_strrchr (__s, __c); 14 } 15 16 extern inline void __attribute__((always_inline, __gnu_inline__)) 17 prefetch(void) { 18 __builtin_prefetch(0, 0, 1); 19 } 20 21 extern inline __attribute__((__always_inline__, __gnu_inline__)) void *memchr(void *__s, int __c, __SIZE_TYPE__ __n) { 22 return __builtin_memchr(__s, __c, __n); 23 } 24 25 void f(void) { 26 foo(); 27 abs(0); 28 strrchr_foo("", '.'); 29 prefetch(); 30 memchr("", '.', 0); 31 } 32 33 // CHECK-LABEL: define void @f() 34 // CHECK: call void @foo() 35 // CHECK: call i32 @abs(i32 0) 36 // CHECK: call i8* @strrchr( 37 // CHECK: call void @llvm.prefetch( 38 // CHECK: call i8* @memchr( 39 // CHECK: ret void 40 41 // CHECK: declare void @foo() 42 // CHECK: declare i32 @abs(i32 43 // CHECK: declare i8* @strrchr(i8*, i32) 44 // CHECK: declare i8* @memchr( 45 // CHECK: declare void @llvm.prefetch( 46