Index: cfe/trunk/lib/AST/Expr.cpp =================================================================== --- cfe/trunk/lib/AST/Expr.cpp +++ cfe/trunk/lib/AST/Expr.cpp @@ -2596,6 +2596,10 @@ continue; } } + if (ConstantExpr *CE = dyn_cast(E)) { + E = CE->getSubExpr(); + continue; + } return E; } } @@ -2718,10 +2722,6 @@ E = NTTP->getReplacement(); continue; } - if (ConstantExpr *CE = dyn_cast(E)) { - E = CE->getSubExpr(); - continue; - } return E; } } Index: cfe/trunk/test/CodeGenCXX/mangle-ms-templates.cpp =================================================================== --- cfe/trunk/test/CodeGenCXX/mangle-ms-templates.cpp +++ cfe/trunk/test/CodeGenCXX/mangle-ms-templates.cpp @@ -1,5 +1,7 @@ // RUN: %clang_cc1 -std=c++11 -fms-compatibility-version=19 -emit-llvm %s -o - -fms-extensions -fdelayed-template-parsing -triple=i386-pc-win32 | FileCheck %s // RUN: %clang_cc1 -std=c++11 -fms-compatibility-version=19 -emit-llvm %s -o - -fms-extensions -fdelayed-template-parsing -triple=x86_64-pc-win32 | FileCheck -check-prefix X64 %s +// RUN: %clang_cc1 -std=c++17 -fms-compatibility-version=19 -emit-llvm %s -o - -fms-extensions -fdelayed-template-parsing -triple=i386-pc-win32 | FileCheck %s +// RUN: %clang_cc1 -std=c++17 -fms-compatibility-version=19 -emit-llvm %s -o - -fms-extensions -fdelayed-template-parsing -triple=x86_64-pc-win32 | FileCheck -check-prefix X64 %s template class Class {