13ce0e92fSAlex Richardson // Basic C++ test for update_cc_test_checks
2*b16a3b4fSNikita Popov // RUN: %clang_cc1 -no-opaque-pointers -triple=x86_64-unknown-linux-gnu -emit-llvm -o - %s | FileCheck %s
33ce0e92fSAlex Richardson 
43ce0e92fSAlex Richardson class Foo {
53ce0e92fSAlex Richardson   int x;
63ce0e92fSAlex Richardson 
73ce0e92fSAlex Richardson public:
83ce0e92fSAlex Richardson   explicit Foo(int x);
93ce0e92fSAlex Richardson   ~Foo();
function_defined_inline(int arg) const103ce0e92fSAlex Richardson   inline int function_defined_inline(int arg) const {
113ce0e92fSAlex Richardson     return arg + x;
123ce0e92fSAlex Richardson   }
133ce0e92fSAlex Richardson   inline int function_defined_out_of_line(int arg) const;
143ce0e92fSAlex Richardson };
153ce0e92fSAlex Richardson 
Foo(int x)163ce0e92fSAlex Richardson Foo::Foo(int x) : x(x) {}
~Foo()173ce0e92fSAlex Richardson Foo::~Foo() {}
function_defined_out_of_line(int arg) const183ce0e92fSAlex Richardson int Foo::function_defined_out_of_line(int arg) const { return x - arg; }
193ce0e92fSAlex Richardson 
203ce0e92fSAlex Richardson // Call the inline methods to ensure the LLVM IR is generated:
main()213ce0e92fSAlex Richardson int main() {
223ce0e92fSAlex Richardson   Foo f(1);
233ce0e92fSAlex Richardson   f.function_defined_inline(2);
243ce0e92fSAlex Richardson   f.function_defined_out_of_line(3);
253ce0e92fSAlex Richardson }
26