aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2012-08-13 21:29:18 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2012-08-13 21:29:18 +0000
commit7657fd7d34426e7df6e84aa6e3d73be532a75f78 (patch)
tree5fe536bc32e1d651818b548ded4a2504eb07aeec
parent634b3d26969f139a25b223074567ba5ab7ba7dd9 (diff)
PR13570: When an unresolved overloaded call appeared in a dependent context, we
forgot to set it as being instantiation-dependent as well as being type- and value-dependent. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161791 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/AST/ExprCXX.cpp1
-rw-r--r--test/CodeGenCXX/debug-info-cxx0x.cpp10
2 files changed, 11 insertions, 0 deletions
diff --git a/lib/AST/ExprCXX.cpp b/lib/AST/ExprCXX.cpp
index b290fb423a..3fa49e0e18 100644
--- a/lib/AST/ExprCXX.cpp
+++ b/lib/AST/ExprCXX.cpp
@@ -277,6 +277,7 @@ OverloadExpr::OverloadExpr(StmtClass K, ASTContext &C,
isa<UnresolvedUsingValueDecl>(*I)) {
ExprBits.TypeDependent = true;
ExprBits.ValueDependent = true;
+ ExprBits.InstantiationDependent = true;
}
}
diff --git a/test/CodeGenCXX/debug-info-cxx0x.cpp b/test/CodeGenCXX/debug-info-cxx0x.cpp
index 37ccdb01c5..9d303755be 100644
--- a/test/CodeGenCXX/debug-info-cxx0x.cpp
+++ b/test/CodeGenCXX/debug-info-cxx0x.cpp
@@ -6,3 +6,13 @@ namespace PR9414 {
return x;
}
}
+
+// Don't crash.
+namespace PR13570 {
+ template<typename T, typename U> struct P {};
+ template<typename T> struct A {
+ template<typename U> static P<T,U> isa(U);
+ decltype(isa(int())) f() {}
+ };
+ template struct A<int>;
+}