1// RUN: %clang_cc1 -fsyntax-only -triple i686-pc-win32 -verify %s 2// PR14993 3 4namespace test1 { 5 inline void f(); // expected-warning{{inline function 'test1::f' is not defined}} 6 void test() { f(); } // expected-note{{used here}} 7} 8 9namespace test2 { 10 inline int f(); 11 void test() { (void)sizeof(f()); } 12} 13 14namespace test3 { 15 void f(); // expected-warning{{inline function 'test3::f' is not defined}} 16 inline void f(); 17 void test() { f(); } // expected-note{{used here}} 18} 19 20namespace test4 { 21 inline void error_on_zero(int); // expected-warning{{inline function 'test4::error_on_zero' is not defined}} 22 inline void error_on_zero(char*) {} 23 void test() { error_on_zero(0); } // expected-note{{used here}} 24} 25 26namespace test5 { 27 struct X { void f(); }; 28 void test(X &x) { x.f(); } 29} 30 31namespace test6 { 32 struct X { inline void f(); }; // expected-warning{{inline function 'test6::X::f' is not defined}} 33 void test(X &x) { x.f(); } // expected-note{{used here}} 34} 35 36namespace test7 { 37 void f(); // expected-warning{{inline function 'test7::f' is not defined}} 38 void test() { f(); } // no used-here note. 39 inline void f(); 40} 41 42namespace test8 { 43 inline void foo() __attribute__((gnu_inline)); 44 void test() { foo(); } 45} 46 47namespace test9 { 48 void foo(); 49 void test() { foo(); } 50 inline void foo() __attribute__((gnu_inline)); 51} 52 53namespace test10 { 54 inline void foo(); 55 void test() { foo(); } 56 inline void foo() __attribute__((gnu_inline)); 57} 58 59namespace test11 { 60 inline void foo() __attribute__((dllexport)); 61 inline void bar() __attribute__((dllimport)); 62 void test() { foo(); bar(); } 63} 64