Remove InitializationSequence::ReferenceBinding, the last redundant sequence kind.

llvm-svn: 135175
This commit is contained in:
Sebastian Redl 2011-07-14 19:07:55 +00:00
parent 4cc3bcd575
commit 112aa826c7
2 changed files with 8 additions and 13 deletions

View File

@ -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

View File

@ -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) {