blob: fca4fff7ca8d7a4d6957a7f39c4b46adef2ffd53 [file] [log] [blame]
Anton Yartsev3a5aca82012-02-02 06:06:34 +00001// RUN: %clang_cc1 -O1 -std=gnu89 -triple i386-apple-darwin9 -emit-llvm %s -o - | FileCheck -check-prefix GNU89 %s
2// RUN: %clang_cc1 -O1 -std=c99 -triple i386-apple-darwin9 -emit-llvm %s -o - | FileCheck -check-prefix C99 %s
Douglas Gregor1fc09a92009-09-13 07:46:26 +00003
Anton Yartsev3a5aca82012-02-02 06:06:34 +00004// CHECK-GNU89: define i32 @f0()
5// CHECK-C99: define i32 @f0()
Douglas Gregor1fc09a92009-09-13 07:46:26 +00006int f0(void);
7int f0(void) { return 0; }
8
Anton Yartsev3a5aca82012-02-02 06:06:34 +00009// CHECK-GNU89: define i32 @f1()
10// CHECK-C99: define i32 @f1()
Douglas Gregor1fc09a92009-09-13 07:46:26 +000011inline int f1(void);
12int f1(void) { return 0; }
13
Anton Yartsev3a5aca82012-02-02 06:06:34 +000014// CHECK-GNU89: define i32 @f2()
15// CHECK-C99: define i32 @f2()
Douglas Gregor1fc09a92009-09-13 07:46:26 +000016int f2(void);
17inline int f2(void) { return 0; }
18
Anton Yartsev3a5aca82012-02-02 06:06:34 +000019// CHECK-GNU89: define i32 @f3()
20// CHECK-C99: define i32 @f3()
Douglas Gregor1fc09a92009-09-13 07:46:26 +000021extern inline int f3(void);
22int f3(void) { return 0; }
23
Anton Yartsev3a5aca82012-02-02 06:06:34 +000024// CHECK-GNU89: define i32 @f5()
25// CHECK-C99: define i32 @f5()
Douglas Gregor1fc09a92009-09-13 07:46:26 +000026extern inline int f5(void);
27inline int f5(void) { return 0; }
28
Anton Yartsev3a5aca82012-02-02 06:06:34 +000029// CHECK-GNU89: define i32 @f6()
30// CHECK-C99: define i32 @f6()
Douglas Gregor1fc09a92009-09-13 07:46:26 +000031inline int f6(void);
32extern inline int f6(void) { return 0; }
33
Anton Yartsev3a5aca82012-02-02 06:06:34 +000034// CHECK-GNU89: define i32 @f7()
35// CHECK-C99: define i32 @f7()
Douglas Gregor1fc09a92009-09-13 07:46:26 +000036extern inline int f7(void);
37extern int f7(void) { return 0; }
38
Anton Yartsev3a5aca82012-02-02 06:06:34 +000039// CHECK-GNU89: define i32 @fA()
Douglas Gregor1fc09a92009-09-13 07:46:26 +000040inline int fA(void) { return 0; }
41
Anton Yartsev3a5aca82012-02-02 06:06:34 +000042// CHECK-GNU89: define available_externally i32 @f4()
43// CHECK-C99: define i32 @f4()
Douglas Gregor1fc09a92009-09-13 07:46:26 +000044int f4(void);
45extern inline int f4(void) { return 0; }
46
Anton Yartsev3a5aca82012-02-02 06:06:34 +000047// CHECK-GNU89: define available_externally i32 @f8()
48// CHECK-C99: define i32 @f8()
Douglas Gregor1fc09a92009-09-13 07:46:26 +000049extern int f8(void);
50extern inline int f8(void) { return 0; }
51
Anton Yartsev3a5aca82012-02-02 06:06:34 +000052// CHECK-GNU89: define available_externally i32 @f9()
53// CHECK-C99: define i32 @f9()
Douglas Gregor1fc09a92009-09-13 07:46:26 +000054extern inline int f9(void);
55extern inline int f9(void) { return 0; }
56
Anton Yartsev3a5aca82012-02-02 06:06:34 +000057// CHECK-C99: define available_externally i32 @fA()
58
Douglas Gregor1fc09a92009-09-13 07:46:26 +000059int test_all() {
60 return f0() + f1() + f2() + f3() + f4() + f5() + f6() + f7() + f8() + f9()
61 + fA();
62}