1 // RUN: %clang_cc1 -fsyntax-only -verify %s
2 
3 // Split from function-template-specialization.cpp because the noreturn warning
4 // requires analysis-based warnings, which the other errors in that test case
5 // disable.
6 
f3()7 template <int N> void __attribute__((noreturn)) f3() { __builtin_unreachable(); }
f3()8 template <> void f3<1>() { } // expected-warning {{function declared 'noreturn' should not return}}
9 
10 #if __cplusplus >= 201103L
11 namespace PR21942 {
12 template <int>
13 struct A {
14   void foo[[noreturn]]();
15 };
16 
17 template <>
foo()18 void A<0>::foo() {} // expected-warning{{function declared 'noreturn' should not return}}
19 }
20 #endif
21