don't recurs and crash.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78323
91177308-0d34-0410-b5e6-
96231b3b80d8
= ToRecordDecl->lookup(ConstructorName);
Con != ConEnd; ++Con) {
CXXConstructorDecl *Constructor = cast<CXXConstructorDecl>(*Con);
- if (Constructor->isConvertingConstructor())
+ if (!Constructor->isInvalidDecl() &&
+ Constructor->isConvertingConstructor())
AddOverloadCandidate(Constructor, &From, 1, CandidateSet,
/*SuppressUserConversions=*/true, ForceRValue);
}
--- /dev/null
+// RUN: clang-cc -fsyntax-only -verify %s
+
+struct S { // expected-note {{candidate function}}
+ S (S); // expected-error {{copy constructor must pass its first argument by reference}} \\
+ // expected-note {{candidate function}}
+};
+
+S f();
+
+void g() {
+ S a( f() ); // expected-error {{call to constructor of 'a' is ambiguous}}
+}
+