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 | |
7 | template <int N> void __attribute__((noreturn)) f3() { __builtin_unreachable(); } |
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 <> |
18 | void A<0>::foo() {} // expected-warning{{function declared 'noreturn' should not return}} |
19 | } |
20 | #endif |
21 | |