inline2.c revision 931a4feb64f18190d189c222d61b2abf52f18ab8
1931a4feb64f18190d189c222d61b2abf52f18ab8Tim Northover// RUN: %clang_cc1 -O1 -std=gnu89 -triple i386-apple-darwin9 -emit-llvm %s -o - | FileCheck -check-prefix CHECK-GNU89 %s
2931a4feb64f18190d189c222d61b2abf52f18ab8Tim Northover// RUN: %clang_cc1 -O1 -std=c99 -triple i386-apple-darwin9 -emit-llvm %s -o - | FileCheck -check-prefix CHECK-C99 %s
31fc09a92d0bffda20e06fa882388c01e192e2069Douglas Gregor
43a5aca8112e03814f78906dc5d032287adb272b5Anton Yartsev// CHECK-GNU89: define i32 @f0()
53a5aca8112e03814f78906dc5d032287adb272b5Anton Yartsev// CHECK-C99: define i32 @f0()
61fc09a92d0bffda20e06fa882388c01e192e2069Douglas Gregorint f0(void);
71fc09a92d0bffda20e06fa882388c01e192e2069Douglas Gregorint f0(void) { return 0; }
81fc09a92d0bffda20e06fa882388c01e192e2069Douglas Gregor
93a5aca8112e03814f78906dc5d032287adb272b5Anton Yartsev// CHECK-GNU89: define i32 @f1()
103a5aca8112e03814f78906dc5d032287adb272b5Anton Yartsev// CHECK-C99: define i32 @f1()
111fc09a92d0bffda20e06fa882388c01e192e2069Douglas Gregorinline int f1(void);
121fc09a92d0bffda20e06fa882388c01e192e2069Douglas Gregorint f1(void) { return 0; }
131fc09a92d0bffda20e06fa882388c01e192e2069Douglas Gregor
143a5aca8112e03814f78906dc5d032287adb272b5Anton Yartsev// CHECK-GNU89: define i32 @f2()
153a5aca8112e03814f78906dc5d032287adb272b5Anton Yartsev// CHECK-C99: define i32 @f2()
161fc09a92d0bffda20e06fa882388c01e192e2069Douglas Gregorint f2(void);
171fc09a92d0bffda20e06fa882388c01e192e2069Douglas Gregorinline int f2(void) { return 0; }
181fc09a92d0bffda20e06fa882388c01e192e2069Douglas Gregor
193a5aca8112e03814f78906dc5d032287adb272b5Anton Yartsev// CHECK-GNU89: define i32 @f3()
203a5aca8112e03814f78906dc5d032287adb272b5Anton Yartsev// CHECK-C99: define i32 @f3()
211fc09a92d0bffda20e06fa882388c01e192e2069Douglas Gregorextern inline int f3(void);
221fc09a92d0bffda20e06fa882388c01e192e2069Douglas Gregorint f3(void) { return 0; }
231fc09a92d0bffda20e06fa882388c01e192e2069Douglas Gregor
243a5aca8112e03814f78906dc5d032287adb272b5Anton Yartsev// CHECK-GNU89: define i32 @f5()
253a5aca8112e03814f78906dc5d032287adb272b5Anton Yartsev// CHECK-C99: define i32 @f5()
261fc09a92d0bffda20e06fa882388c01e192e2069Douglas Gregorextern inline int f5(void);
271fc09a92d0bffda20e06fa882388c01e192e2069Douglas Gregorinline int f5(void) { return 0; }
281fc09a92d0bffda20e06fa882388c01e192e2069Douglas Gregor
293a5aca8112e03814f78906dc5d032287adb272b5Anton Yartsev// CHECK-GNU89: define i32 @f6()
303a5aca8112e03814f78906dc5d032287adb272b5Anton Yartsev// CHECK-C99: define i32 @f6()
311fc09a92d0bffda20e06fa882388c01e192e2069Douglas Gregorinline int f6(void);
321fc09a92d0bffda20e06fa882388c01e192e2069Douglas Gregorextern inline int f6(void) { return 0; }
331fc09a92d0bffda20e06fa882388c01e192e2069Douglas Gregor
343a5aca8112e03814f78906dc5d032287adb272b5Anton Yartsev// CHECK-GNU89: define i32 @f7()
353a5aca8112e03814f78906dc5d032287adb272b5Anton Yartsev// CHECK-C99: define i32 @f7()
361fc09a92d0bffda20e06fa882388c01e192e2069Douglas Gregorextern inline int f7(void);
371fc09a92d0bffda20e06fa882388c01e192e2069Douglas Gregorextern int f7(void) { return 0; }
381fc09a92d0bffda20e06fa882388c01e192e2069Douglas Gregor
393a5aca8112e03814f78906dc5d032287adb272b5Anton Yartsev// CHECK-GNU89: define i32 @fA()
401fc09a92d0bffda20e06fa882388c01e192e2069Douglas Gregorinline int fA(void) { return 0; }
411fc09a92d0bffda20e06fa882388c01e192e2069Douglas Gregor
423a5aca8112e03814f78906dc5d032287adb272b5Anton Yartsev// CHECK-GNU89: define available_externally i32 @f4()
433a5aca8112e03814f78906dc5d032287adb272b5Anton Yartsev// CHECK-C99: define i32 @f4()
441fc09a92d0bffda20e06fa882388c01e192e2069Douglas Gregorint f4(void);
451fc09a92d0bffda20e06fa882388c01e192e2069Douglas Gregorextern inline int f4(void) { return 0; }
461fc09a92d0bffda20e06fa882388c01e192e2069Douglas Gregor
473a5aca8112e03814f78906dc5d032287adb272b5Anton Yartsev// CHECK-GNU89: define available_externally i32 @f8()
483a5aca8112e03814f78906dc5d032287adb272b5Anton Yartsev// CHECK-C99: define i32 @f8()
491fc09a92d0bffda20e06fa882388c01e192e2069Douglas Gregorextern int f8(void);
501fc09a92d0bffda20e06fa882388c01e192e2069Douglas Gregorextern inline int f8(void) { return 0; }
511fc09a92d0bffda20e06fa882388c01e192e2069Douglas Gregor
523a5aca8112e03814f78906dc5d032287adb272b5Anton Yartsev// CHECK-GNU89: define available_externally i32 @f9()
533a5aca8112e03814f78906dc5d032287adb272b5Anton Yartsev// CHECK-C99: define i32 @f9()
541fc09a92d0bffda20e06fa882388c01e192e2069Douglas Gregorextern inline int f9(void);
551fc09a92d0bffda20e06fa882388c01e192e2069Douglas Gregorextern inline int f9(void) { return 0; }
561fc09a92d0bffda20e06fa882388c01e192e2069Douglas Gregor
573a5aca8112e03814f78906dc5d032287adb272b5Anton Yartsev// CHECK-C99: define available_externally i32 @fA()
583a5aca8112e03814f78906dc5d032287adb272b5Anton Yartsev
591fc09a92d0bffda20e06fa882388c01e192e2069Douglas Gregorint test_all() {
601fc09a92d0bffda20e06fa882388c01e192e2069Douglas Gregor  return f0() + f1() + f2() + f3() + f4() + f5() + f6() + f7() + f8() + f9()
611fc09a92d0bffda20e06fa882388c01e192e2069Douglas Gregor    + fA();
621fc09a92d0bffda20e06fa882388c01e192e2069Douglas Gregor}
63