xref: /llvm-project/clang/test/CodeGenCXX/header-unit-member-func-linkage.cpp (revision 7c1d9b15eee3a34678addab2bab66f3020ac0753)
1 // Tests that the member function with-in an class definition in the header unit is still implicit inline.
2 // RUN: rm -rf %t
3 // RUN: split-file %s %t
4 //
5 // RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple -xc++-user-header -emit-header-unit %t/foo.h -o %t/foo.pcm
6 // RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple -fmodule-file=%t/foo.pcm %t/user.cpp \
7 // RUN:   -emit-llvm -disable-llvm-passes -o - | FileCheck %t/user.cpp
8 
9 //--- foo.h
10 class foo {
11 public:
getValue()12     int getValue() {
13         return 43;
14     }
15 };
16 
17 //--- user.cpp
18 import "foo.h";
use()19 int use() {
20     foo f;
21     return f.getValue();
22 }
23 
24 // CHECK: define{{.*}}linkonce_odr{{.*}}@_ZN3foo8getValueEv
25