Index: clang/lib/AST/Expr.cpp =================================================================== --- clang/lib/AST/Expr.cpp +++ clang/lib/AST/Expr.cpp @@ -490,6 +490,8 @@ void DeclRefExpr::setDecl(ValueDecl *NewD) { D = NewD; + if (getType()->isUndeducedType()) + setType(NewD->getType()); setDependence(computeDependence(this, NewD->getASTContext())); } Index: clang/test/CodeGenCXX/auto-variable-template.cpp =================================================================== --- clang/test/CodeGenCXX/auto-variable-template.cpp +++ clang/test/CodeGenCXX/auto-variable-template.cpp @@ -12,3 +12,15 @@ // CHECK: define{{.*}} i32 @main() // CHECK: call void @_ZNK1fclEv(%struct.f* {{[^,]*}} @_Z9vtemplateIiE) + +template +struct pack { + template + constexpr static auto some_boolean_cx_value = true; +}; + +auto usage() { + return pack::some_boolean_cx_value; +} + +// CHECK: define{{.*}} i1 @_Z5usagev()