1651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// RUN: %clang_cc1 %s -emit-llvm -triple %itanium_abi_triple -o - | FileCheck %s
219f74acdf8842ceece578b7307884f5ba22d7f59Rafael Espindola
319f74acdf8842ceece578b7307884f5ba22d7f59Rafael Espindola// This was a problem in Sema, but only shows up as noinline missing
419f74acdf8842ceece578b7307884f5ba22d7f59Rafael Espindola// in CodeGen.
519f74acdf8842ceece578b7307884f5ba22d7f59Rafael Espindola
6651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: define linkonce_odr {{.*}}void @_ZN6VectorIiE13growStorageByEv(%struct.Vector* %this) [[NI:#[0-9]+]]
719f74acdf8842ceece578b7307884f5ba22d7f59Rafael Espindola
819f74acdf8842ceece578b7307884f5ba22d7f59Rafael Espindolatemplate <class Ty> struct Vector  {
919f74acdf8842ceece578b7307884f5ba22d7f59Rafael Espindola  void growStorageBy();
1019f74acdf8842ceece578b7307884f5ba22d7f59Rafael Espindola};
1119f74acdf8842ceece578b7307884f5ba22d7f59Rafael Espindolatemplate <class T> __attribute__((noinline)) void Vector<T>::growStorageBy() {
1219f74acdf8842ceece578b7307884f5ba22d7f59Rafael Espindola}
1319f74acdf8842ceece578b7307884f5ba22d7f59Rafael Espindolavoid foo() {
1419f74acdf8842ceece578b7307884f5ba22d7f59Rafael Espindola Vector<int> strs;
1519f74acdf8842ceece578b7307884f5ba22d7f59Rafael Espindola strs.growStorageBy();
1619f74acdf8842ceece578b7307884f5ba22d7f59Rafael Espindola}
17f7a9da053f5bd6c18450c1796d953b42c3b7ad3aBill Wendling
183bba3efba0e57071d60b355ed62639f93e37711cBill Wendling// CHECK: attributes [[NI]] = { noinline nounwind{{.*}} }
19