blob: f3f98560846c50cf1f42d375625ddf3dca49f167 [file] [log] [blame]
/* PR c++/84294 - attributes on a function template redeclaration silently
discarded
{ dg-do compile }
{ dg-options "-O -fdump-tree-optimized" } */
template <void test ()>
void test_func ()
{
test ();
}
int x;
void __attribute__ ((noinline)) func_noinline_none ();
void func_noinline_none () { x = __LINE__; }
template void test_func<func_noinline_none>();
// { dg-final { scan-tree-dump-times "func_noinline_none *\\(\\);" 1 "optimized" } }
void func_none_noinline ();
void __attribute__ ((noinline)) func_none_noinline () { x = __LINE__; }
template void test_func<func_none_noinline>();
// { dg-final { scan-tree-dump-times "func_none_noinline *\\(\\);" 1 "optimized" } }
template <class>
void __attribute__ ((noinline)) templ_noinline_none () { x = __LINE__; }
template <class>
void templa_noinline_none ();
template void test_func<templ_noinline_none<int> >();
// { dg-final { scan-tree-dump-times "templ_noinline_none<int> *\\(\\);" 1 "optimized" } }
template <class>
void templ_none_noinline ();
template <class>
void __attribute__ ((noinline)) templ_none_noinline () { x = __LINE__; }
template void test_func<templ_none_noinline<int> >();
// { dg-final { scan-tree-dump-times "templ_none_noinline<int> *\\(\\);" 1 "optimized" } }