28 lines · cpp
1// Tests that the friend function with-in an class definition in the header unit is still implicit inline.2// RUN: rm -rf %t3// RUN: split-file %s %t4//5// RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple -xc++-user-header -emit-header-unit %t/foo.h -o %t/foo.pcm6// 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.cpp8 9//--- foo.h10class foo {11 int value;12public:13 foo(int v) : value(v) {}14 15 friend int getFooValue(foo f) {16 return f.value;17 }18};19 20//--- user.cpp21import "foo.h";22int use() {23 foo f(43);24 return getFooValue(f);25}26 27// CHECK: define{{.*}}linkonce_odr{{.*}}@_Z11getFooValue3foo28