1*0a6a1f1dSLionel Sambuc // RUN: %clang_cc1 -std=c++1y -fms-extensions -emit-llvm %s -o - -triple=i386-pc-win32 | FileCheck %s 2*0a6a1f1dSLionel Sambuc 3*0a6a1f1dSLionel Sambuc template <typename> int x = 0; 4*0a6a1f1dSLionel Sambuc 5*0a6a1f1dSLionel Sambuc // CHECK: "\01??$x@X@@3HA" 6*0a6a1f1dSLionel Sambuc template <> int x<void>; 7*0a6a1f1dSLionel Sambuc // CHECK: "\01??$x@H@@3HA" 8*0a6a1f1dSLionel Sambuc template <> int x<int>; 9*0a6a1f1dSLionel Sambuc 10*0a6a1f1dSLionel Sambuc // CHECK: "\01?FunctionWithLocalType@@YA?A?<auto>@@XZ" FunctionWithLocalType()11*0a6a1f1dSLionel Sambucauto FunctionWithLocalType() { 12*0a6a1f1dSLionel Sambuc struct LocalType {}; 13*0a6a1f1dSLionel Sambuc return LocalType{}; 14*0a6a1f1dSLionel Sambuc } 15*0a6a1f1dSLionel Sambuc 16*0a6a1f1dSLionel Sambuc // CHECK: "\01?ValueFromFunctionWithLocalType@@3ULocalType@?1??FunctionWithLocalType@@YA?A?<auto>@@XZ@A" 17*0a6a1f1dSLionel Sambuc auto ValueFromFunctionWithLocalType = FunctionWithLocalType(); 18*0a6a1f1dSLionel Sambuc 19*0a6a1f1dSLionel Sambuc // CHECK: "\01??R<lambda_0>@@QBE?A?<auto>@@XZ" __anon4fbc56930102null20*0a6a1f1dSLionel Sambucauto LambdaWithLocalType = [] { 21*0a6a1f1dSLionel Sambuc struct LocalType {}; 22*0a6a1f1dSLionel Sambuc return LocalType{}; 23*0a6a1f1dSLionel Sambuc }; 24*0a6a1f1dSLionel Sambuc 25*0a6a1f1dSLionel Sambuc // CHECK: "\01?ValueFromLambdaWithLocalType@@3ULocalType@?1???R<lambda_0>@@QBE?A?<auto>@@XZ@A" 26*0a6a1f1dSLionel Sambuc auto ValueFromLambdaWithLocalType = LambdaWithLocalType(); 27*0a6a1f1dSLionel Sambuc 28*0a6a1f1dSLionel Sambuc template <typename T> TemplateFuncionWithLocalLambda(T)29*0a6a1f1dSLionel Sambucauto TemplateFuncionWithLocalLambda(T) { 30*0a6a1f1dSLionel Sambuc auto LocalLambdaWithLocalType = []() { 31*0a6a1f1dSLionel Sambuc struct LocalType {}; 32*0a6a1f1dSLionel Sambuc return LocalType{}; 33*0a6a1f1dSLionel Sambuc }; 34*0a6a1f1dSLionel Sambuc return LocalLambdaWithLocalType(); 35*0a6a1f1dSLionel Sambuc } 36*0a6a1f1dSLionel Sambuc 37*0a6a1f1dSLionel Sambuc // CHECK: "\01?ValueFromTemplateFuncionWithLocalLambda@@3ULocalType@?2???R<lambda_1>@??$TemplateFuncionWithLocalLambda@H@@YA?A?<auto>@@H@Z@QBA?A?3@XZ@A" 38*0a6a1f1dSLionel Sambuc // CHECK: "\01??$TemplateFuncionWithLocalLambda@H@@YA?A?<auto>@@H@Z" 39*0a6a1f1dSLionel Sambuc // CHECK: "\01??R<lambda_1>@??$TemplateFuncionWithLocalLambda@H@@YA?A?<auto>@@H@Z@QBA?A?1@XZ" 40*0a6a1f1dSLionel Sambuc auto ValueFromTemplateFuncionWithLocalLambda = TemplateFuncionWithLocalLambda(0); 41