Clang Project

clang_source_code/test/Sema/libbuiltins-ctype-x86_64.c
1// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -emit-llvm < %s | FileCheck %s
2
3int isalnum(int);
4int isalpha(int);
5int isblank(int);
6int iscntrl(int);
7int isdigit(int);
8int isgraph(int);
9int islower(int);
10int isprint(int);
11int ispunct(int);
12int isspace(int);
13int isupper(int);
14int isxdigit(int);
15int tolower(int);
16int toupper(int);
17
18void test(int x) {
19  // CHECK: call i32 @isalnum(i32 {{%[0-9]+}}) [[NUW_RO_CALL:#[0-9]+]]
20  (void)isalnum(x);
21  // CHECK: call i32 @isalpha(i32 {{%[0-9]+}}) [[NUW_RO_CALL:#[0-9]+]]
22  (void)isalpha(x);
23  // CHECK: call i32 @isblank(i32 {{%[0-9]+}}) [[NUW_RO_CALL:#[0-9]+]]
24  (void)isblank(x);
25  // CHECK: call i32 @iscntrl(i32 {{%[0-9]+}}) [[NUW_RO_CALL:#[0-9]+]]
26  (void)iscntrl(x);
27  // CHECK: call i32 @isdigit(i32 {{%[0-9]+}}) [[NUW_RO_CALL:#[0-9]+]]
28  (void)isdigit(x);
29  // CHECK: call i32 @isgraph(i32 {{%[0-9]+}}) [[NUW_RO_CALL:#[0-9]+]]
30  (void)isgraph(x);
31  // CHECK: call i32 @islower(i32 {{%[0-9]+}}) [[NUW_RO_CALL:#[0-9]+]]
32  (void)islower(x);
33  // CHECK: call i32 @isprint(i32 {{%[0-9]+}}) [[NUW_RO_CALL:#[0-9]+]]
34  (void)isprint(x);
35  // CHECK: call i32 @ispunct(i32 {{%[0-9]+}}) [[NUW_RO_CALL:#[0-9]+]]
36  (void)ispunct(x);
37  // CHECK: call i32 @isspace(i32 {{%[0-9]+}}) [[NUW_RO_CALL:#[0-9]+]]
38  (void)isspace(x);
39  // CHECK: call i32 @isupper(i32 {{%[0-9]+}}) [[NUW_RO_CALL:#[0-9]+]]
40  (void)isupper(x);
41  // CHECK: call i32 @isxdigit(i32 {{%[0-9]+}}) [[NUW_RO_CALL:#[0-9]+]]
42  (void)isxdigit(x);
43  // CHECK: call i32 @tolower(i32 {{%[0-9]+}}) [[NUW_RO_CALL:#[0-9]+]]
44  (void)tolower(x);
45  // CHECK: call i32 @toupper(i32 {{%[0-9]+}}) [[NUW_RO_CALL:#[0-9]+]]
46  (void)toupper(x);
47}
48
49// CHECK: declare i32 @isalnum(i32) [[NUW_RO:#[0-9]+]]
50// CHECK: declare i32 @isalpha(i32) [[NUW_RO:#[0-9]+]]
51// CHECK: declare i32 @isblank(i32) [[NUW_RO:#[0-9]+]]
52// CHECK: declare i32 @iscntrl(i32) [[NUW_RO:#[0-9]+]]
53// CHECK: declare i32 @isdigit(i32) [[NUW_RO:#[0-9]+]]
54// CHECK: declare i32 @isgraph(i32) [[NUW_RO:#[0-9]+]]
55// CHECK: declare i32 @islower(i32) [[NUW_RO:#[0-9]+]]
56// CHECK: declare i32 @isprint(i32) [[NUW_RO:#[0-9]+]]
57// CHECK: declare i32 @ispunct(i32) [[NUW_RO:#[0-9]+]]
58// CHECK: declare i32 @isspace(i32) [[NUW_RO:#[0-9]+]]
59// CHECK: declare i32 @isupper(i32) [[NUW_RO:#[0-9]+]]
60// CHECK: declare i32 @isxdigit(i32) [[NUW_RO:#[0-9]+]]
61// CHECK: declare i32 @tolower(i32) [[NUW_RO:#[0-9]+]]
62// CHECK: declare i32 @toupper(i32) [[NUW_RO:#[0-9]+]]
63
64// CHECK: attributes [[NUW_RO]] = { nounwind readonly{{.*}} }
65// CHECK: attributes [[NUW_RO_CALL]] = { nounwind readonly }
66