xref: /aosp_15_r20/external/clang/test/CodeGenCXX/noinline-template.cpp (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1 %s -emit-llvm -triple %itanium_abi_triple -o - | FileCheck %s
2*67e74705SXin Li 
3*67e74705SXin Li // This was a problem in Sema, but only shows up as noinline missing
4*67e74705SXin Li // in CodeGen.
5*67e74705SXin Li 
6*67e74705SXin Li // CHECK: define linkonce_odr {{.*}}void @_ZN6VectorIiE13growStorageByEv(%struct.Vector* %this) [[NI:#[0-9]+]]
7*67e74705SXin Li 
8*67e74705SXin Li template <class Ty> struct Vector  {
9*67e74705SXin Li   void growStorageBy();
10*67e74705SXin Li };
growStorageBy()11*67e74705SXin Li template <class T> __attribute__((noinline)) void Vector<T>::growStorageBy() {
12*67e74705SXin Li }
foo()13*67e74705SXin Li void foo() {
14*67e74705SXin Li  Vector<int> strs;
15*67e74705SXin Li  strs.growStorageBy();
16*67e74705SXin Li }
17*67e74705SXin Li 
18*67e74705SXin Li // CHECK: attributes [[NI]] = { noinline nounwind{{.*}} }
19