[PATCH] D103849: Fix undeduced type when instanciating template member
serge via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Jul 15 01:52:54 PDT 2021
This revision was automatically updated to reflect the committed changes.
Closed by commit rG4b219051a331: Fix undeduced type assert (authored by serge-sans-paille).
Herald added a project: clang.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D103849/new/
https://reviews.llvm.org/D103849
Files:
clang/lib/AST/Expr.cpp
clang/test/CodeGenCXX/auto-variable-template.cpp
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,21 @@
// CHECK: define{{.*}} i32 @main()
// CHECK: call void @_ZNK1fclEv(%struct.f* {{[^,]*}} @_Z9vtemplateIiE)
+
+template <typename>
+struct pack {
+ template <typename T>
+ constexpr static auto some_boolean_cx_value = true;
+};
+
+auto usage() {
+ return pack<char>::some_boolean_cx_value<int>;
+}
+
+// CHECK: define{{.*}} i1 @_Z5usagev()
+
+auto otherusage() {
+ return pack<char>{}.some_boolean_cx_value<int>;
+}
+
+// CHECK: define{{.*}} i1 @_Z10otherusagev()
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()));
}
@@ -1722,8 +1724,10 @@
return new (Mem) MemberExpr(EmptyShell());
}
-void MemberExpr::setMemberDecl(ValueDecl *D) {
- MemberDecl = D;
+void MemberExpr::setMemberDecl(ValueDecl *NewD) {
+ MemberDecl = NewD;
+ if (getType()->isUndeducedType())
+ setType(NewD->getType());
setDependence(computeDependence(this));
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D103849.358867.patch
Type: text/x-patch
Size: 1421 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20210715/60d805f1/attachment.bin>
More information about the cfe-commits
mailing list