forked from OSchip/llvm-project
Remove InitializationSequence::ReferenceBinding, the last redundant sequence kind.
llvm-svn: 135175
This commit is contained in:
parent
4cc3bcd575
commit
112aa826c7
|
@ -491,10 +491,7 @@ public:
|
|||
DependentSequence,
|
||||
|
||||
/// \brief A normal sequence.
|
||||
NormalSequence,
|
||||
|
||||
/// \brief A reference binding.
|
||||
ReferenceBinding // FIXME: Still looks redundant, but complicated.
|
||||
NormalSequence
|
||||
};
|
||||
|
||||
/// \brief Describes the kind of a particular step in an initialization
|
||||
|
|
|
@ -2155,7 +2155,7 @@ void InitializationSequence::Step::Destroy() {
|
|||
}
|
||||
|
||||
bool InitializationSequence::isDirectReferenceBinding() const {
|
||||
return getKind() == ReferenceBinding && Steps.back().Kind == SK_BindReference;
|
||||
return !Steps.empty() && Steps.back().Kind == SK_BindReference;
|
||||
}
|
||||
|
||||
bool InitializationSequence::isAmbiguous() const {
|
||||
|
@ -2622,8 +2622,6 @@ static void TryReferenceInitialization(Sema &S,
|
|||
const InitializationKind &Kind,
|
||||
Expr *Initializer,
|
||||
InitializationSequence &Sequence) {
|
||||
Sequence.setSequenceKind(InitializationSequence::ReferenceBinding);
|
||||
|
||||
QualType DestType = Entity.getType();
|
||||
QualType cv1T1 = DestType->getAs<ReferenceType>()->getPointeeType();
|
||||
Qualifiers T1Quals;
|
||||
|
@ -3892,6 +3890,11 @@ void InitializationSequence::PrintInitLocationNote(Sema &S,
|
|||
}
|
||||
}
|
||||
|
||||
static bool isReferenceBinding(const InitializationSequence::Step &s) {
|
||||
return s.Kind == InitializationSequence::SK_BindReference ||
|
||||
s.Kind == InitializationSequence::SK_BindReferenceToTemporary;
|
||||
}
|
||||
|
||||
ExprResult
|
||||
InitializationSequence::Perform(Sema &S,
|
||||
const InitializedEntity &Entity,
|
||||
|
@ -4187,8 +4190,7 @@ InitializationSequence::Perform(Sema &S,
|
|||
CreatedObject = Conversion->getResultType()->isRecordType();
|
||||
}
|
||||
|
||||
bool RequiresCopy = !IsCopy &&
|
||||
getKind() != InitializationSequence::ReferenceBinding;
|
||||
bool RequiresCopy = !IsCopy && !isReferenceBinding(Steps.back());
|
||||
if (RequiresCopy || shouldBindAsTemporary(Entity))
|
||||
CurInit = S.MaybeBindToTemporary(CurInit.takeAs<Expr>());
|
||||
else if (CreatedObject && shouldDestroyTemporary(Entity)) {
|
||||
|
@ -4866,10 +4868,6 @@ void InitializationSequence::dump(llvm::raw_ostream &OS) const {
|
|||
case NormalSequence:
|
||||
OS << "Normal sequence: ";
|
||||
break;
|
||||
|
||||
case ReferenceBinding:
|
||||
OS << "Reference binding: ";
|
||||
break;
|
||||
}
|
||||
|
||||
for (step_iterator S = step_begin(), SEnd = step_end(); S != SEnd; ++S) {
|
||||
|
|
Loading…
Reference in New Issue