forked from OSchip/llvm-project
[clang] Fix a crash when CTAD fails
Differential Revision: https://reviews.llvm.org/D99145
This commit is contained in:
parent
003fab9e8d
commit
8f80c66bd2
|
@ -4492,7 +4492,8 @@ void Sema::CheckArgAlignment(SourceLocation Loc, NamedDecl *FDecl,
|
|||
|
||||
// Find expected alignment, and the actual alignment of the passed object.
|
||||
// getTypeAlignInChars requires complete types
|
||||
if (ParamTy->isIncompleteType() || ArgTy->isIncompleteType())
|
||||
if (ParamTy->isIncompleteType() || ArgTy->isIncompleteType() ||
|
||||
ParamTy->isUndeducedType() || ArgTy->isUndeducedType())
|
||||
return;
|
||||
|
||||
CharUnits ParamAlign = Context.getTypeAlignInChars(ParamTy);
|
||||
|
|
|
@ -543,6 +543,18 @@ namespace PR47175 {
|
|||
int m = n<int>;
|
||||
}
|
||||
|
||||
// Ensure we don't crash when CTAD fails.
|
||||
template <typename T1, typename T2>
|
||||
struct Foo { // expected-note{{candidate function template not viable}}
|
||||
Foo(T1, T2); // expected-note{{candidate function template not viable}}
|
||||
};
|
||||
|
||||
template <typename... Args>
|
||||
void insert(Args &&...args);
|
||||
|
||||
void foo() {
|
||||
insert(Foo(2, 2, 2)); // expected-error{{no viable constructor or deduction guide}}
|
||||
}
|
||||
#else
|
||||
|
||||
// expected-no-diagnostics
|
||||
|
|
Loading…
Reference in New Issue