forked from OSchip/llvm-project
PR11009: Fix a FIXME which was leading to an assertion failure with rvalue references.
llvm-svn: 140594
This commit is contained in:
parent
9f01f89386
commit
f272d40d7c
|
@ -4482,7 +4482,6 @@ InitializationSequence::Perform(Sema &S,
|
|||
FunctionDecl *Fn = Step->Function.Function;
|
||||
DeclAccessPair FoundFn = Step->Function.FoundDecl;
|
||||
bool CreatedObject = false;
|
||||
bool IsLvalue = false;
|
||||
if (CXXConstructorDecl *Constructor = dyn_cast<CXXConstructorDecl>(Fn)) {
|
||||
// Build a call to the selected constructor.
|
||||
ASTOwningVector<Expr*> ConstructorArgs(S);
|
||||
|
@ -4520,7 +4519,6 @@ InitializationSequence::Perform(Sema &S,
|
|||
} else {
|
||||
// Build a call to the conversion function.
|
||||
CXXConversionDecl *Conversion = cast<CXXConversionDecl>(Fn);
|
||||
IsLvalue = Conversion->getResultType()->isLValueReferenceType();
|
||||
S.CheckMemberOperatorAccess(Kind.getLocation(), CurInit.get(), 0,
|
||||
FoundFn);
|
||||
S.DiagnoseUseOfDecl(FoundFn, Kind.getLocation());
|
||||
|
@ -4560,11 +4558,10 @@ InitializationSequence::Perform(Sema &S,
|
|||
}
|
||||
}
|
||||
|
||||
// FIXME: xvalues
|
||||
CurInit = S.Owned(ImplicitCastExpr::Create(S.Context,
|
||||
CurInit.get()->getType(),
|
||||
CastKind, CurInit.get(), 0,
|
||||
IsLvalue ? VK_LValue : VK_RValue));
|
||||
CurInit.get()->getValueKind()));
|
||||
|
||||
if (RequiresCopy)
|
||||
CurInit = CopyObject(S, Entity.getType().getNonReferenceType(), Entity,
|
||||
|
|
|
@ -92,3 +92,11 @@ MoveOnly returningNonEligible() {
|
|||
else // Construction from different type can't be elided
|
||||
return i; // expected-error {{no viable conversion from 'int' to 'MoveOnly'}}
|
||||
}
|
||||
|
||||
// PR11009
|
||||
struct MoveConvertible {
|
||||
operator int&& () const;
|
||||
};
|
||||
void moveConstruct() {
|
||||
(void)(int)MoveConvertible();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue