1*67e74705SXin Li // RUN: %clang_cc1 -std=c++1y -triple i386-pc-win32 -fms-compatibility -fms-extensions -fsyntax-only -verify %s 2*67e74705SXin Li // expected-no-diagnostics 3*67e74705SXin Li foo()4*67e74705SXin Liint foo() { 5*67e74705SXin Li static_assert(sizeof(__FUNCDNAME__) == 12, "?foo@@YAHXZ"); 6*67e74705SXin Li return 0; 7*67e74705SXin Li } 8*67e74705SXin Li 9*67e74705SXin Li // Within templates. 10*67e74705SXin Li template <typename T> baz()11*67e74705SXin Liint baz() { 12*67e74705SXin Li static_assert(sizeof(__FUNCDNAME__) == 16, "??$baz@H@@YAHXZ"); 13*67e74705SXin Li 14*67e74705SXin Li return 0; 15*67e74705SXin Li } 16*67e74705SXin Li 17*67e74705SXin Li struct A { AA18*67e74705SXin Li A() { 19*67e74705SXin Li static_assert(sizeof(__FUNCDNAME__) == 13, "??0A@@QAE@XZ"); 20*67e74705SXin Li } ~AA21*67e74705SXin Li ~A() { 22*67e74705SXin Li static_assert(sizeof(__FUNCDNAME__) == 13, "??1A@@QAE@XZ"); 23*67e74705SXin Li } 24*67e74705SXin Li }; 25*67e74705SXin Li main()26*67e74705SXin Liint main() { 27*67e74705SXin Li static_assert(sizeof(__FUNCDNAME__) == 5, "main"); 28*67e74705SXin Li 29*67e74705SXin Li baz<int>(); 30*67e74705SXin Li 31*67e74705SXin Li return 0; 32*67e74705SXin Li } 33