xref: /llvm-project/clang/test/utils/update_cc_test_checks/Inputs/basic-cplusplus.cpp (revision 94c0db06ab8cf0897ff32884ea6f683f5fc5a7b9)
1 // NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --include-generated-funcs --version 5
2 // Basic C++ test for update_cc_test_checks
3 // RUN: %clang_cc1 -triple=x86_64-unknown-linux-gnu -emit-llvm -o - %s | FileCheck %s
4 // RUN: %clang_cc1 -triple=x86_64-apple-macho -emit-llvm -o - %s | FileCheck %s --check-prefix=MACHO
5 // RUN: %clang_cc1 -triple=x86_64-windows-msvc -emit-llvm -o - %s | FileCheck %s --check-prefix=MSVC
6 // RUN: %clang_cc1 -triple=x86_64-windows-gnu -emit-llvm -o - %s | FileCheck %s --check-prefix=MINGW
7 
8 class Foo {
9   int x;
10 
11 public:
12   explicit Foo(int x);
13   ~Foo();
14   inline int function_defined_inline(int arg) const {
15     return arg + x;
16   }
17   inline int function_defined_out_of_line(int arg) const;
18 };
19 
20 [[clang::noinline]] static int static_noinline_fn(int arg) { return arg; }
21 
22 Foo::Foo(int x) : x(x) {}
23 Foo::~Foo() {}
24 int Foo::function_defined_out_of_line(int arg) const { return x - arg; }
25 
26 // Call the inline methods to ensure the LLVM IR is generated:
27 int main() {
28   Foo f(1);
29   f.function_defined_inline(2);
30   f.function_defined_out_of_line(3);
31   return static_noinline_fn(0);
32 }
33