mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-02-24 20:44:09 +00:00
Remove the ref/value inconsistency in filter_decl_iterator.
filter_decl_iterator had a weird mismatch where both op* and op-> returned T* making it difficult to generalize this filtering behavior into a reusable library of any kind. This change errs on the side of value, making op-> return T* and op* return T&. (reviewed by Richard Smith) llvm-svn: 155808
This commit is contained in:
parent
13ef0cfd69
commit
2d7c57ec1d
@ -1237,8 +1237,8 @@ public:
|
||||
}
|
||||
|
||||
public:
|
||||
typedef SpecificDecl* value_type;
|
||||
typedef SpecificDecl* reference;
|
||||
typedef SpecificDecl value_type;
|
||||
typedef SpecificDecl& reference;
|
||||
typedef SpecificDecl* pointer;
|
||||
typedef std::iterator_traits<DeclContext::decl_iterator>::difference_type
|
||||
difference_type;
|
||||
@ -1258,8 +1258,8 @@ public:
|
||||
SkipToNextDecl();
|
||||
}
|
||||
|
||||
reference operator*() const { return cast<SpecificDecl>(*Current); }
|
||||
pointer operator->() const { return cast<SpecificDecl>(*Current); }
|
||||
reference operator*() const { return *cast<SpecificDecl>(*Current); }
|
||||
pointer operator->() const { return &**this; }
|
||||
|
||||
specific_decl_iterator& operator++() {
|
||||
++Current;
|
||||
|
@ -210,8 +210,8 @@ static void cleanupDeallocOrFinalize(MigrationPass &pass) {
|
||||
ObjCMethodDecl *DeallocM = 0;
|
||||
ObjCMethodDecl *FinalizeM = 0;
|
||||
for (ObjCImplementationDecl::instmeth_iterator
|
||||
MI = (*I)->instmeth_begin(),
|
||||
ME = (*I)->instmeth_end(); MI != ME; ++MI) {
|
||||
MI = I->instmeth_begin(),
|
||||
ME = I->instmeth_end(); MI != ME; ++MI) {
|
||||
ObjCMethodDecl *MD = *MI;
|
||||
if (!MD->hasBody())
|
||||
continue;
|
||||
|
@ -136,7 +136,7 @@ public:
|
||||
if (CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(D)) {
|
||||
for (CXXRecordDecl::method_iterator
|
||||
MI = RD->method_begin(), ME = RD->method_end(); MI != ME; ++MI) {
|
||||
if ((*MI)->isOutOfLine())
|
||||
if (MI->isOutOfLine())
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
@ -85,7 +85,7 @@ public:
|
||||
if (PrevAtProps->find(RawLoc) != PrevAtProps->end())
|
||||
continue;
|
||||
PropsTy &props = AtProps[RawLoc];
|
||||
props.push_back(*propI);
|
||||
props.push_back(&*propI);
|
||||
}
|
||||
}
|
||||
|
||||
@ -102,7 +102,7 @@ public:
|
||||
for (prop_impl_iterator
|
||||
I = prop_impl_iterator(D->decls_begin()),
|
||||
E = prop_impl_iterator(D->decls_end()); I != E; ++I) {
|
||||
ObjCPropertyImplDecl *implD = *I;
|
||||
ObjCPropertyImplDecl *implD = &*I;
|
||||
if (implD->getPropertyImplementation() != ObjCPropertyImplDecl::Synthesize)
|
||||
continue;
|
||||
ObjCPropertyDecl *propD = implD->getPropertyDecl();
|
||||
|
@ -114,7 +114,7 @@ public:
|
||||
// this class implementation.
|
||||
for (ObjCImplDecl::propimpl_iterator
|
||||
I = IMD->propimpl_begin(), EI = IMD->propimpl_end(); I != EI; ++I) {
|
||||
ObjCPropertyImplDecl *PID = *I;
|
||||
ObjCPropertyImplDecl *PID = &*I;
|
||||
if (PID->getPropertyImplementation() ==
|
||||
ObjCPropertyImplDecl::Synthesize) {
|
||||
ObjCPropertyDecl *PD = PID->getPropertyDecl();
|
||||
|
@ -472,8 +472,8 @@ static void GCRewriteFinalize(MigrationPass &pass) {
|
||||
for (impl_iterator I = impl_iterator(DC->decls_begin()),
|
||||
E = impl_iterator(DC->decls_end()); I != E; ++I) {
|
||||
for (ObjCImplementationDecl::instmeth_iterator
|
||||
MI = (*I)->instmeth_begin(),
|
||||
ME = (*I)->instmeth_end(); MI != ME; ++MI) {
|
||||
MI = I->instmeth_begin(),
|
||||
ME = I->instmeth_end(); MI != ME; ++MI) {
|
||||
ObjCMethodDecl *MD = *MI;
|
||||
if (!MD->hasBody())
|
||||
continue;
|
||||
|
@ -467,9 +467,9 @@ void APValue::printPretty(raw_ostream &Out, ASTContext &Ctx, QualType Ty) const{
|
||||
FI != RD->field_end(); ++FI) {
|
||||
if (!First)
|
||||
Out << ", ";
|
||||
if ((*FI)->isUnnamedBitfield()) continue;
|
||||
getStructField((*FI)->getFieldIndex()).
|
||||
printPretty(Out, Ctx, (*FI)->getType());
|
||||
if (FI->isUnnamedBitfield()) continue;
|
||||
getStructField(FI->getFieldIndex()).
|
||||
printPretty(Out, Ctx, FI->getType());
|
||||
First = false;
|
||||
}
|
||||
Out << '}';
|
||||
|
@ -1187,7 +1187,7 @@ void ASTContext::DeepCollectObjCIvars(const ObjCInterfaceDecl *OI,
|
||||
if (!leafClass) {
|
||||
for (ObjCInterfaceDecl::ivar_iterator I = OI->ivar_begin(),
|
||||
E = OI->ivar_end(); I != E; ++I)
|
||||
Ivars.push_back(*I);
|
||||
Ivars.push_back(&*I);
|
||||
} else {
|
||||
ObjCInterfaceDecl *IDecl = const_cast<ObjCInterfaceDecl *>(OI);
|
||||
for (const ObjCIvarDecl *Iv = IDecl->all_declared_ivar_begin(); Iv;
|
||||
@ -4227,7 +4227,7 @@ void ASTContext::getObjCEncodingForPropertyDecl(const ObjCPropertyDecl *PD,
|
||||
for (ObjCCategoryImplDecl::propimpl_iterator
|
||||
i = CID->propimpl_begin(), e = CID->propimpl_end();
|
||||
i != e; ++i) {
|
||||
ObjCPropertyImplDecl *PID = *i;
|
||||
ObjCPropertyImplDecl *PID = &*i;
|
||||
if (PID->getPropertyDecl() == PD) {
|
||||
if (PID->getPropertyImplementation()==ObjCPropertyImplDecl::Dynamic) {
|
||||
Dynamic = true;
|
||||
@ -4241,7 +4241,7 @@ void ASTContext::getObjCEncodingForPropertyDecl(const ObjCPropertyDecl *PD,
|
||||
for (ObjCCategoryImplDecl::propimpl_iterator
|
||||
i = OID->propimpl_begin(), e = OID->propimpl_end();
|
||||
i != e; ++i) {
|
||||
ObjCPropertyImplDecl *PID = *i;
|
||||
ObjCPropertyImplDecl *PID = &*i;
|
||||
if (PID->getPropertyDecl() == PD) {
|
||||
if (PID->getPropertyImplementation()==ObjCPropertyImplDecl::Dynamic) {
|
||||
Dynamic = true;
|
||||
@ -4563,7 +4563,7 @@ void ASTContext::getObjCEncodingForTypeImpl(QualType T, std::string& S,
|
||||
// Special case bit-fields.
|
||||
if (Field->isBitField()) {
|
||||
getObjCEncodingForTypeImpl(Field->getType(), S, false, true,
|
||||
(*Field));
|
||||
&*Field);
|
||||
} else {
|
||||
QualType qt = Field->getType();
|
||||
getLegacyIntegralTypeEncoding(qt);
|
||||
@ -4759,7 +4759,7 @@ void ASTContext::getObjCEncodingForStructureImpl(RecordDecl *RDecl,
|
||||
Field != FieldEnd; ++Field, ++i) {
|
||||
uint64_t offs = layout.getFieldOffset(i);
|
||||
FieldOrBaseOffsets.insert(FieldOrBaseOffsets.upper_bound(offs),
|
||||
std::make_pair(offs, *Field));
|
||||
std::make_pair(offs, &*Field));
|
||||
}
|
||||
|
||||
if (CXXRec && includeVBases) {
|
||||
|
@ -1017,7 +1017,7 @@ static bool IsStructurallyEquivalent(StructuralEquivalenceContext &Context,
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!IsStructurallyEquivalent(Context, *Field1, *Field2))
|
||||
if (!IsStructurallyEquivalent(Context, &*Field1, &*Field2))
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -2463,15 +2463,15 @@ unsigned FieldDecl::getFieldIndex() const {
|
||||
|
||||
for (RecordDecl::field_iterator I = RD->field_begin(), E = RD->field_end();
|
||||
I != E; ++I, ++Index) {
|
||||
(*I)->CachedFieldIndex = Index + 1;
|
||||
I->CachedFieldIndex = Index + 1;
|
||||
|
||||
if (IsMsStruct) {
|
||||
// Zero-length bitfields following non-bitfield members are ignored.
|
||||
if (getASTContext().ZeroBitfieldFollowsNonBitfield((*I), LastFD)) {
|
||||
if (getASTContext().ZeroBitfieldFollowsNonBitfield(&*I, LastFD)) {
|
||||
--Index;
|
||||
continue;
|
||||
}
|
||||
LastFD = (*I);
|
||||
LastFD = &*I;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -400,7 +400,7 @@ CXXConstructorDecl *CXXRecordDecl::getCopyConstructor(unsigned TypeQuals) const{
|
||||
CXXConstructorDecl *CXXRecordDecl::getMoveConstructor() const {
|
||||
for (ctor_iterator I = ctor_begin(), E = ctor_end(); I != E; ++I)
|
||||
if (I->isMoveConstructor())
|
||||
return *I;
|
||||
return &*I;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -458,7 +458,7 @@ CXXMethodDecl *CXXRecordDecl::getCopyAssignmentOperator(bool ArgIsConst) const {
|
||||
CXXMethodDecl *CXXRecordDecl::getMoveAssignmentOperator() const {
|
||||
for (method_iterator I = method_begin(), E = method_end(); I != E; ++I)
|
||||
if (I->isMoveAssignmentOperator())
|
||||
return *I;
|
||||
return &*I;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -996,11 +996,11 @@ void CXXRecordDecl::getCaptureFields(
|
||||
for (LambdaExpr::Capture *C = Lambda.Captures, *CEnd = C + Lambda.NumCaptures;
|
||||
C != CEnd; ++C, ++Field) {
|
||||
if (C->capturesThis()) {
|
||||
ThisCapture = *Field;
|
||||
ThisCapture = &*Field;
|
||||
continue;
|
||||
}
|
||||
|
||||
Captures[C->getCapturedVar()] = *Field;
|
||||
Captures[C->getCapturedVar()] = &*Field;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -767,9 +767,9 @@ ObjCIvarDecl *ObjCInterfaceDecl::all_declared_ivar_begin() {
|
||||
ObjCIvarDecl *curIvar = 0;
|
||||
if (!ivar_empty()) {
|
||||
ObjCInterfaceDecl::ivar_iterator I = ivar_begin(), E = ivar_end();
|
||||
data().IvarList = (*I); ++I;
|
||||
for (curIvar = data().IvarList; I != E; curIvar = *I, ++I)
|
||||
curIvar->setNextIvar(*I);
|
||||
data().IvarList = &*I; ++I;
|
||||
for (curIvar = data().IvarList; I != E; curIvar = &*I, ++I)
|
||||
curIvar->setNextIvar(&*I);
|
||||
}
|
||||
|
||||
for (const ObjCCategoryDecl *CDecl = getFirstClassExtension(); CDecl;
|
||||
@ -778,11 +778,11 @@ ObjCIvarDecl *ObjCInterfaceDecl::all_declared_ivar_begin() {
|
||||
ObjCCategoryDecl::ivar_iterator I = CDecl->ivar_begin(),
|
||||
E = CDecl->ivar_end();
|
||||
if (!data().IvarList) {
|
||||
data().IvarList = (*I); ++I;
|
||||
data().IvarList = &*I; ++I;
|
||||
curIvar = data().IvarList;
|
||||
}
|
||||
for ( ;I != E; curIvar = *I, ++I)
|
||||
curIvar->setNextIvar(*I);
|
||||
for ( ;I != E; curIvar = &*I, ++I)
|
||||
curIvar->setNextIvar(&*I);
|
||||
}
|
||||
}
|
||||
|
||||
@ -791,11 +791,11 @@ ObjCIvarDecl *ObjCInterfaceDecl::all_declared_ivar_begin() {
|
||||
ObjCImplementationDecl::ivar_iterator I = ImplDecl->ivar_begin(),
|
||||
E = ImplDecl->ivar_end();
|
||||
if (!data().IvarList) {
|
||||
data().IvarList = (*I); ++I;
|
||||
data().IvarList = &*I; ++I;
|
||||
curIvar = data().IvarList;
|
||||
}
|
||||
for ( ;I != E; curIvar = *I, ++I)
|
||||
curIvar->setNextIvar(*I);
|
||||
for ( ;I != E; curIvar = &*I, ++I)
|
||||
curIvar->setNextIvar(&*I);
|
||||
}
|
||||
}
|
||||
return data().IvarList;
|
||||
@ -1175,7 +1175,7 @@ void ObjCImplDecl::setClassInterface(ObjCInterfaceDecl *IFace) {
|
||||
ObjCPropertyImplDecl *ObjCImplDecl::
|
||||
FindPropertyImplIvarDecl(IdentifierInfo *ivarId) const {
|
||||
for (propimpl_iterator i = propimpl_begin(), e = propimpl_end(); i != e; ++i){
|
||||
ObjCPropertyImplDecl *PID = *i;
|
||||
ObjCPropertyImplDecl *PID = &*i;
|
||||
if (PID->getPropertyIvarDecl() &&
|
||||
PID->getPropertyIvarDecl()->getIdentifier() == ivarId)
|
||||
return PID;
|
||||
@ -1190,7 +1190,7 @@ FindPropertyImplIvarDecl(IdentifierInfo *ivarId) const {
|
||||
ObjCPropertyImplDecl *ObjCImplDecl::
|
||||
FindPropertyImplDecl(IdentifierInfo *Id) const {
|
||||
for (propimpl_iterator i = propimpl_begin(), e = propimpl_end(); i != e; ++i){
|
||||
ObjCPropertyImplDecl *PID = *i;
|
||||
ObjCPropertyImplDecl *PID = &*i;
|
||||
if (PID->getPropertyDecl()->getIdentifier() == Id)
|
||||
return PID;
|
||||
}
|
||||
|
@ -923,7 +923,7 @@ void DeclPrinter::VisitObjCInterfaceDecl(ObjCInterfaceDecl *OID) {
|
||||
Indentation += Policy.Indentation;
|
||||
for (ObjCInterfaceDecl::ivar_iterator I = OID->ivar_begin(),
|
||||
E = OID->ivar_end(); I != E; ++I) {
|
||||
Indent() << (*I)->getType().getAsString(Policy) << ' ' << **I << ";\n";
|
||||
Indent() << I->getType().getAsString(Policy) << ' ' << *I << ";\n";
|
||||
}
|
||||
Indentation -= Policy.Indentation;
|
||||
Out << "}\n";
|
||||
|
@ -1072,8 +1072,8 @@ static bool CheckConstantExpression(EvalInfo &Info, SourceLocation DiagLoc,
|
||||
}
|
||||
for (RecordDecl::field_iterator I = RD->field_begin(), E = RD->field_end();
|
||||
I != E; ++I) {
|
||||
if (!CheckConstantExpression(Info, DiagLoc, (*I)->getType(),
|
||||
Value.getStructField((*I)->getFieldIndex())))
|
||||
if (!CheckConstantExpression(Info, DiagLoc, I->getType(),
|
||||
Value.getStructField(I->getFieldIndex())))
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -3391,15 +3391,15 @@ static bool HandleClassZeroInitialization(EvalInfo &Info, const Expr *E,
|
||||
for (RecordDecl::field_iterator I = RD->field_begin(), End = RD->field_end();
|
||||
I != End; ++I) {
|
||||
// -- if T is a reference type, no initialization is performed.
|
||||
if ((*I)->getType()->isReferenceType())
|
||||
if (I->getType()->isReferenceType())
|
||||
continue;
|
||||
|
||||
LValue Subobject = This;
|
||||
HandleLValueMember(Info, E, Subobject, *I, &Layout);
|
||||
HandleLValueMember(Info, E, Subobject, &*I, &Layout);
|
||||
|
||||
ImplicitValueInitExpr VIE((*I)->getType());
|
||||
ImplicitValueInitExpr VIE(I->getType());
|
||||
if (!EvaluateInPlace(
|
||||
Result.getStructField((*I)->getFieldIndex()), Info, Subobject, &VIE))
|
||||
Result.getStructField(I->getFieldIndex()), Info, Subobject, &VIE))
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -3419,9 +3419,9 @@ bool RecordExprEvaluator::ZeroInitialization(const Expr *E) {
|
||||
}
|
||||
|
||||
LValue Subobject = This;
|
||||
HandleLValueMember(Info, E, Subobject, *I);
|
||||
Result = APValue(*I);
|
||||
ImplicitValueInitExpr VIE((*I)->getType());
|
||||
HandleLValueMember(Info, E, Subobject, &*I);
|
||||
Result = APValue(&*I);
|
||||
ImplicitValueInitExpr VIE(I->getType());
|
||||
return EvaluateInPlace(Result.getUnionValue(), Info, Subobject, &VIE);
|
||||
}
|
||||
|
||||
@ -3511,14 +3511,14 @@ bool RecordExprEvaluator::VisitInitListExpr(const InitListExpr *E) {
|
||||
// FIXME: Diagnostics here should point to the end of the initializer
|
||||
// list, not the start.
|
||||
HandleLValueMember(Info, HaveInit ? E->getInit(ElementNo) : E, Subobject,
|
||||
*Field, &Layout);
|
||||
&*Field, &Layout);
|
||||
|
||||
// Perform an implicit value-initialization for members beyond the end of
|
||||
// the initializer list.
|
||||
ImplicitValueInitExpr VIE(HaveInit ? Info.Ctx.IntTy : Field->getType());
|
||||
|
||||
if (!EvaluateInPlace(
|
||||
Result.getStructField((*Field)->getFieldIndex()),
|
||||
Result.getStructField(Field->getFieldIndex()),
|
||||
Info, Subobject, HaveInit ? E->getInit(ElementNo++) : &VIE)) {
|
||||
if (!Info.keepEvaluatingAfterFailure())
|
||||
return false;
|
||||
|
@ -1032,7 +1032,7 @@ static const FieldDecl *FindFirstNamedDataMember(const RecordDecl *RD) {
|
||||
|
||||
for (RecordDecl::field_iterator I = RD->field_begin(), E = RD->field_end();
|
||||
I != E; ++I) {
|
||||
const FieldDecl *FD = *I;
|
||||
const FieldDecl *FD = &*I;
|
||||
|
||||
if (FD->getIdentifier())
|
||||
return FD;
|
||||
|
@ -161,10 +161,10 @@ void EmptySubobjectMap::ComputeEmptySubobjectSizes() {
|
||||
// Check the fields.
|
||||
for (CXXRecordDecl::field_iterator I = Class->field_begin(),
|
||||
E = Class->field_end(); I != E; ++I) {
|
||||
const FieldDecl *FD = *I;
|
||||
const FieldDecl &FD = *I;
|
||||
|
||||
const RecordType *RT =
|
||||
Context.getBaseElementType(FD->getType())->getAs<RecordType>();
|
||||
Context.getBaseElementType(FD.getType())->getAs<RecordType>();
|
||||
|
||||
// We only care about record types.
|
||||
if (!RT)
|
||||
@ -261,7 +261,7 @@ EmptySubobjectMap::CanPlaceBaseSubobjectAtOffset(const BaseSubobjectInfo *Info,
|
||||
unsigned FieldNo = 0;
|
||||
for (CXXRecordDecl::field_iterator I = Info->Class->field_begin(),
|
||||
E = Info->Class->field_end(); I != E; ++I, ++FieldNo) {
|
||||
const FieldDecl *FD = *I;
|
||||
const FieldDecl *FD = &*I;
|
||||
if (FD->isBitField())
|
||||
continue;
|
||||
|
||||
@ -310,7 +310,7 @@ void EmptySubobjectMap::UpdateEmptyBaseSubobjects(const BaseSubobjectInfo *Info,
|
||||
unsigned FieldNo = 0;
|
||||
for (CXXRecordDecl::field_iterator I = Info->Class->field_begin(),
|
||||
E = Info->Class->field_end(); I != E; ++I, ++FieldNo) {
|
||||
const FieldDecl *FD = *I;
|
||||
const FieldDecl *FD = &*I;
|
||||
if (FD->isBitField())
|
||||
continue;
|
||||
|
||||
@ -380,7 +380,7 @@ EmptySubobjectMap::CanPlaceFieldSubobjectAtOffset(const CXXRecordDecl *RD,
|
||||
unsigned FieldNo = 0;
|
||||
for (CXXRecordDecl::field_iterator I = RD->field_begin(), E = RD->field_end();
|
||||
I != E; ++I, ++FieldNo) {
|
||||
const FieldDecl *FD = *I;
|
||||
const FieldDecl *FD = &*I;
|
||||
if (FD->isBitField())
|
||||
continue;
|
||||
|
||||
@ -491,7 +491,7 @@ void EmptySubobjectMap::UpdateEmptyFieldSubobjects(const CXXRecordDecl *RD,
|
||||
unsigned FieldNo = 0;
|
||||
for (CXXRecordDecl::field_iterator I = RD->field_begin(), E = RD->field_end();
|
||||
I != E; ++I, ++FieldNo) {
|
||||
const FieldDecl *FD = *I;
|
||||
const FieldDecl *FD = &*I;
|
||||
if (FD->isBitField())
|
||||
continue;
|
||||
|
||||
@ -1540,7 +1540,7 @@ void RecordLayoutBuilder::LayoutFields(const RecordDecl *D) {
|
||||
for (RecordDecl::field_iterator Field = D->field_begin(),
|
||||
FieldEnd = D->field_end(); Field != FieldEnd; ++Field) {
|
||||
if (IsMsStruct) {
|
||||
FieldDecl *FD = (*Field);
|
||||
FieldDecl *FD = &*Field;
|
||||
if (Context.ZeroBitfieldFollowsBitfield(FD, LastFD))
|
||||
ZeroLengthBitfield = FD;
|
||||
// Zero-length bitfields following non-bitfield members are
|
||||
@ -1635,11 +1635,11 @@ void RecordLayoutBuilder::LayoutFields(const RecordDecl *D) {
|
||||
}
|
||||
else if (!Context.getTargetInfo().useBitFieldTypeAlignment() &&
|
||||
Context.getTargetInfo().useZeroLengthBitfieldAlignment()) {
|
||||
FieldDecl *FD = (*Field);
|
||||
FieldDecl *FD = &*Field;
|
||||
if (FD->isBitField() && FD->getBitWidthValue(Context) == 0)
|
||||
ZeroLengthBitfield = FD;
|
||||
}
|
||||
LayoutField(*Field);
|
||||
LayoutField(&*Field);
|
||||
}
|
||||
if (IsMsStruct && RemainingInAlignment &&
|
||||
LastFD && LastFD->isBitField() && LastFD->getBitWidthValue(Context)) {
|
||||
@ -2147,7 +2147,7 @@ RecordLayoutBuilder::ComputeKeyFunction(const CXXRecordDecl *RD) {
|
||||
|
||||
for (CXXRecordDecl::method_iterator I = RD->method_begin(),
|
||||
E = RD->method_end(); I != E; ++I) {
|
||||
const CXXMethodDecl *MD = *I;
|
||||
const CXXMethodDecl *MD = &*I;
|
||||
|
||||
if (!MD->isVirtual())
|
||||
continue;
|
||||
@ -2417,21 +2417,21 @@ static void DumpCXXRecordLayout(raw_ostream &OS,
|
||||
uint64_t FieldNo = 0;
|
||||
for (CXXRecordDecl::field_iterator I = RD->field_begin(),
|
||||
E = RD->field_end(); I != E; ++I, ++FieldNo) {
|
||||
const FieldDecl *Field = *I;
|
||||
const FieldDecl &Field = *I;
|
||||
CharUnits FieldOffset = Offset +
|
||||
C.toCharUnitsFromBits(Layout.getFieldOffset(FieldNo));
|
||||
|
||||
if (const RecordType *RT = Field->getType()->getAs<RecordType>()) {
|
||||
if (const RecordType *RT = Field.getType()->getAs<RecordType>()) {
|
||||
if (const CXXRecordDecl *D = dyn_cast<CXXRecordDecl>(RT->getDecl())) {
|
||||
DumpCXXRecordLayout(OS, D, C, FieldOffset, IndentLevel,
|
||||
Field->getName().data(),
|
||||
Field.getName().data(),
|
||||
/*IncludeVirtualBases=*/true);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
PrintOffset(OS, FieldOffset, IndentLevel);
|
||||
OS << Field->getType().getAsString() << ' ' << *Field << '\n';
|
||||
OS << Field.getType().getAsString() << ' ' << Field << '\n';
|
||||
}
|
||||
|
||||
if (!IncludeVirtualBases)
|
||||
|
@ -409,7 +409,7 @@ void FinalOverriders::dump(raw_ostream &Out, BaseSubobject Base,
|
||||
// Now dump the overriders for this base subobject.
|
||||
for (CXXRecordDecl::method_iterator I = RD->method_begin(),
|
||||
E = RD->method_end(); I != E; ++I) {
|
||||
const CXXMethodDecl *MD = *I;
|
||||
const CXXMethodDecl *MD = &*I;
|
||||
|
||||
if (!MD->isVirtual())
|
||||
continue;
|
||||
@ -692,7 +692,7 @@ void VCallAndVBaseOffsetBuilder::AddVCallOffsets(BaseSubobject Base,
|
||||
// Add the vcall offsets.
|
||||
for (CXXRecordDecl::method_iterator I = RD->method_begin(),
|
||||
E = RD->method_end(); I != E; ++I) {
|
||||
const CXXMethodDecl *MD = *I;
|
||||
const CXXMethodDecl *MD = &*I;
|
||||
|
||||
if (!MD->isVirtual())
|
||||
continue;
|
||||
@ -1469,7 +1469,7 @@ VTableBuilder::AddMethods(BaseSubobject Base, CharUnits BaseOffsetInLayoutClass,
|
||||
// Now go through all virtual member functions and add them.
|
||||
for (CXXRecordDecl::method_iterator I = RD->method_begin(),
|
||||
E = RD->method_end(); I != E; ++I) {
|
||||
const CXXMethodDecl *MD = *I;
|
||||
const CXXMethodDecl *MD = &*I;
|
||||
|
||||
if (!MD->isVirtual())
|
||||
continue;
|
||||
@ -2105,7 +2105,7 @@ void VTableBuilder::dumpLayout(raw_ostream& Out) {
|
||||
|
||||
for (CXXRecordDecl::method_iterator i = MostDerivedClass->method_begin(),
|
||||
e = MostDerivedClass->method_end(); i != e; ++i) {
|
||||
const CXXMethodDecl *MD = *i;
|
||||
const CXXMethodDecl *MD = &*i;
|
||||
|
||||
// We only want virtual member functions.
|
||||
if (!MD->isVirtual())
|
||||
@ -2217,7 +2217,7 @@ void VTableContext::ComputeMethodVTableIndices(const CXXRecordDecl *RD) {
|
||||
|
||||
for (CXXRecordDecl::method_iterator i = RD->method_begin(),
|
||||
e = RD->method_end(); i != e; ++i) {
|
||||
const CXXMethodDecl *MD = *i;
|
||||
const CXXMethodDecl *MD = &*i;
|
||||
|
||||
// We only want virtual methods.
|
||||
if (!MD->isVirtual())
|
||||
|
@ -832,7 +832,7 @@ void CFGBuilder::addImplicitDtorsForDestructor(const CXXDestructorDecl *DD) {
|
||||
if (const CXXRecordDecl *CD = QT->getAsCXXRecordDecl())
|
||||
if (!CD->hasTrivialDestructor()) {
|
||||
autoCreateBlock();
|
||||
appendMemberDtor(Block, *FI);
|
||||
appendMemberDtor(Block, &*FI);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -61,7 +61,7 @@ void DeclToIndex::computeMap(const DeclContext &dc) {
|
||||
DeclContext::specific_decl_iterator<VarDecl> I(dc.decls_begin()),
|
||||
E(dc.decls_end());
|
||||
for ( ; I != E; ++I) {
|
||||
const VarDecl *vd = *I;
|
||||
const VarDecl *vd = &*I;
|
||||
if (isTrackedVar(vd, &dc))
|
||||
map[vd] = count++;
|
||||
}
|
||||
|
@ -53,7 +53,7 @@ bool CodeGenModule::TryEmitBaseDestructorAsAlias(const CXXDestructorDecl *D) {
|
||||
// destructor separately.
|
||||
for (CXXRecordDecl::field_iterator I = Class->field_begin(),
|
||||
E = Class->field_end(); I != E; ++I)
|
||||
if ((*I)->getType().isDestructedType())
|
||||
if (I->getType().isDestructedType())
|
||||
return true;
|
||||
|
||||
// Try to find a unique base class with a non-trivial destructor.
|
||||
|
@ -431,7 +431,7 @@ void CodeGenTypes::GetExpandedTypes(QualType type,
|
||||
|
||||
for (RecordDecl::field_iterator i = RD->field_begin(), e = RD->field_end();
|
||||
i != e; ++i) {
|
||||
const FieldDecl *FD = *i;
|
||||
const FieldDecl *FD = &*i;
|
||||
assert(!FD->isBitField() &&
|
||||
"Cannot expand structure with bit-field members.");
|
||||
CharUnits FieldSize = getContext().getTypeSizeInChars(FD->getType());
|
||||
@ -445,10 +445,10 @@ void CodeGenTypes::GetExpandedTypes(QualType type,
|
||||
} else {
|
||||
for (RecordDecl::field_iterator i = RD->field_begin(), e = RD->field_end();
|
||||
i != e; ++i) {
|
||||
const FieldDecl *FD = *i;
|
||||
assert(!FD->isBitField() &&
|
||||
const FieldDecl &FD = *i;
|
||||
assert(!FD.isBitField() &&
|
||||
"Cannot expand structure with bit-field members.");
|
||||
GetExpandedTypes(FD->getType(), expandedTypes);
|
||||
GetExpandedTypes(FD.getType(), expandedTypes);
|
||||
}
|
||||
}
|
||||
} else if (const ComplexType *CT = type->getAs<ComplexType>()) {
|
||||
@ -483,7 +483,7 @@ CodeGenFunction::ExpandTypeFromArgs(QualType Ty, LValue LV,
|
||||
|
||||
for (RecordDecl::field_iterator i = RD->field_begin(), e = RD->field_end();
|
||||
i != e; ++i) {
|
||||
const FieldDecl *FD = *i;
|
||||
const FieldDecl *FD = &*i;
|
||||
assert(!FD->isBitField() &&
|
||||
"Cannot expand structure with bit-field members.");
|
||||
CharUnits FieldSize = getContext().getTypeSizeInChars(FD->getType());
|
||||
@ -500,7 +500,7 @@ CodeGenFunction::ExpandTypeFromArgs(QualType Ty, LValue LV,
|
||||
} else {
|
||||
for (RecordDecl::field_iterator i = RD->field_begin(), e = RD->field_end();
|
||||
i != e; ++i) {
|
||||
FieldDecl *FD = *i;
|
||||
FieldDecl *FD = &*i;
|
||||
QualType FT = FD->getType();
|
||||
|
||||
// FIXME: What are the right qualifiers here?
|
||||
@ -1815,7 +1815,7 @@ void CodeGenFunction::ExpandTypeToArgs(QualType Ty, RValue RV,
|
||||
|
||||
for (RecordDecl::field_iterator i = RD->field_begin(), e = RD->field_end();
|
||||
i != e; ++i) {
|
||||
const FieldDecl *FD = *i;
|
||||
const FieldDecl *FD = &*i;
|
||||
assert(!FD->isBitField() &&
|
||||
"Cannot expand structure with bit-field members.");
|
||||
CharUnits FieldSize = getContext().getTypeSizeInChars(FD->getType());
|
||||
@ -1831,7 +1831,7 @@ void CodeGenFunction::ExpandTypeToArgs(QualType Ty, RValue RV,
|
||||
} else {
|
||||
for (RecordDecl::field_iterator i = RD->field_begin(), e = RD->field_end();
|
||||
i != e; ++i) {
|
||||
FieldDecl *FD = *i;
|
||||
FieldDecl *FD = &*i;
|
||||
|
||||
RValue FldRV = EmitRValueForField(LV, FD);
|
||||
ExpandTypeToArgs(FD->getType(), FldRV, Args, IRFuncTy);
|
||||
|
@ -808,7 +808,7 @@ HasTrivialDestructorBody(ASTContext &Context,
|
||||
// Check fields.
|
||||
for (CXXRecordDecl::field_iterator I = BaseClassDecl->field_begin(),
|
||||
E = BaseClassDecl->field_end(); I != E; ++I) {
|
||||
const FieldDecl *Field = *I;
|
||||
const FieldDecl *Field = &*I;
|
||||
|
||||
if (!FieldHasTrivialDestructorBody(Context, Field))
|
||||
return false;
|
||||
@ -869,7 +869,7 @@ static bool CanSkipVTablePointerInitialization(ASTContext &Context,
|
||||
const CXXRecordDecl *ClassDecl = Dtor->getParent();
|
||||
for (CXXRecordDecl::field_iterator I = ClassDecl->field_begin(),
|
||||
E = ClassDecl->field_end(); I != E; ++I) {
|
||||
const FieldDecl *Field = *I;
|
||||
const FieldDecl *Field = &*I;
|
||||
|
||||
if (!FieldHasTrivialDestructorBody(Context, Field))
|
||||
return false;
|
||||
@ -1066,7 +1066,7 @@ void CodeGenFunction::EnterDtorCleanups(const CXXDestructorDecl *DD,
|
||||
SmallVector<const FieldDecl *, 16> FieldDecls;
|
||||
for (CXXRecordDecl::field_iterator I = ClassDecl->field_begin(),
|
||||
E = ClassDecl->field_end(); I != E; ++I) {
|
||||
const FieldDecl *field = *I;
|
||||
const FieldDecl *field = &*I;
|
||||
QualType type = field->getType();
|
||||
QualType::DestructionKind dtorKind = type.isDestructedType();
|
||||
if (!dtorKind) continue;
|
||||
|
@ -797,7 +797,7 @@ CollectRecordFields(const RecordDecl *record, llvm::DIFile tunit,
|
||||
for (RecordDecl::field_iterator I = record->field_begin(),
|
||||
E = record->field_end();
|
||||
I != E; ++I, ++fieldNo) {
|
||||
FieldDecl *field = *I;
|
||||
FieldDecl *field = &*I;
|
||||
|
||||
if (IsMsStruct) {
|
||||
// Zero-length bitfields following non-bitfield members are ignored
|
||||
@ -1332,7 +1332,7 @@ llvm::DIType CGDebugInfo::CreateType(const ObjCInterfaceType *Ty,
|
||||
|
||||
for (ObjCContainerDecl::prop_iterator I = ID->prop_begin(),
|
||||
E = ID->prop_end(); I != E; ++I) {
|
||||
const ObjCPropertyDecl *PD = *I;
|
||||
const ObjCPropertyDecl *PD = &*I;
|
||||
SourceLocation Loc = PD->getLocation();
|
||||
llvm::DIFile PUnit = getOrCreateFile(Loc);
|
||||
unsigned PLine = getLineNumber(Loc);
|
||||
@ -2293,7 +2293,7 @@ void CGDebugInfo::EmitDeclare(const VarDecl *VD, unsigned Tag,
|
||||
for (RecordDecl::field_iterator I = RD->field_begin(),
|
||||
E = RD->field_end();
|
||||
I != E; ++I) {
|
||||
FieldDecl *Field = *I;
|
||||
FieldDecl *Field = &*I;
|
||||
llvm::DIType FieldTy = getOrCreateType(Field->getType(), Unit);
|
||||
StringRef FieldName = Field->getName();
|
||||
|
||||
|
@ -352,7 +352,7 @@ void AggExprEmitter::EmitStdInitializerList(llvm::Value *destPtr,
|
||||
return;
|
||||
}
|
||||
LValue DestLV = CGF.MakeNaturalAlignAddrLValue(destPtr, initList->getType());
|
||||
LValue start = CGF.EmitLValueForFieldInitialization(DestLV, *field);
|
||||
LValue start = CGF.EmitLValueForFieldInitialization(DestLV, &*field);
|
||||
llvm::Value *arrayStart = Builder.CreateStructGEP(alloc, 0, "arraystart");
|
||||
CGF.EmitStoreThroughLValue(RValue::get(arrayStart), start);
|
||||
++field;
|
||||
@ -361,7 +361,7 @@ void AggExprEmitter::EmitStdInitializerList(llvm::Value *destPtr,
|
||||
CGF.ErrorUnsupported(initList, "weird std::initializer_list");
|
||||
return;
|
||||
}
|
||||
LValue endOrLength = CGF.EmitLValueForFieldInitialization(DestLV, *field);
|
||||
LValue endOrLength = CGF.EmitLValueForFieldInitialization(DestLV, &*field);
|
||||
if (ctx.hasSameType(field->getType(), elementPtr)) {
|
||||
// End pointer.
|
||||
llvm::Value *arrayEnd = Builder.CreateStructGEP(alloc,numInits, "arrayend");
|
||||
@ -1005,7 +1005,7 @@ void AggExprEmitter::VisitInitListExpr(InitListExpr *E) {
|
||||
break;
|
||||
|
||||
|
||||
LValue LV = CGF.EmitLValueForFieldInitialization(DestLV, *field);
|
||||
LValue LV = CGF.EmitLValueForFieldInitialization(DestLV, &*field);
|
||||
// We never generate write-barries for initialized fields.
|
||||
LV.setNonGC(true);
|
||||
|
||||
|
@ -1824,10 +1824,10 @@ void CodeGenFunction::EmitLambdaExpr(const LambdaExpr *E, AggValueSlot Slot) {
|
||||
i != e; ++i, ++CurField) {
|
||||
// Emit initialization
|
||||
|
||||
LValue LV = EmitLValueForFieldInitialization(SlotLV, *CurField);
|
||||
LValue LV = EmitLValueForFieldInitialization(SlotLV, &*CurField);
|
||||
ArrayRef<VarDecl *> ArrayIndexes;
|
||||
if (CurField->getType()->isArrayType())
|
||||
ArrayIndexes = E->getCaptureInitIndexVars(i);
|
||||
EmitInitializerForField(*CurField, LV, *i, ArrayIndexes);
|
||||
EmitInitializerForField(&*CurField, LV, *i, ArrayIndexes);
|
||||
}
|
||||
}
|
||||
|
@ -386,20 +386,20 @@ bool ConstStructBuilder::Build(InitListExpr *ILE) {
|
||||
if (IsMsStruct) {
|
||||
// Zero-length bitfields following non-bitfield members are
|
||||
// ignored:
|
||||
if (CGM.getContext().ZeroBitfieldFollowsNonBitfield((*Field), LastFD)) {
|
||||
if (CGM.getContext().ZeroBitfieldFollowsNonBitfield(&*Field, LastFD)) {
|
||||
--FieldNo;
|
||||
continue;
|
||||
}
|
||||
LastFD = (*Field);
|
||||
LastFD = &*Field;
|
||||
}
|
||||
|
||||
// If this is a union, skip all the fields that aren't being initialized.
|
||||
if (RD->isUnion() && ILE->getInitializedFieldInUnion() != *Field)
|
||||
if (RD->isUnion() && ILE->getInitializedFieldInUnion() != &*Field)
|
||||
continue;
|
||||
|
||||
// Don't emit anonymous bitfields, they just affect layout.
|
||||
if (Field->isUnnamedBitfield()) {
|
||||
LastFD = (*Field);
|
||||
LastFD = &*Field;
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -417,10 +417,10 @@ bool ConstStructBuilder::Build(InitListExpr *ILE) {
|
||||
|
||||
if (!Field->isBitField()) {
|
||||
// Handle non-bitfield members.
|
||||
AppendField(*Field, Layout.getFieldOffset(FieldNo), EltInit);
|
||||
AppendField(&*Field, Layout.getFieldOffset(FieldNo), EltInit);
|
||||
} else {
|
||||
// Otherwise we have a bitfield.
|
||||
AppendBitField(*Field, Layout.getFieldOffset(FieldNo),
|
||||
AppendBitField(&*Field, Layout.getFieldOffset(FieldNo),
|
||||
cast<llvm::ConstantInt>(EltInit));
|
||||
}
|
||||
}
|
||||
@ -486,20 +486,20 @@ void ConstStructBuilder::Build(const APValue &Val, const RecordDecl *RD,
|
||||
if (IsMsStruct) {
|
||||
// Zero-length bitfields following non-bitfield members are
|
||||
// ignored:
|
||||
if (CGM.getContext().ZeroBitfieldFollowsNonBitfield((*Field), LastFD)) {
|
||||
if (CGM.getContext().ZeroBitfieldFollowsNonBitfield(&*Field, LastFD)) {
|
||||
--FieldNo;
|
||||
continue;
|
||||
}
|
||||
LastFD = (*Field);
|
||||
LastFD = &*Field;
|
||||
}
|
||||
|
||||
// If this is a union, skip all the fields that aren't being initialized.
|
||||
if (RD->isUnion() && Val.getUnionField() != *Field)
|
||||
if (RD->isUnion() && Val.getUnionField() != &*Field)
|
||||
continue;
|
||||
|
||||
// Don't emit anonymous bitfields, they just affect layout.
|
||||
if (Field->isUnnamedBitfield()) {
|
||||
LastFD = (*Field);
|
||||
LastFD = &*Field;
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -512,10 +512,10 @@ void ConstStructBuilder::Build(const APValue &Val, const RecordDecl *RD,
|
||||
|
||||
if (!Field->isBitField()) {
|
||||
// Handle non-bitfield members.
|
||||
AppendField(*Field, Layout.getFieldOffset(FieldNo) + OffsetBits, EltInit);
|
||||
AppendField(&*Field, Layout.getFieldOffset(FieldNo) + OffsetBits, EltInit);
|
||||
} else {
|
||||
// Otherwise we have a bitfield.
|
||||
AppendBitField(*Field, Layout.getFieldOffset(FieldNo) + OffsetBits,
|
||||
AppendBitField(&*Field, Layout.getFieldOffset(FieldNo) + OffsetBits,
|
||||
cast<llvm::ConstantInt>(EltInit));
|
||||
}
|
||||
}
|
||||
@ -1374,7 +1374,7 @@ static llvm::Constant *EmitNullConstant(CodeGenModule &CGM,
|
||||
// Fill in all the fields.
|
||||
for (RecordDecl::field_iterator I = record->field_begin(),
|
||||
E = record->field_end(); I != E; ++I) {
|
||||
const FieldDecl *field = *I;
|
||||
const FieldDecl *field = &*I;
|
||||
|
||||
// Fill in non-bitfields. (Bitfields always use a zero pattern, which we
|
||||
// will fill in later.)
|
||||
|
@ -1521,8 +1521,8 @@ Value *ScalarExprEmitter::VisitOffsetOfExpr(OffsetOfExpr *E) {
|
||||
// FIXME: It would be nice if we didn't have to loop here!
|
||||
for (RecordDecl::field_iterator Field = RD->field_begin(),
|
||||
FieldEnd = RD->field_end();
|
||||
Field != FieldEnd; (void)++Field, ++i) {
|
||||
if (*Field == MemberDecl)
|
||||
Field != FieldEnd; ++Field, ++i) {
|
||||
if (&*Field == MemberDecl)
|
||||
break;
|
||||
}
|
||||
assert(i < RL.getFieldCount() && "offsetof field in wrong type");
|
||||
|
@ -1627,7 +1627,7 @@ void CGObjCGNU::GenerateProtocol(const ObjCProtocolDecl *PD) {
|
||||
iter = PD->prop_begin(), endIter = PD->prop_end();
|
||||
iter != endIter ; iter++) {
|
||||
std::vector<llvm::Constant*> Fields;
|
||||
ObjCPropertyDecl *property = (*iter);
|
||||
ObjCPropertyDecl *property = &*iter;
|
||||
|
||||
Fields.push_back(MakeConstantString(property->getNameAsString()));
|
||||
Fields.push_back(llvm::ConstantInt::get(Int8Ty,
|
||||
@ -1877,8 +1877,8 @@ llvm::Constant *CGObjCGNU::GeneratePropertyList(const ObjCImplementationDecl *OI
|
||||
iter = OID->propimpl_begin(), endIter = OID->propimpl_end();
|
||||
iter != endIter ; iter++) {
|
||||
std::vector<llvm::Constant*> Fields;
|
||||
ObjCPropertyDecl *property = (*iter)->getPropertyDecl();
|
||||
ObjCPropertyImplDecl *propertyImpl = *iter;
|
||||
ObjCPropertyDecl *property = iter->getPropertyDecl();
|
||||
ObjCPropertyImplDecl *propertyImpl = &*iter;
|
||||
bool isSynthesized = (propertyImpl->getPropertyImplementation() ==
|
||||
ObjCPropertyImplDecl::Synthesize);
|
||||
|
||||
|
@ -2121,7 +2121,7 @@ PushProtocolProperties(llvm::SmallPtrSet<const IdentifierInfo*,16> &PropertySet,
|
||||
PushProtocolProperties(PropertySet, Properties, Container, (*P), ObjCTypes);
|
||||
for (ObjCContainerDecl::prop_iterator I = PROTO->prop_begin(),
|
||||
E = PROTO->prop_end(); I != E; ++I) {
|
||||
const ObjCPropertyDecl *PD = *I;
|
||||
const ObjCPropertyDecl *PD = &*I;
|
||||
if (!PropertySet.insert(PD->getIdentifier()))
|
||||
continue;
|
||||
llvm::Constant *Prop[] = {
|
||||
@ -2152,7 +2152,7 @@ llvm::Constant *CGObjCCommonMac::EmitPropertyList(Twine Name,
|
||||
llvm::SmallPtrSet<const IdentifierInfo*, 16> PropertySet;
|
||||
for (ObjCContainerDecl::prop_iterator I = OCD->prop_begin(),
|
||||
E = OCD->prop_end(); I != E; ++I) {
|
||||
const ObjCPropertyDecl *PD = *I;
|
||||
const ObjCPropertyDecl *PD = &*I;
|
||||
PropertySet.insert(PD->getIdentifier());
|
||||
llvm::Constant *Prop[] = {
|
||||
GetPropertyName(PD->getIdentifier()),
|
||||
@ -2403,7 +2403,7 @@ void CGObjCMac::GenerateClass(const ObjCImplementationDecl *ID) {
|
||||
|
||||
for (ObjCImplementationDecl::propimpl_iterator
|
||||
i = ID->propimpl_begin(), e = ID->propimpl_end(); i != e; ++i) {
|
||||
ObjCPropertyImplDecl *PID = *i;
|
||||
ObjCPropertyImplDecl *PID = &*i;
|
||||
|
||||
if (PID->getPropertyImplementation() == ObjCPropertyImplDecl::Synthesize) {
|
||||
ObjCPropertyDecl *PD = PID->getPropertyDecl();
|
||||
@ -3818,7 +3818,10 @@ void CGObjCCommonMac::BuildAggrIvarRecordLayout(const RecordType *RT,
|
||||
bool &HasUnion) {
|
||||
const RecordDecl *RD = RT->getDecl();
|
||||
// FIXME - Use iterator.
|
||||
SmallVector<const FieldDecl*, 16> Fields(RD->field_begin(), RD->field_end());
|
||||
SmallVector<const FieldDecl*, 16> Fields;
|
||||
for (RecordDecl::field_iterator i = RD->field_begin(),
|
||||
e = RD->field_end(); i != e; ++i)
|
||||
Fields.push_back(&*i);
|
||||
llvm::Type *Ty = CGM.getTypes().ConvertType(QualType(RT, 0));
|
||||
const llvm::StructLayout *RecLayout =
|
||||
CGM.getTargetData().getStructLayout(cast<llvm::StructType>(Ty));
|
||||
@ -5001,7 +5004,7 @@ llvm::GlobalVariable * CGObjCNonFragileABIMac::BuildClassRoTInitializer(
|
||||
}
|
||||
for (ObjCImplementationDecl::propimpl_iterator
|
||||
i = ID->propimpl_begin(), e = ID->propimpl_end(); i != e; ++i) {
|
||||
ObjCPropertyImplDecl *PID = *i;
|
||||
ObjCPropertyImplDecl *PID = &*i;
|
||||
|
||||
if (PID->getPropertyImplementation() == ObjCPropertyImplDecl::Synthesize){
|
||||
ObjCPropertyDecl *PD = PID->getPropertyDecl();
|
||||
|
@ -538,7 +538,7 @@ void CGRecordLayoutBuilder::LayoutUnion(const RecordDecl *D) {
|
||||
fieldEnd = D->field_end(); field != fieldEnd; ++field, ++fieldNo) {
|
||||
assert(layout.getFieldOffset(fieldNo) == 0 &&
|
||||
"Union field offset did not start at the beginning of record!");
|
||||
llvm::Type *fieldType = LayoutUnionField(*field, layout);
|
||||
llvm::Type *fieldType = LayoutUnionField(&*field, layout);
|
||||
|
||||
if (!fieldType)
|
||||
continue;
|
||||
@ -820,7 +820,7 @@ bool CGRecordLayoutBuilder::LayoutFields(const RecordDecl *D) {
|
||||
if (IsMsStruct) {
|
||||
// Zero-length bitfields following non-bitfield members are
|
||||
// ignored:
|
||||
const FieldDecl *FD = (*Field);
|
||||
const FieldDecl *FD = &*Field;
|
||||
if (Types.getContext().ZeroBitfieldFollowsNonBitfield(FD, LastFD)) {
|
||||
--FieldNo;
|
||||
continue;
|
||||
@ -828,7 +828,7 @@ bool CGRecordLayoutBuilder::LayoutFields(const RecordDecl *D) {
|
||||
LastFD = FD;
|
||||
}
|
||||
|
||||
if (!LayoutField(*Field, Layout.getFieldOffset(FieldNo))) {
|
||||
if (!LayoutField(&*Field, Layout.getFieldOffset(FieldNo))) {
|
||||
assert(!Packed &&
|
||||
"Could not layout fields even with a packed LLVM struct!");
|
||||
return false;
|
||||
@ -1063,7 +1063,7 @@ CGRecordLayout *CodeGenTypes::ComputeRecordLayout(const RecordDecl *D,
|
||||
const FieldDecl *LastFD = 0;
|
||||
bool IsMsStruct = D->hasAttr<MsStructAttr>();
|
||||
for (unsigned i = 0, e = AST_RL.getFieldCount(); i != e; ++i, ++it) {
|
||||
const FieldDecl *FD = *it;
|
||||
const FieldDecl *FD = &*it;
|
||||
|
||||
// For non-bit-fields, just check that the LLVM struct offset matches the
|
||||
// AST offset.
|
||||
@ -1124,7 +1124,7 @@ void CGRecordLayout::print(raw_ostream &OS) const {
|
||||
const RecordDecl *RD = it->first->getParent();
|
||||
unsigned Index = 0;
|
||||
for (RecordDecl::field_iterator
|
||||
it2 = RD->field_begin(); *it2 != it->first; ++it2)
|
||||
it2 = RD->field_begin(); &*it2 != it->first; ++it2)
|
||||
++Index;
|
||||
BFIs.push_back(std::make_pair(Index, &it->second));
|
||||
}
|
||||
|
@ -2344,7 +2344,7 @@ void CodeGenModule::EmitObjCPropertyImplementations(const
|
||||
ObjCImplementationDecl *D) {
|
||||
for (ObjCImplementationDecl::propimpl_iterator
|
||||
i = D->propimpl_begin(), e = D->propimpl_end(); i != e; ++i) {
|
||||
ObjCPropertyImplDecl *PID = *i;
|
||||
ObjCPropertyImplDecl *PID = &*i;
|
||||
|
||||
// Dynamic is just for type-checking.
|
||||
if (PID->getPropertyImplementation() == ObjCPropertyImplDecl::Synthesize) {
|
||||
|
@ -161,7 +161,7 @@ static bool isEmptyRecord(ASTContext &Context, QualType T, bool AllowArrays) {
|
||||
|
||||
for (RecordDecl::field_iterator i = RD->field_begin(), e = RD->field_end();
|
||||
i != e; ++i)
|
||||
if (!isEmptyField(Context, *i, AllowArrays))
|
||||
if (!isEmptyField(Context, &*i, AllowArrays))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
@ -229,7 +229,7 @@ static const Type *isSingleElementStruct(QualType T, ASTContext &Context) {
|
||||
// Check for single element.
|
||||
for (RecordDecl::field_iterator i = RD->field_begin(), e = RD->field_end();
|
||||
i != e; ++i) {
|
||||
const FieldDecl *FD = *i;
|
||||
const FieldDecl *FD = &*i;
|
||||
QualType FT = FD->getType();
|
||||
|
||||
// Ignore empty fields.
|
||||
@ -301,7 +301,7 @@ static bool canExpandIndirectArgument(QualType Ty, ASTContext &Context) {
|
||||
|
||||
for (RecordDecl::field_iterator i = RD->field_begin(), e = RD->field_end();
|
||||
i != e; ++i) {
|
||||
const FieldDecl *FD = *i;
|
||||
const FieldDecl *FD = &*i;
|
||||
|
||||
if (!is32Or64BitBasicType(FD->getType(), Context))
|
||||
return false;
|
||||
@ -534,7 +534,7 @@ bool X86_32ABIInfo::shouldReturnTypeInRegister(QualType Ty,
|
||||
// passed in a register.
|
||||
for (RecordDecl::field_iterator i = RT->getDecl()->field_begin(),
|
||||
e = RT->getDecl()->field_end(); i != e; ++i) {
|
||||
const FieldDecl *FD = *i;
|
||||
const FieldDecl *FD = &*i;
|
||||
|
||||
// Empty fields are ignored.
|
||||
if (isEmptyField(Context, FD, true))
|
||||
@ -2540,7 +2540,7 @@ static bool isHomogeneousAggregate(QualType Ty, const Type *&Base,
|
||||
Members = 0;
|
||||
for (RecordDecl::field_iterator i = RD->field_begin(), e = RD->field_end();
|
||||
i != e; ++i) {
|
||||
const FieldDecl *FD = *i;
|
||||
const FieldDecl *FD = &*i;
|
||||
uint64_t FldMembers;
|
||||
if (!isHomogeneousAggregate(FD->getType(), Base, Context, &FldMembers))
|
||||
return false;
|
||||
@ -2683,7 +2683,7 @@ static bool isIntegerLikeType(QualType Ty, ASTContext &Context,
|
||||
unsigned idx = 0;
|
||||
for (RecordDecl::field_iterator i = RD->field_begin(), e = RD->field_end();
|
||||
i != e; ++i, ++idx) {
|
||||
const FieldDecl *FD = *i;
|
||||
const FieldDecl *FD = &*i;
|
||||
|
||||
// Bit-fields are not addressable, we only need to verify they are "integer
|
||||
// like". We still have to disallow a subsequent non-bitfield, for example:
|
||||
@ -3161,7 +3161,7 @@ llvm::Type* MipsABIInfo::HandleAggregates(QualType Ty) const {
|
||||
// double fields.
|
||||
for (RecordDecl::field_iterator i = RD->field_begin(), e = RD->field_end();
|
||||
i != e; ++i, ++idx) {
|
||||
const QualType Ty = (*i)->getType();
|
||||
const QualType Ty = i->getType();
|
||||
const BuiltinType *BT = Ty->getAs<BuiltinType>();
|
||||
|
||||
if (!BT || BT->getKind() != BuiltinType::Double)
|
||||
@ -3272,12 +3272,12 @@ MipsABIInfo::returnAggregateInRegs(QualType RetTy, uint64_t Size) const {
|
||||
if (FieldCnt && (FieldCnt <= 2) && !Layout.getFieldOffset(0)) {
|
||||
RecordDecl::field_iterator b = RD->field_begin(), e = RD->field_end();
|
||||
for (; b != e; ++b) {
|
||||
const BuiltinType *BT = (*b)->getType()->getAs<BuiltinType>();
|
||||
const BuiltinType *BT = b->getType()->getAs<BuiltinType>();
|
||||
|
||||
if (!BT || !BT->isFloatingPoint())
|
||||
break;
|
||||
|
||||
RTList.push_back(CGT.ConvertType((*b)->getType()));
|
||||
RTList.push_back(CGT.ConvertType(b->getType()));
|
||||
}
|
||||
|
||||
if (b == e)
|
||||
|
@ -174,7 +174,7 @@ LayoutOverrideSource::layoutRecordType(const RecordDecl *Record,
|
||||
if (NumFields >= Known->second.FieldOffsets.size())
|
||||
continue;
|
||||
|
||||
FieldOffsets[*F] = Known->second.FieldOffsets[NumFields];
|
||||
FieldOffsets[&*F] = Known->second.FieldOffsets[NumFields];
|
||||
}
|
||||
|
||||
// Wrong number of fields.
|
||||
|
@ -989,7 +989,7 @@ void RewriteModernObjC::RewriteCategoryDecl(ObjCCategoryDecl *CatDecl) {
|
||||
InsertText(CatDecl->getIvarLBraceLoc(), "// ");
|
||||
for (ObjCCategoryDecl::ivar_iterator
|
||||
I = CatDecl->ivar_begin(), E = CatDecl->ivar_end(); I != E; ++I) {
|
||||
ObjCIvarDecl *Ivar = (*I);
|
||||
ObjCIvarDecl *Ivar = &*I;
|
||||
SourceLocation LocStart = Ivar->getLocStart();
|
||||
ReplaceText(LocStart, 0, "// ");
|
||||
}
|
||||
@ -998,7 +998,7 @@ void RewriteModernObjC::RewriteCategoryDecl(ObjCCategoryDecl *CatDecl) {
|
||||
|
||||
for (ObjCCategoryDecl::prop_iterator I = CatDecl->prop_begin(),
|
||||
E = CatDecl->prop_end(); I != E; ++I)
|
||||
RewriteProperty(*I);
|
||||
RewriteProperty(&*I);
|
||||
|
||||
for (ObjCCategoryDecl::instmeth_iterator
|
||||
I = CatDecl->instmeth_begin(), E = CatDecl->instmeth_end();
|
||||
@ -1032,7 +1032,7 @@ void RewriteModernObjC::RewriteProtocolDecl(ObjCProtocolDecl *PDecl) {
|
||||
|
||||
for (ObjCInterfaceDecl::prop_iterator I = PDecl->prop_begin(),
|
||||
E = PDecl->prop_end(); I != E; ++I)
|
||||
RewriteProperty(*I);
|
||||
RewriteProperty(&*I);
|
||||
|
||||
// Lastly, comment out the @end.
|
||||
SourceLocation LocEnd = PDecl->getAtEndRange().getBegin();
|
||||
@ -1225,7 +1225,7 @@ void RewriteModernObjC::RewriteImplementationDecl(Decl *OID) {
|
||||
InsertText(IMD->getIvarLBraceLoc(), "// ");
|
||||
for (ObjCImplementationDecl::ivar_iterator
|
||||
I = IMD->ivar_begin(), E = IMD->ivar_end(); I != E; ++I) {
|
||||
ObjCIvarDecl *Ivar = (*I);
|
||||
ObjCIvarDecl *Ivar = &*I;
|
||||
SourceLocation LocStart = Ivar->getLocStart();
|
||||
ReplaceText(LocStart, 0, "// ");
|
||||
}
|
||||
@ -1268,7 +1268,7 @@ void RewriteModernObjC::RewriteImplementationDecl(Decl *OID) {
|
||||
I = IMD ? IMD->propimpl_begin() : CID->propimpl_begin(),
|
||||
E = IMD ? IMD->propimpl_end() : CID->propimpl_end();
|
||||
I != E; ++I) {
|
||||
RewritePropertyImplDecl(*I, IMD, CID);
|
||||
RewritePropertyImplDecl(&*I, IMD, CID);
|
||||
}
|
||||
|
||||
InsertText(IMD ? IMD->getLocEnd() : CID->getLocEnd(), "// ");
|
||||
@ -1296,7 +1296,7 @@ void RewriteModernObjC::RewriteInterfaceDecl(ObjCInterfaceDecl *ClassDecl) {
|
||||
|
||||
for (ObjCInterfaceDecl::prop_iterator I = ClassDecl->prop_begin(),
|
||||
E = ClassDecl->prop_end(); I != E; ++I)
|
||||
RewriteProperty(*I);
|
||||
RewriteProperty(&*I);
|
||||
for (ObjCInterfaceDecl::instmeth_iterator
|
||||
I = ClassDecl->instmeth_begin(), E = ClassDecl->instmeth_end();
|
||||
I != E; ++I)
|
||||
@ -3522,7 +3522,7 @@ bool RewriteModernObjC::RewriteObjCFieldDeclType(QualType &Type,
|
||||
Result += " {\n";
|
||||
for (RecordDecl::field_iterator i = RD->field_begin(),
|
||||
e = RD->field_end(); i != e; ++i) {
|
||||
FieldDecl *FD = *i;
|
||||
FieldDecl *FD = &*i;
|
||||
RewriteObjCFieldDecl(FD, Result);
|
||||
}
|
||||
Result += "\t} ";
|
||||
@ -5398,7 +5398,7 @@ Stmt *RewriteModernObjC::RewriteFunctionBodyOrGlobalInitializer(Stmt *S) {
|
||||
void RewriteModernObjC::RewriteRecordBody(RecordDecl *RD) {
|
||||
for (RecordDecl::field_iterator i = RD->field_begin(),
|
||||
e = RD->field_end(); i != e; ++i) {
|
||||
FieldDecl *FD = *i;
|
||||
FieldDecl *FD = &*i;
|
||||
if (isTopLevelBlockPointerType(FD->getType()))
|
||||
RewriteBlockPointerDecl(FD);
|
||||
if (FD->getType()->isObjCQualifiedIdType() ||
|
||||
@ -6589,7 +6589,7 @@ void RewriteModernObjC::RewriteObjCProtocolMetaData(ObjCProtocolDecl *PDecl,
|
||||
std::vector<ObjCPropertyDecl *> ProtocolProperties;
|
||||
for (ObjCContainerDecl::prop_iterator I = PDecl->prop_begin(),
|
||||
E = PDecl->prop_end(); I != E; ++I)
|
||||
ProtocolProperties.push_back(*I);
|
||||
ProtocolProperties.push_back(&*I);
|
||||
|
||||
Write_prop_list_t_initializer(*this, Context, Result, ProtocolProperties,
|
||||
/* Container */0,
|
||||
@ -6760,11 +6760,11 @@ void RewriteModernObjC::RewriteObjCClassMetaData(ObjCImplementationDecl *IDecl,
|
||||
for (ObjCImplDecl::propimpl_iterator Prop = IDecl->propimpl_begin(),
|
||||
PropEnd = IDecl->propimpl_end();
|
||||
Prop != PropEnd; ++Prop) {
|
||||
if ((*Prop)->getPropertyImplementation() == ObjCPropertyImplDecl::Dynamic)
|
||||
if (Prop->getPropertyImplementation() == ObjCPropertyImplDecl::Dynamic)
|
||||
continue;
|
||||
if (!(*Prop)->getPropertyIvarDecl())
|
||||
if (!Prop->getPropertyIvarDecl())
|
||||
continue;
|
||||
ObjCPropertyDecl *PD = (*Prop)->getPropertyDecl();
|
||||
ObjCPropertyDecl *PD = Prop->getPropertyDecl();
|
||||
if (!PD)
|
||||
continue;
|
||||
if (ObjCMethodDecl *Getter = PD->getGetterMethodDecl())
|
||||
@ -6810,7 +6810,7 @@ void RewriteModernObjC::RewriteObjCClassMetaData(ObjCImplementationDecl *IDecl,
|
||||
std::vector<ObjCPropertyDecl *> ClassProperties;
|
||||
for (ObjCContainerDecl::prop_iterator I = CDecl->prop_begin(),
|
||||
E = CDecl->prop_end(); I != E; ++I)
|
||||
ClassProperties.push_back(*I);
|
||||
ClassProperties.push_back(&*I);
|
||||
|
||||
Write_prop_list_t_initializer(*this, Context, Result, ClassProperties,
|
||||
/* Container */IDecl,
|
||||
@ -7024,11 +7024,11 @@ void RewriteModernObjC::RewriteObjCCategoryImplDecl(ObjCCategoryImplDecl *IDecl,
|
||||
for (ObjCImplDecl::propimpl_iterator Prop = IDecl->propimpl_begin(),
|
||||
PropEnd = IDecl->propimpl_end();
|
||||
Prop != PropEnd; ++Prop) {
|
||||
if ((*Prop)->getPropertyImplementation() == ObjCPropertyImplDecl::Dynamic)
|
||||
if (Prop->getPropertyImplementation() == ObjCPropertyImplDecl::Dynamic)
|
||||
continue;
|
||||
if (!(*Prop)->getPropertyIvarDecl())
|
||||
if (!Prop->getPropertyIvarDecl())
|
||||
continue;
|
||||
ObjCPropertyDecl *PD = (*Prop)->getPropertyDecl();
|
||||
ObjCPropertyDecl *PD = Prop->getPropertyDecl();
|
||||
if (!PD)
|
||||
continue;
|
||||
if (ObjCMethodDecl *Getter = PD->getGetterMethodDecl())
|
||||
@ -7072,7 +7072,7 @@ void RewriteModernObjC::RewriteObjCCategoryImplDecl(ObjCCategoryImplDecl *IDecl,
|
||||
std::vector<ObjCPropertyDecl *> ClassProperties;
|
||||
for (ObjCContainerDecl::prop_iterator I = CDecl->prop_begin(),
|
||||
E = CDecl->prop_end(); I != E; ++I)
|
||||
ClassProperties.push_back(*I);
|
||||
ClassProperties.push_back(&*I);
|
||||
|
||||
Write_prop_list_t_initializer(*this, Context, Result, ClassProperties,
|
||||
/* Container */0,
|
||||
|
@ -967,7 +967,7 @@ void RewriteObjC::RewriteCategoryDecl(ObjCCategoryDecl *CatDecl) {
|
||||
|
||||
for (ObjCCategoryDecl::prop_iterator I = CatDecl->prop_begin(),
|
||||
E = CatDecl->prop_end(); I != E; ++I)
|
||||
RewriteProperty(*I);
|
||||
RewriteProperty(&*I);
|
||||
|
||||
for (ObjCCategoryDecl::instmeth_iterator
|
||||
I = CatDecl->instmeth_begin(), E = CatDecl->instmeth_end();
|
||||
@ -1001,7 +1001,7 @@ void RewriteObjC::RewriteProtocolDecl(ObjCProtocolDecl *PDecl) {
|
||||
|
||||
for (ObjCInterfaceDecl::prop_iterator I = PDecl->prop_begin(),
|
||||
E = PDecl->prop_end(); I != E; ++I)
|
||||
RewriteProperty(*I);
|
||||
RewriteProperty(&*I);
|
||||
|
||||
// Lastly, comment out the @end.
|
||||
SourceLocation LocEnd = PDecl->getAtEndRange().getBegin();
|
||||
@ -1207,7 +1207,7 @@ void RewriteObjC::RewriteImplementationDecl(Decl *OID) {
|
||||
I = IMD ? IMD->propimpl_begin() : CID->propimpl_begin(),
|
||||
E = IMD ? IMD->propimpl_end() : CID->propimpl_end();
|
||||
I != E; ++I) {
|
||||
RewritePropertyImplDecl(*I, IMD, CID);
|
||||
RewritePropertyImplDecl(&*I, IMD, CID);
|
||||
}
|
||||
|
||||
InsertText(IMD ? IMD->getLocEnd() : CID->getLocEnd(), "// ");
|
||||
@ -1233,7 +1233,7 @@ void RewriteObjC::RewriteInterfaceDecl(ObjCInterfaceDecl *ClassDecl) {
|
||||
|
||||
for (ObjCInterfaceDecl::prop_iterator I = ClassDecl->prop_begin(),
|
||||
E = ClassDecl->prop_end(); I != E; ++I)
|
||||
RewriteProperty(*I);
|
||||
RewriteProperty(&*I);
|
||||
for (ObjCInterfaceDecl::instmeth_iterator
|
||||
I = ClassDecl->instmeth_begin(), E = ClassDecl->instmeth_end();
|
||||
I != E; ++I)
|
||||
@ -4881,7 +4881,7 @@ Stmt *RewriteObjC::RewriteFunctionBodyOrGlobalInitializer(Stmt *S) {
|
||||
void RewriteObjC::RewriteRecordBody(RecordDecl *RD) {
|
||||
for (RecordDecl::field_iterator i = RD->field_begin(),
|
||||
e = RD->field_end(); i != e; ++i) {
|
||||
FieldDecl *FD = *i;
|
||||
FieldDecl *FD = &*i;
|
||||
if (isTopLevelBlockPointerType(FD->getType()))
|
||||
RewriteBlockPointerDecl(FD);
|
||||
if (FD->getType()->isObjCQualifiedIdType() ||
|
||||
@ -5434,7 +5434,7 @@ void RewriteObjCFragileABI::RewriteObjCClassMetaData(ObjCImplementationDecl *IDe
|
||||
for (ObjCInterfaceDecl::ivar_iterator
|
||||
IV = IDecl->ivar_begin(), IVEnd = IDecl->ivar_end();
|
||||
IV != IVEnd; ++IV)
|
||||
IVars.push_back(*IV);
|
||||
IVars.push_back(&*IV);
|
||||
IVI = IDecl->ivar_begin();
|
||||
IVE = IDecl->ivar_end();
|
||||
} else {
|
||||
@ -5442,25 +5442,25 @@ void RewriteObjCFragileABI::RewriteObjCClassMetaData(ObjCImplementationDecl *IDe
|
||||
IVE = CDecl->ivar_end();
|
||||
}
|
||||
Result += "\t,{{\"";
|
||||
Result += (*IVI)->getNameAsString();
|
||||
Result += IVI->getNameAsString();
|
||||
Result += "\", \"";
|
||||
std::string TmpString, StrEncoding;
|
||||
Context->getObjCEncodingForType((*IVI)->getType(), TmpString, *IVI);
|
||||
Context->getObjCEncodingForType(IVI->getType(), TmpString, &*IVI);
|
||||
QuoteDoublequotes(TmpString, StrEncoding);
|
||||
Result += StrEncoding;
|
||||
Result += "\", ";
|
||||
RewriteIvarOffsetComputation(*IVI, Result);
|
||||
RewriteIvarOffsetComputation(&*IVI, Result);
|
||||
Result += "}\n";
|
||||
for (++IVI; IVI != IVE; ++IVI) {
|
||||
Result += "\t ,{\"";
|
||||
Result += (*IVI)->getNameAsString();
|
||||
Result += IVI->getNameAsString();
|
||||
Result += "\", \"";
|
||||
std::string TmpString, StrEncoding;
|
||||
Context->getObjCEncodingForType((*IVI)->getType(), TmpString, *IVI);
|
||||
Context->getObjCEncodingForType(IVI->getType(), TmpString, &*IVI);
|
||||
QuoteDoublequotes(TmpString, StrEncoding);
|
||||
Result += StrEncoding;
|
||||
Result += "\", ";
|
||||
RewriteIvarOffsetComputation((*IVI), Result);
|
||||
RewriteIvarOffsetComputation(&*IVI, Result);
|
||||
Result += "}\n";
|
||||
}
|
||||
|
||||
@ -5476,11 +5476,11 @@ void RewriteObjCFragileABI::RewriteObjCClassMetaData(ObjCImplementationDecl *IDe
|
||||
for (ObjCImplDecl::propimpl_iterator Prop = IDecl->propimpl_begin(),
|
||||
PropEnd = IDecl->propimpl_end();
|
||||
Prop != PropEnd; ++Prop) {
|
||||
if ((*Prop)->getPropertyImplementation() == ObjCPropertyImplDecl::Dynamic)
|
||||
if (Prop->getPropertyImplementation() == ObjCPropertyImplDecl::Dynamic)
|
||||
continue;
|
||||
if (!(*Prop)->getPropertyIvarDecl())
|
||||
if (!Prop->getPropertyIvarDecl())
|
||||
continue;
|
||||
ObjCPropertyDecl *PD = (*Prop)->getPropertyDecl();
|
||||
ObjCPropertyDecl *PD = Prop->getPropertyDecl();
|
||||
if (!PD)
|
||||
continue;
|
||||
if (ObjCMethodDecl *Getter = PD->getGetterMethodDecl())
|
||||
@ -5761,11 +5761,11 @@ void RewriteObjCFragileABI::RewriteObjCCategoryImplDecl(ObjCCategoryImplDecl *ID
|
||||
for (ObjCImplDecl::propimpl_iterator Prop = IDecl->propimpl_begin(),
|
||||
PropEnd = IDecl->propimpl_end();
|
||||
Prop != PropEnd; ++Prop) {
|
||||
if ((*Prop)->getPropertyImplementation() == ObjCPropertyImplDecl::Dynamic)
|
||||
if (Prop->getPropertyImplementation() == ObjCPropertyImplDecl::Dynamic)
|
||||
continue;
|
||||
if (!(*Prop)->getPropertyIvarDecl())
|
||||
if (!Prop->getPropertyIvarDecl())
|
||||
continue;
|
||||
ObjCPropertyDecl *PD = (*Prop)->getPropertyDecl();
|
||||
ObjCPropertyDecl *PD = Prop->getPropertyDecl();
|
||||
if (!PD)
|
||||
continue;
|
||||
if (ObjCMethodDecl *Getter = PD->getGetterMethodDecl())
|
||||
|
@ -3347,7 +3347,7 @@ static void AddObjCProperties(ObjCContainerDecl *Container,
|
||||
P != PEnd;
|
||||
++P) {
|
||||
if (AddedProperties.insert(P->getIdentifier()))
|
||||
Results.MaybeAddResult(Result(*P, 0), CurContext);
|
||||
Results.MaybeAddResult(Result(&*P, 0), CurContext);
|
||||
}
|
||||
|
||||
// Add nullary methods
|
||||
@ -3362,11 +3362,11 @@ static void AddObjCProperties(ObjCContainerDecl *Container,
|
||||
if (AddedProperties.insert(Name)) {
|
||||
CodeCompletionBuilder Builder(Results.getAllocator(),
|
||||
Results.getCodeCompletionTUInfo());
|
||||
AddResultTypeChunk(Context, Policy, *M, Builder);
|
||||
AddResultTypeChunk(Context, Policy, &*M, Builder);
|
||||
Builder.AddTypedTextChunk(
|
||||
Results.getAllocator().CopyString(Name->getName()));
|
||||
|
||||
Results.MaybeAddResult(Result(Builder.TakeString(), *M,
|
||||
Results.MaybeAddResult(Result(Builder.TakeString(), &*M,
|
||||
CCP_MemberDeclaration + CCD_MethodAsProperty),
|
||||
CurContext);
|
||||
}
|
||||
@ -3671,10 +3671,10 @@ void Sema::CodeCompleteCase(Scope *S) {
|
||||
for (EnumDecl::enumerator_iterator E = Enum->enumerator_begin(),
|
||||
EEnd = Enum->enumerator_end();
|
||||
E != EEnd; ++E) {
|
||||
if (EnumeratorsSeen.count(*E))
|
||||
if (EnumeratorsSeen.count(&*E))
|
||||
continue;
|
||||
|
||||
CodeCompletionResult R(*E, Qualifier);
|
||||
CodeCompletionResult R(&*E, Qualifier);
|
||||
R.Priority = CCP_EnumInCase;
|
||||
Results.AddResult(R, CurContext, 0, false);
|
||||
}
|
||||
@ -4036,7 +4036,7 @@ void Sema::CodeCompleteNamespaceDecl(Scope *S) {
|
||||
for (DeclContext::specific_decl_iterator<NamespaceDecl>
|
||||
NS(Ctx->decls_begin()), NSEnd(Ctx->decls_end());
|
||||
NS != NSEnd; ++NS)
|
||||
OrigToLatest[NS->getOriginalNamespace()] = *NS;
|
||||
OrigToLatest[NS->getOriginalNamespace()] = &*NS;
|
||||
|
||||
// Add the most recent definition (or extended definition) of each
|
||||
// namespace to the list of results.
|
||||
@ -4192,7 +4192,7 @@ void Sema::CodeCompleteConstructorInitializer(Decl *ConstructorD,
|
||||
SawLastInitializer
|
||||
= NumInitializers > 0 &&
|
||||
Initializers[NumInitializers - 1]->isAnyMemberInitializer() &&
|
||||
Initializers[NumInitializers - 1]->getAnyMember() == *Field;
|
||||
Initializers[NumInitializers - 1]->getAnyMember() == &*Field;
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -4209,7 +4209,7 @@ void Sema::CodeCompleteConstructorInitializer(Decl *ConstructorD,
|
||||
: CCP_MemberDeclaration,
|
||||
CXCursor_MemberRef,
|
||||
CXAvailability_Available,
|
||||
*Field));
|
||||
&*Field));
|
||||
SawLastInitializer = false;
|
||||
}
|
||||
Results.ExitScope();
|
||||
@ -4697,17 +4697,17 @@ static void AddObjCMethods(ObjCContainerDecl *Container,
|
||||
for (ObjCContainerDecl::method_iterator M = Container->meth_begin(),
|
||||
MEnd = Container->meth_end();
|
||||
M != MEnd; ++M) {
|
||||
if ((*M)->isInstanceMethod() == WantInstanceMethods) {
|
||||
if (M->isInstanceMethod() == WantInstanceMethods) {
|
||||
// Check whether the selector identifiers we've been given are a
|
||||
// subset of the identifiers for this particular method.
|
||||
if (!isAcceptableObjCMethod(*M, WantKind, SelIdents, NumSelIdents,
|
||||
if (!isAcceptableObjCMethod(&*M, WantKind, SelIdents, NumSelIdents,
|
||||
AllowSameLength))
|
||||
continue;
|
||||
|
||||
if (!Selectors.insert((*M)->getSelector()))
|
||||
if (!Selectors.insert(M->getSelector()))
|
||||
continue;
|
||||
|
||||
Result R = Result(*M, 0);
|
||||
Result R = Result(&*M, 0);
|
||||
R.StartParameter = NumSelIdents;
|
||||
R.AllParametersAreInformative = (WantKind != MK_Any);
|
||||
if (!InOriginalClass)
|
||||
@ -6020,12 +6020,12 @@ static void FindImplementableMethods(ASTContext &Context,
|
||||
for (ObjCContainerDecl::method_iterator M = Container->meth_begin(),
|
||||
MEnd = Container->meth_end();
|
||||
M != MEnd; ++M) {
|
||||
if ((*M)->isInstanceMethod() == WantInstanceMethods) {
|
||||
if (M->isInstanceMethod() == WantInstanceMethods) {
|
||||
if (!ReturnType.isNull() &&
|
||||
!Context.hasSameUnqualifiedType(ReturnType, (*M)->getResultType()))
|
||||
!Context.hasSameUnqualifiedType(ReturnType, M->getResultType()))
|
||||
continue;
|
||||
|
||||
KnownMethods[(*M)->getSelector()] = std::make_pair(*M, InOriginalClass);
|
||||
KnownMethods[M->getSelector()] = std::make_pair(&*M, InOriginalClass);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -6841,7 +6841,7 @@ void Sema::CodeCompleteObjCMethodDecl(Scope *S,
|
||||
for (ObjCContainerDecl::prop_iterator P = Containers[I]->prop_begin(),
|
||||
PEnd = Containers[I]->prop_end();
|
||||
P != PEnd; ++P) {
|
||||
AddObjCKeyValueCompletions(*P, IsInstanceMethod, ReturnType, Context,
|
||||
AddObjCKeyValueCompletions(&*P, IsInstanceMethod, ReturnType, Context,
|
||||
KnownSelectors, Results);
|
||||
}
|
||||
}
|
||||
|
@ -7361,7 +7361,7 @@ Decl *Sema::ActOnStartOfFunctionDef(Scope *FnBodyScope, Decl *D) {
|
||||
if (EnumDecl *ED = dyn_cast<EnumDecl>(D)) {
|
||||
for (EnumDecl::enumerator_iterator EI = ED->enumerator_begin(),
|
||||
EE = ED->enumerator_end(); EI != EE; ++EI)
|
||||
PushOnScopeChains(*EI, FnBodyScope, /*AddToContext=*/false);
|
||||
PushOnScopeChains(&*EI, FnBodyScope, /*AddToContext=*/false);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -9186,7 +9186,7 @@ void Sema::DiagnoseNontrivial(const RecordType* T, CXXSpecialMember member) {
|
||||
if (RD->hasUserDeclaredConstructor()) {
|
||||
typedef CXXRecordDecl::ctor_iterator ctor_iter;
|
||||
for (ctor_iter CI = RD->ctor_begin(), CE = RD->ctor_end(); CI != CE; ++CI)
|
||||
if (DiagnoseNontrivialUserProvidedCtor(*this, QT, *CI, member))
|
||||
if (DiagnoseNontrivialUserProvidedCtor(*this, QT, &*CI, member))
|
||||
return;
|
||||
|
||||
// No user-provided constructors; look for constructor templates.
|
||||
@ -9303,12 +9303,12 @@ void Sema::DiagnoseNontrivial(const RecordType* T, CXXSpecialMember member) {
|
||||
typedef RecordDecl::field_iterator field_iter;
|
||||
for (field_iter fi = RD->field_begin(), fe = RD->field_end(); fi != fe;
|
||||
++fi) {
|
||||
QualType EltTy = Context.getBaseElementType((*fi)->getType());
|
||||
QualType EltTy = Context.getBaseElementType(fi->getType());
|
||||
if (const RecordType *EltRT = EltTy->getAs<RecordType>()) {
|
||||
CXXRecordDecl* EltRD = cast<CXXRecordDecl>(EltRT->getDecl());
|
||||
|
||||
if (!(EltRD->*hasTrivial)()) {
|
||||
SourceLocation FLoc = (*fi)->getLocation();
|
||||
SourceLocation FLoc = fi->getLocation();
|
||||
Diag(FLoc, diag::note_nontrivial_has_nontrivial) << QT << 0 << member;
|
||||
DiagnoseNontrivial(EltRT, member);
|
||||
return;
|
||||
@ -9324,7 +9324,7 @@ void Sema::DiagnoseNontrivial(const RecordType* T, CXXSpecialMember member) {
|
||||
case Qualifiers::OCL_Autoreleasing:
|
||||
case Qualifiers::OCL_Weak:
|
||||
case Qualifiers::OCL_Strong:
|
||||
Diag((*fi)->getLocation(), diag::note_nontrivial_objc_ownership)
|
||||
Diag(fi->getLocation(), diag::note_nontrivial_objc_ownership)
|
||||
<< QT << EltTy.getObjCLifetime();
|
||||
return;
|
||||
}
|
||||
|
@ -2572,7 +2572,7 @@ static void handleTransparentUnionAttr(Sema &S, Decl *D,
|
||||
return;
|
||||
}
|
||||
|
||||
FieldDecl *FirstField = *Field;
|
||||
FieldDecl *FirstField = &*Field;
|
||||
QualType FirstType = FirstField->getType();
|
||||
if (FirstType->hasFloatingRepresentation() || FirstType->isVectorType()) {
|
||||
S.Diag(FirstField->getLocation(),
|
||||
|
@ -833,8 +833,8 @@ static void CheckConstexprCtorInitializer(Sema &SemaRef,
|
||||
I != E; ++I)
|
||||
// If an anonymous union contains an anonymous struct of which any member
|
||||
// is initialized, all members must be initialized.
|
||||
if (!RD->isUnion() || Inits.count(*I))
|
||||
CheckConstexprCtorInitializer(SemaRef, Dcl, *I, Inits, Diagnosed);
|
||||
if (!RD->isUnion() || Inits.count(&*I))
|
||||
CheckConstexprCtorInitializer(SemaRef, Dcl, &*I, Inits, Diagnosed);
|
||||
}
|
||||
}
|
||||
|
||||
@ -920,7 +920,7 @@ bool Sema::CheckConstexprFunctionBody(const FunctionDecl *Dcl, Stmt *Body) {
|
||||
unsigned Fields = 0;
|
||||
for (CXXRecordDecl::field_iterator I = RD->field_begin(),
|
||||
E = RD->field_end(); I != E; ++I, ++Fields) {
|
||||
if ((*I)->isAnonymousStructOrUnion()) {
|
||||
if (I->isAnonymousStructOrUnion()) {
|
||||
AnyAnonStructUnionMembers = true;
|
||||
break;
|
||||
}
|
||||
@ -943,7 +943,7 @@ bool Sema::CheckConstexprFunctionBody(const FunctionDecl *Dcl, Stmt *Body) {
|
||||
bool Diagnosed = false;
|
||||
for (CXXRecordDecl::field_iterator I = RD->field_begin(),
|
||||
E = RD->field_end(); I != E; ++I)
|
||||
CheckConstexprCtorInitializer(*this, Dcl, *I, Inits, Diagnosed);
|
||||
CheckConstexprCtorInitializer(*this, Dcl, &*I, Inits, Diagnosed);
|
||||
if (Diagnosed)
|
||||
return false;
|
||||
}
|
||||
@ -3089,7 +3089,7 @@ DiagnoseBaseOrMemInitializerOrder(Sema &SemaRef,
|
||||
if (Field->isUnnamedBitfield())
|
||||
continue;
|
||||
|
||||
IdealInitKeys.push_back(GetKeyForTopLevelField(*Field));
|
||||
IdealInitKeys.push_back(GetKeyForTopLevelField(&*Field));
|
||||
}
|
||||
|
||||
unsigned NumIdealInits = IdealInitKeys.size();
|
||||
@ -3289,7 +3289,7 @@ Sema::MarkBaseAndMemberDestructorsReferenced(SourceLocation Location,
|
||||
// Non-static data members.
|
||||
for (CXXRecordDecl::field_iterator I = ClassDecl->field_begin(),
|
||||
E = ClassDecl->field_end(); I != E; ++I) {
|
||||
FieldDecl *Field = *I;
|
||||
FieldDecl *Field = &*I;
|
||||
if (Field->isInvalidDecl())
|
||||
continue;
|
||||
|
||||
@ -3732,8 +3732,8 @@ void Sema::CheckCompletedCXXClass(CXXRecordDecl *Record) {
|
||||
for (CXXRecordDecl::method_iterator M = Record->method_begin(),
|
||||
MEnd = Record->method_end();
|
||||
M != MEnd; ++M) {
|
||||
if (!(*M)->isStatic())
|
||||
DiagnoseHiddenVirtualMethods(Record, *M);
|
||||
if (!M->isStatic())
|
||||
DiagnoseHiddenVirtualMethods(Record, &*M);
|
||||
}
|
||||
}
|
||||
|
||||
@ -3762,7 +3762,7 @@ void Sema::CheckCompletedCXXClass(CXXRecordDecl *Record) {
|
||||
|
||||
case TSK_Undeclared:
|
||||
case TSK_ExplicitSpecialization:
|
||||
RequireLiteralType((*M)->getLocation(), Context.getRecordType(Record),
|
||||
RequireLiteralType(M->getLocation(), Context.getRecordType(Record),
|
||||
PDiag(diag::err_constexpr_method_non_literal));
|
||||
break;
|
||||
}
|
||||
@ -3791,30 +3791,30 @@ void Sema::CheckExplicitlyDefaultedMethods(CXXRecordDecl *Record) {
|
||||
ME = Record->method_end();
|
||||
MI != ME; ++MI) {
|
||||
if (!MI->isInvalidDecl() && MI->isExplicitlyDefaulted()) {
|
||||
switch (getSpecialMember(*MI)) {
|
||||
switch (getSpecialMember(&*MI)) {
|
||||
case CXXDefaultConstructor:
|
||||
CheckExplicitlyDefaultedDefaultConstructor(
|
||||
cast<CXXConstructorDecl>(*MI));
|
||||
cast<CXXConstructorDecl>(&*MI));
|
||||
break;
|
||||
|
||||
case CXXDestructor:
|
||||
CheckExplicitlyDefaultedDestructor(cast<CXXDestructorDecl>(*MI));
|
||||
CheckExplicitlyDefaultedDestructor(cast<CXXDestructorDecl>(&*MI));
|
||||
break;
|
||||
|
||||
case CXXCopyConstructor:
|
||||
CheckExplicitlyDefaultedCopyConstructor(cast<CXXConstructorDecl>(*MI));
|
||||
CheckExplicitlyDefaultedCopyConstructor(cast<CXXConstructorDecl>(&*MI));
|
||||
break;
|
||||
|
||||
case CXXCopyAssignment:
|
||||
CheckExplicitlyDefaultedCopyAssignment(*MI);
|
||||
CheckExplicitlyDefaultedCopyAssignment(&*MI);
|
||||
break;
|
||||
|
||||
case CXXMoveConstructor:
|
||||
CheckExplicitlyDefaultedMoveConstructor(cast<CXXConstructorDecl>(*MI));
|
||||
CheckExplicitlyDefaultedMoveConstructor(cast<CXXConstructorDecl>(&*MI));
|
||||
break;
|
||||
|
||||
case CXXMoveAssignment:
|
||||
CheckExplicitlyDefaultedMoveAssignment(*MI);
|
||||
CheckExplicitlyDefaultedMoveAssignment(&*MI);
|
||||
break;
|
||||
|
||||
case CXXInvalid:
|
||||
@ -4599,7 +4599,7 @@ bool SpecialMemberDeletionInfo::shouldDeleteForField(FieldDecl *FD) {
|
||||
|
||||
CXXRecordDecl *UnionFieldRecord = UnionFieldType->getAsCXXRecordDecl();
|
||||
if (UnionFieldRecord &&
|
||||
shouldDeleteForClassSubobject(UnionFieldRecord, *UI))
|
||||
shouldDeleteForClassSubobject(UnionFieldRecord, &*UI))
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -4736,7 +4736,7 @@ bool Sema::ShouldDeleteSpecialMember(CXXMethodDecl *MD, CXXSpecialMember CSM,
|
||||
for (CXXRecordDecl::field_iterator FI = RD->field_begin(),
|
||||
FE = RD->field_end(); FI != FE; ++FI)
|
||||
if (!FI->isInvalidDecl() && !FI->isUnnamedBitfield() &&
|
||||
SMI.shouldDeleteForField(*FI))
|
||||
SMI.shouldDeleteForField(&*FI))
|
||||
return true;
|
||||
|
||||
if (SMI.shouldDeleteForAllConstMembers())
|
||||
@ -7088,7 +7088,7 @@ void Sema::DeclareInheritedConstructors(CXXRecordDecl *ClassDecl) {
|
||||
// results from omitting any ellipsis parameter specification and
|
||||
// successively omitting parameters with a default argument from the
|
||||
// end of the parameter-type-list.
|
||||
CXXConstructorDecl *BaseCtor = *CtorIt;
|
||||
CXXConstructorDecl *BaseCtor = &*CtorIt;
|
||||
bool CanBeCopyOrMove = BaseCtor->isCopyOrMoveConstructor();
|
||||
const FunctionProtoType *BaseCtorType =
|
||||
BaseCtor->getType()->getAs<FunctionProtoType>();
|
||||
@ -7641,7 +7641,7 @@ Sema::ComputeDefaultedCopyAssignmentExceptionSpecAndConst(
|
||||
FieldEnd = ClassDecl->field_end();
|
||||
HasConstCopyAssignment && Field != FieldEnd;
|
||||
++Field) {
|
||||
QualType FieldType = Context.getBaseElementType((*Field)->getType());
|
||||
QualType FieldType = Context.getBaseElementType(Field->getType());
|
||||
if (CXXRecordDecl *FieldClassDecl = FieldType->getAsCXXRecordDecl()) {
|
||||
HasConstCopyAssignment &=
|
||||
(bool)LookupCopyingAssignment(FieldClassDecl, Qualifiers::Const,
|
||||
@ -7693,7 +7693,7 @@ Sema::ComputeDefaultedCopyAssignmentExceptionSpecAndConst(
|
||||
FieldEnd = ClassDecl->field_end();
|
||||
Field != FieldEnd;
|
||||
++Field) {
|
||||
QualType FieldType = Context.getBaseElementType((*Field)->getType());
|
||||
QualType FieldType = Context.getBaseElementType(Field->getType());
|
||||
if (CXXRecordDecl *FieldClassDecl = FieldType->getAsCXXRecordDecl()) {
|
||||
if (CXXMethodDecl *CopyAssign =
|
||||
LookupCopyingAssignment(FieldClassDecl, ArgQuals, false, 0))
|
||||
@ -7919,7 +7919,7 @@ void Sema::DefineImplicitCopyAssignment(SourceLocation CurrentLocation,
|
||||
CXXScopeSpec SS; // Intentionally empty
|
||||
LookupResult MemberLookup(*this, Field->getDeclName(), Loc,
|
||||
LookupMemberName);
|
||||
MemberLookup.addDecl(*Field);
|
||||
MemberLookup.addDecl(&*Field);
|
||||
MemberLookup.resolveKind();
|
||||
ExprResult From = BuildMemberReferenceExpr(OtherRef, OtherRefType,
|
||||
Loc, /*IsArrow=*/false,
|
||||
@ -8121,7 +8121,7 @@ Sema::ComputeDefaultedMoveAssignmentExceptionSpec(CXXRecordDecl *ClassDecl) {
|
||||
FieldEnd = ClassDecl->field_end();
|
||||
Field != FieldEnd;
|
||||
++Field) {
|
||||
QualType FieldType = Context.getBaseElementType((*Field)->getType());
|
||||
QualType FieldType = Context.getBaseElementType(Field->getType());
|
||||
if (CXXRecordDecl *FieldClassDecl = FieldType->getAsCXXRecordDecl()) {
|
||||
if (CXXMethodDecl *MoveAssign = LookupMovingAssignment(FieldClassDecl,
|
||||
false, 0))
|
||||
@ -8209,7 +8209,7 @@ static bool subobjectsHaveMoveOrTrivialCopy(Sema &S, CXXRecordDecl *ClassDecl,
|
||||
for (CXXRecordDecl::field_iterator Field = ClassDecl->field_begin(),
|
||||
FieldEnd = ClassDecl->field_end();
|
||||
Field != FieldEnd; ++Field) {
|
||||
if (!hasMoveOrIsTriviallyCopyable(S, (*Field)->getType(), IsConstructor))
|
||||
if (!hasMoveOrIsTriviallyCopyable(S, Field->getType(), IsConstructor))
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -8454,7 +8454,7 @@ void Sema::DefineImplicitMoveAssignment(SourceLocation CurrentLocation,
|
||||
CXXScopeSpec SS; // Intentionally empty
|
||||
LookupResult MemberLookup(*this, Field->getDeclName(), Loc,
|
||||
LookupMemberName);
|
||||
MemberLookup.addDecl(*Field);
|
||||
MemberLookup.addDecl(&*Field);
|
||||
MemberLookup.resolveKind();
|
||||
ExprResult From = BuildMemberReferenceExpr(OtherRef, OtherRefType,
|
||||
Loc, /*IsArrow=*/false,
|
||||
@ -8670,7 +8670,7 @@ Sema::ComputeDefaultedCopyCtorExceptionSpecAndConst(CXXRecordDecl *ClassDecl) {
|
||||
FieldEnd = ClassDecl->field_end();
|
||||
HasConstCopyConstructor && Field != FieldEnd;
|
||||
++Field) {
|
||||
QualType FieldType = Context.getBaseElementType((*Field)->getType());
|
||||
QualType FieldType = Context.getBaseElementType(Field->getType());
|
||||
if (CXXRecordDecl *FieldClassDecl = FieldType->getAsCXXRecordDecl()) {
|
||||
HasConstCopyConstructor &=
|
||||
(bool)LookupCopyingConstructor(FieldClassDecl, Qualifiers::Const);
|
||||
@ -8714,7 +8714,7 @@ Sema::ComputeDefaultedCopyCtorExceptionSpecAndConst(CXXRecordDecl *ClassDecl) {
|
||||
FieldEnd = ClassDecl->field_end();
|
||||
Field != FieldEnd;
|
||||
++Field) {
|
||||
QualType FieldType = Context.getBaseElementType((*Field)->getType());
|
||||
QualType FieldType = Context.getBaseElementType(Field->getType());
|
||||
if (CXXRecordDecl *FieldClassDecl = FieldType->getAsCXXRecordDecl()) {
|
||||
if (CXXConstructorDecl *CopyConstructor =
|
||||
LookupCopyingConstructor(FieldClassDecl, Quals))
|
||||
@ -10939,7 +10939,7 @@ void Sema::MarkVirtualMembersReferenced(SourceLocation Loc,
|
||||
const CXXRecordDecl *RD) {
|
||||
for (CXXRecordDecl::method_iterator i = RD->method_begin(),
|
||||
e = RD->method_end(); i != e; ++i) {
|
||||
CXXMethodDecl *MD = *i;
|
||||
CXXMethodDecl *MD = &*i;
|
||||
|
||||
// C++ [basic.def.odr]p2:
|
||||
// [...] A virtual member function is used if it is not pure. [...]
|
||||
|
@ -694,7 +694,7 @@ void Sema::DiagnoseClassExtensionDupMethods(ObjCCategoryDecl *CAT,
|
||||
llvm::DenseMap<Selector, const ObjCMethodDecl*> MethodMap;
|
||||
for (ObjCInterfaceDecl::method_iterator i = ID->meth_begin(),
|
||||
e = ID->meth_end(); i != e; ++i) {
|
||||
ObjCMethodDecl *MD = *i;
|
||||
ObjCMethodDecl *MD = &*i;
|
||||
MethodMap[MD->getSelector()] = MD;
|
||||
}
|
||||
|
||||
@ -702,7 +702,7 @@ void Sema::DiagnoseClassExtensionDupMethods(ObjCCategoryDecl *CAT,
|
||||
return;
|
||||
for (ObjCCategoryDecl::method_iterator i = CAT->meth_begin(),
|
||||
e = CAT->meth_end(); i != e; ++i) {
|
||||
ObjCMethodDecl *Method = *i;
|
||||
ObjCMethodDecl *Method = &*i;
|
||||
const ObjCMethodDecl *&PrevMethod = MethodMap[Method->getSelector()];
|
||||
if (PrevMethod && !MatchTwoMethodDeclarations(Method, PrevMethod)) {
|
||||
Diag(Method->getLocation(), diag::err_duplicate_method_decl)
|
||||
@ -1064,7 +1064,7 @@ void Sema::CheckImplementationIvars(ObjCImplementationDecl *ImpDecl,
|
||||
IVI = IDecl->ivar_begin(), IVE = IDecl->ivar_end();
|
||||
for (; numIvars > 0 && IVI != IVE; ++IVI) {
|
||||
ObjCIvarDecl* ImplIvar = ivars[j++];
|
||||
ObjCIvarDecl* ClsIvar = *IVI;
|
||||
ObjCIvarDecl* ClsIvar = &*IVI;
|
||||
assert (ImplIvar && "missing implementation ivar");
|
||||
assert (ClsIvar && "missing class ivar");
|
||||
|
||||
@ -1094,7 +1094,7 @@ void Sema::CheckImplementationIvars(ObjCImplementationDecl *ImpDecl,
|
||||
if (numIvars > 0)
|
||||
Diag(ivars[j]->getLocation(), diag::err_inconsistant_ivar_count);
|
||||
else if (IVI != IVE)
|
||||
Diag((*IVI)->getLocation(), diag::err_inconsistant_ivar_count);
|
||||
Diag(IVI->getLocation(), diag::err_inconsistant_ivar_count);
|
||||
}
|
||||
|
||||
void Sema::WarnUndefinedMethod(SourceLocation ImpLoc, ObjCMethodDecl *method,
|
||||
@ -2186,7 +2186,7 @@ void Sema::DiagnoseDuplicateIvars(ObjCInterfaceDecl *ID,
|
||||
ObjCInterfaceDecl *SID) {
|
||||
for (ObjCInterfaceDecl::ivar_iterator IVI = ID->ivar_begin(),
|
||||
IVE = ID->ivar_end(); IVI != IVE; ++IVI) {
|
||||
ObjCIvarDecl* Ivar = (*IVI);
|
||||
ObjCIvarDecl* Ivar = &*IVI;
|
||||
if (Ivar->isInvalidDecl())
|
||||
continue;
|
||||
if (IdentifierInfo *II = Ivar->getIdentifier()) {
|
||||
@ -2331,7 +2331,7 @@ Decl *Sema::ActOnAtEnd(Scope *S, SourceRange AtEnd,
|
||||
for (ObjCContainerDecl::prop_iterator I = CDecl->prop_begin(),
|
||||
E = CDecl->prop_end();
|
||||
I != E; ++I)
|
||||
ProcessPropertyDecl(*I, CDecl);
|
||||
ProcessPropertyDecl(&*I, CDecl);
|
||||
CDecl->setAtEndRange(AtEnd);
|
||||
}
|
||||
if (ObjCImplementationDecl *IC=dyn_cast<ObjCImplementationDecl>(ClassDecl)) {
|
||||
@ -2347,7 +2347,7 @@ Decl *Sema::ActOnAtEnd(Scope *S, SourceRange AtEnd,
|
||||
ClsExtDecl; ClsExtDecl = ClsExtDecl->getNextClassExtension()) {
|
||||
for (ObjCContainerDecl::prop_iterator I = ClsExtDecl->prop_begin(),
|
||||
E = ClsExtDecl->prop_end(); I != E; ++I) {
|
||||
ObjCPropertyDecl *Property = (*I);
|
||||
ObjCPropertyDecl *Property = &*I;
|
||||
// Skip over properties declared @dynamic
|
||||
if (const ObjCPropertyImplDecl *PIDecl
|
||||
= IC->FindPropertyImplDecl(Property->getIdentifier()))
|
||||
|
@ -5678,7 +5678,7 @@ Sema::CheckTransparentUnionArgumentConstraints(QualType ArgType,
|
||||
if (RHSType->isPointerType())
|
||||
if (RHSType->castAs<PointerType>()->getPointeeType()->isVoidType()) {
|
||||
RHS = ImpCastExprToType(RHS.take(), it->getType(), CK_BitCast);
|
||||
InitField = *it;
|
||||
InitField = &*it;
|
||||
break;
|
||||
}
|
||||
|
||||
@ -5686,7 +5686,7 @@ Sema::CheckTransparentUnionArgumentConstraints(QualType ArgType,
|
||||
Expr::NPC_ValueDependentIsNull)) {
|
||||
RHS = ImpCastExprToType(RHS.take(), it->getType(),
|
||||
CK_NullToPointer);
|
||||
InitField = *it;
|
||||
InitField = &*it;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -5695,7 +5695,7 @@ Sema::CheckTransparentUnionArgumentConstraints(QualType ArgType,
|
||||
if (CheckAssignmentConstraints(it->getType(), RHS, Kind)
|
||||
== Compatible) {
|
||||
RHS = ImpCastExprToType(RHS.take(), it->getType(), Kind);
|
||||
InitField = *it;
|
||||
InitField = &*it;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -375,7 +375,7 @@ InitListChecker::FillInValueInitializations(const InitializedEntity &Entity,
|
||||
if (hadError)
|
||||
return;
|
||||
|
||||
FillInValueInitForField(Init, *Field, Entity, ILE, RequiresSecondPass);
|
||||
FillInValueInitForField(Init, &*Field, Entity, ILE, RequiresSecondPass);
|
||||
if (hadError)
|
||||
return;
|
||||
|
||||
@ -1336,9 +1336,9 @@ void InitListChecker::CheckStructUnionTypes(const InitializedEntity &Entity,
|
||||
if (Field->getDeclName()) {
|
||||
if (VerifyOnly)
|
||||
CheckValueInitializable(
|
||||
InitializedEntity::InitializeMember(*Field, &Entity));
|
||||
InitializedEntity::InitializeMember(&*Field, &Entity));
|
||||
else
|
||||
StructuredList->setInitializedFieldInUnion(*Field);
|
||||
StructuredList->setInitializedFieldInUnion(&*Field);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -1401,9 +1401,9 @@ void InitListChecker::CheckStructUnionTypes(const InitializedEntity &Entity,
|
||||
// Make sure we can use this declaration.
|
||||
bool InvalidUse;
|
||||
if (VerifyOnly)
|
||||
InvalidUse = !SemaRef.CanUseDecl(*Field);
|
||||
InvalidUse = !SemaRef.CanUseDecl(&*Field);
|
||||
else
|
||||
InvalidUse = SemaRef.DiagnoseUseOfDecl(*Field,
|
||||
InvalidUse = SemaRef.DiagnoseUseOfDecl(&*Field,
|
||||
IList->getInit(Index)->getLocStart());
|
||||
if (InvalidUse) {
|
||||
++Index;
|
||||
@ -1413,14 +1413,14 @@ void InitListChecker::CheckStructUnionTypes(const InitializedEntity &Entity,
|
||||
}
|
||||
|
||||
InitializedEntity MemberEntity =
|
||||
InitializedEntity::InitializeMember(*Field, &Entity);
|
||||
InitializedEntity::InitializeMember(&*Field, &Entity);
|
||||
CheckSubElementType(MemberEntity, IList, Field->getType(), Index,
|
||||
StructuredList, StructuredIndex);
|
||||
InitializedSomething = true;
|
||||
|
||||
if (DeclType->isUnionType() && !VerifyOnly) {
|
||||
// Initialize the first field within the union.
|
||||
StructuredList->setInitializedFieldInUnion(*Field);
|
||||
StructuredList->setInitializedFieldInUnion(&*Field);
|
||||
}
|
||||
|
||||
++Field;
|
||||
@ -1449,7 +1449,7 @@ void InitListChecker::CheckStructUnionTypes(const InitializedEntity &Entity,
|
||||
for (; Field != FieldEnd && !hadError; ++Field) {
|
||||
if (!Field->isUnnamedBitfield())
|
||||
CheckValueInitializable(
|
||||
InitializedEntity::InitializeMember(*Field, &Entity));
|
||||
InitializedEntity::InitializeMember(&*Field, &Entity));
|
||||
}
|
||||
}
|
||||
|
||||
@ -1457,7 +1457,7 @@ void InitListChecker::CheckStructUnionTypes(const InitializedEntity &Entity,
|
||||
Index >= IList->getNumInits())
|
||||
return;
|
||||
|
||||
if (CheckFlexibleArrayInit(Entity, IList->getInit(Index), *Field,
|
||||
if (CheckFlexibleArrayInit(Entity, IList->getInit(Index), &*Field,
|
||||
TopLevelObject)) {
|
||||
hadError = true;
|
||||
++Index;
|
||||
@ -1465,7 +1465,7 @@ void InitListChecker::CheckStructUnionTypes(const InitializedEntity &Entity,
|
||||
}
|
||||
|
||||
InitializedEntity MemberEntity =
|
||||
InitializedEntity::InitializeMember(*Field, &Entity);
|
||||
InitializedEntity::InitializeMember(&*Field, &Entity);
|
||||
|
||||
if (isa<InitListExpr>(IList->getInit(Index)))
|
||||
CheckSubElementType(MemberEntity, IList, Field->getType(), Index,
|
||||
@ -1679,7 +1679,7 @@ InitListChecker::CheckDesignatedInitializer(const InitializedEntity &Entity,
|
||||
// IndirectFieldDecl that follow for the designated initializer.
|
||||
if (!KnownField && Field->isAnonymousStructOrUnion()) {
|
||||
if (IndirectFieldDecl *IF =
|
||||
FindIndirectFieldDesignator(*Field, FieldName)) {
|
||||
FindIndirectFieldDesignator(&*Field, FieldName)) {
|
||||
// In verify mode, don't modify the original.
|
||||
if (VerifyOnly)
|
||||
DIE = CloneDesignatedInitExpr(SemaRef, DIE);
|
||||
@ -1688,7 +1688,7 @@ InitListChecker::CheckDesignatedInitializer(const InitializedEntity &Entity,
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (KnownField && KnownField == *Field)
|
||||
if (KnownField && KnownField == &*Field)
|
||||
break;
|
||||
if (FieldName && FieldName == Field->getIdentifier())
|
||||
break;
|
||||
@ -1757,7 +1757,7 @@ InitListChecker::CheckDesignatedInitializer(const InitializedEntity &Entity,
|
||||
if (Field->isUnnamedBitfield())
|
||||
continue;
|
||||
|
||||
if (ReplacementField == *Field ||
|
||||
if (ReplacementField == &*Field ||
|
||||
Field->getIdentifier() == ReplacementField->getIdentifier())
|
||||
break;
|
||||
|
||||
@ -1771,15 +1771,15 @@ InitListChecker::CheckDesignatedInitializer(const InitializedEntity &Entity,
|
||||
if (RT->getDecl()->isUnion()) {
|
||||
FieldIndex = 0;
|
||||
if (!VerifyOnly)
|
||||
StructuredList->setInitializedFieldInUnion(*Field);
|
||||
StructuredList->setInitializedFieldInUnion(&*Field);
|
||||
}
|
||||
|
||||
// Make sure we can use this declaration.
|
||||
bool InvalidUse;
|
||||
if (VerifyOnly)
|
||||
InvalidUse = !SemaRef.CanUseDecl(*Field);
|
||||
InvalidUse = !SemaRef.CanUseDecl(&*Field);
|
||||
else
|
||||
InvalidUse = SemaRef.DiagnoseUseOfDecl(*Field, D->getFieldLoc());
|
||||
InvalidUse = SemaRef.DiagnoseUseOfDecl(&*Field, D->getFieldLoc());
|
||||
if (InvalidUse) {
|
||||
++Index;
|
||||
return true;
|
||||
@ -1787,7 +1787,7 @@ InitListChecker::CheckDesignatedInitializer(const InitializedEntity &Entity,
|
||||
|
||||
if (!VerifyOnly) {
|
||||
// Update the designator with the field declaration.
|
||||
D->setField(*Field);
|
||||
D->setField(&*Field);
|
||||
|
||||
// Make sure that our non-designated initializer list has space
|
||||
// for a subobject corresponding to this field.
|
||||
@ -1809,7 +1809,7 @@ InitListChecker::CheckDesignatedInitializer(const InitializedEntity &Entity,
|
||||
<< SourceRange(NextD->getStartLocation(),
|
||||
DIE->getSourceRange().getEnd());
|
||||
SemaRef.Diag(Field->getLocation(), diag::note_flexible_array_member)
|
||||
<< *Field;
|
||||
<< &*Field;
|
||||
}
|
||||
Invalid = true;
|
||||
}
|
||||
@ -1822,13 +1822,13 @@ InitListChecker::CheckDesignatedInitializer(const InitializedEntity &Entity,
|
||||
diag::err_flexible_array_init_needs_braces)
|
||||
<< DIE->getInit()->getSourceRange();
|
||||
SemaRef.Diag(Field->getLocation(), diag::note_flexible_array_member)
|
||||
<< *Field;
|
||||
<< &*Field;
|
||||
}
|
||||
Invalid = true;
|
||||
}
|
||||
|
||||
// Check GNU flexible array initializer.
|
||||
if (!Invalid && CheckFlexibleArrayInit(Entity, DIE->getInit(), *Field,
|
||||
if (!Invalid && CheckFlexibleArrayInit(Entity, DIE->getInit(), &*Field,
|
||||
TopLevelObject))
|
||||
Invalid = true;
|
||||
|
||||
@ -1844,7 +1844,7 @@ InitListChecker::CheckDesignatedInitializer(const InitializedEntity &Entity,
|
||||
IList->setInit(Index, DIE->getInit());
|
||||
|
||||
InitializedEntity MemberEntity =
|
||||
InitializedEntity::InitializeMember(*Field, &Entity);
|
||||
InitializedEntity::InitializeMember(&*Field, &Entity);
|
||||
CheckSubElementType(MemberEntity, IList, Field->getType(), Index,
|
||||
StructuredList, newStructuredIndex);
|
||||
|
||||
@ -1859,11 +1859,11 @@ InitListChecker::CheckDesignatedInitializer(const InitializedEntity &Entity,
|
||||
}
|
||||
} else {
|
||||
// Recurse to check later designated subobjects.
|
||||
QualType FieldType = (*Field)->getType();
|
||||
QualType FieldType = Field->getType();
|
||||
unsigned newStructuredIndex = FieldIndex;
|
||||
|
||||
InitializedEntity MemberEntity =
|
||||
InitializedEntity::InitializeMember(*Field, &Entity);
|
||||
InitializedEntity::InitializeMember(&*Field, &Entity);
|
||||
if (CheckDesignatedInitializer(MemberEntity, IList, DIE, DesigIdx + 1,
|
||||
FieldType, 0, 0, Index,
|
||||
StructuredList, newStructuredIndex,
|
||||
|
@ -441,7 +441,10 @@ void Sema::ActOnLambdaError(SourceLocation StartLoc, Scope *CurScope,
|
||||
LambdaScopeInfo *LSI = getCurLambda();
|
||||
CXXRecordDecl *Class = LSI->Lambda;
|
||||
Class->setInvalidDecl();
|
||||
SmallVector<Decl*, 4> Fields(Class->field_begin(), Class->field_end());
|
||||
SmallVector<Decl*, 4> Fields;
|
||||
for (RecordDecl::field_iterator i = Class->field_begin(),
|
||||
e = Class->field_end(); i != e; ++i)
|
||||
Fields.push_back(&*i);
|
||||
ActOnFields(0, Class->getLocation(), Class, Fields,
|
||||
SourceLocation(), SourceLocation(), 0);
|
||||
CheckCompletedCXXClass(Class);
|
||||
@ -704,7 +707,10 @@ ExprResult Sema::ActOnLambdaExpr(SourceLocation StartLoc, Stmt *Body,
|
||||
addBlockPointerConversion(*this, IntroducerRange, Class, CallOperator);
|
||||
|
||||
// Finalize the lambda class.
|
||||
SmallVector<Decl*, 4> Fields(Class->field_begin(), Class->field_end());
|
||||
SmallVector<Decl*, 4> Fields;
|
||||
for (RecordDecl::field_iterator i = Class->field_begin(),
|
||||
e = Class->field_end(); i != e; ++i)
|
||||
Fields.push_back(&*i);
|
||||
ActOnFields(0, Class->getLocation(), Class, Fields,
|
||||
SourceLocation(), SourceLocation(), 0);
|
||||
CheckCompletedCXXClass(Class);
|
||||
|
@ -1059,11 +1059,11 @@ void Sema::ComparePropertiesInBaseAndSuper(ObjCInterfaceDecl *IDecl) {
|
||||
// FIXME: O(N^2)
|
||||
for (ObjCInterfaceDecl::prop_iterator S = SDecl->prop_begin(),
|
||||
E = SDecl->prop_end(); S != E; ++S) {
|
||||
ObjCPropertyDecl *SuperPDecl = (*S);
|
||||
ObjCPropertyDecl *SuperPDecl = &*S;
|
||||
// Does property in super class has declaration in current class?
|
||||
for (ObjCInterfaceDecl::prop_iterator I = IDecl->prop_begin(),
|
||||
E = IDecl->prop_end(); I != E; ++I) {
|
||||
ObjCPropertyDecl *PDecl = (*I);
|
||||
ObjCPropertyDecl *PDecl = &*I;
|
||||
if (SuperPDecl->getIdentifier() == PDecl->getIdentifier())
|
||||
DiagnosePropertyMismatch(PDecl, SuperPDecl,
|
||||
SDecl->getIdentifier());
|
||||
@ -1085,29 +1085,29 @@ Sema::MatchOneProtocolPropertiesInClass(Decl *CDecl,
|
||||
if (!CatDecl->IsClassExtension())
|
||||
for (ObjCProtocolDecl::prop_iterator P = PDecl->prop_begin(),
|
||||
E = PDecl->prop_end(); P != E; ++P) {
|
||||
ObjCPropertyDecl *Pr = (*P);
|
||||
ObjCPropertyDecl *Pr = &*P;
|
||||
ObjCCategoryDecl::prop_iterator CP, CE;
|
||||
// Is this property already in category's list of properties?
|
||||
for (CP = CatDecl->prop_begin(), CE = CatDecl->prop_end(); CP!=CE; ++CP)
|
||||
if ((*CP)->getIdentifier() == Pr->getIdentifier())
|
||||
if (CP->getIdentifier() == Pr->getIdentifier())
|
||||
break;
|
||||
if (CP != CE)
|
||||
// Property protocol already exist in class. Diagnose any mismatch.
|
||||
DiagnosePropertyMismatch((*CP), Pr, PDecl->getIdentifier());
|
||||
DiagnosePropertyMismatch(&*CP, Pr, PDecl->getIdentifier());
|
||||
}
|
||||
return;
|
||||
}
|
||||
for (ObjCProtocolDecl::prop_iterator P = PDecl->prop_begin(),
|
||||
E = PDecl->prop_end(); P != E; ++P) {
|
||||
ObjCPropertyDecl *Pr = (*P);
|
||||
ObjCPropertyDecl *Pr = &*P;
|
||||
ObjCInterfaceDecl::prop_iterator CP, CE;
|
||||
// Is this property already in class's list of properties?
|
||||
for (CP = IDecl->prop_begin(), CE = IDecl->prop_end(); CP != CE; ++CP)
|
||||
if ((*CP)->getIdentifier() == Pr->getIdentifier())
|
||||
if (CP->getIdentifier() == Pr->getIdentifier())
|
||||
break;
|
||||
if (CP != CE)
|
||||
// Property protocol already exist in class. Diagnose any mismatch.
|
||||
DiagnosePropertyMismatch((*CP), Pr, PDecl->getIdentifier());
|
||||
DiagnosePropertyMismatch(&*CP, Pr, PDecl->getIdentifier());
|
||||
}
|
||||
}
|
||||
|
||||
@ -1223,7 +1223,7 @@ void Sema::CollectImmediateProperties(ObjCContainerDecl *CDecl,
|
||||
if (ObjCInterfaceDecl *IDecl = dyn_cast<ObjCInterfaceDecl>(CDecl)) {
|
||||
for (ObjCContainerDecl::prop_iterator P = IDecl->prop_begin(),
|
||||
E = IDecl->prop_end(); P != E; ++P) {
|
||||
ObjCPropertyDecl *Prop = (*P);
|
||||
ObjCPropertyDecl *Prop = &*P;
|
||||
PropMap[Prop->getIdentifier()] = Prop;
|
||||
}
|
||||
// scan through class's protocols.
|
||||
@ -1236,7 +1236,7 @@ void Sema::CollectImmediateProperties(ObjCContainerDecl *CDecl,
|
||||
if (!CATDecl->IsClassExtension())
|
||||
for (ObjCContainerDecl::prop_iterator P = CATDecl->prop_begin(),
|
||||
E = CATDecl->prop_end(); P != E; ++P) {
|
||||
ObjCPropertyDecl *Prop = (*P);
|
||||
ObjCPropertyDecl *Prop = &*P;
|
||||
PropMap[Prop->getIdentifier()] = Prop;
|
||||
}
|
||||
// scan through class's protocols.
|
||||
@ -1247,7 +1247,7 @@ void Sema::CollectImmediateProperties(ObjCContainerDecl *CDecl,
|
||||
else if (ObjCProtocolDecl *PDecl = dyn_cast<ObjCProtocolDecl>(CDecl)) {
|
||||
for (ObjCProtocolDecl::prop_iterator P = PDecl->prop_begin(),
|
||||
E = PDecl->prop_end(); P != E; ++P) {
|
||||
ObjCPropertyDecl *Prop = (*P);
|
||||
ObjCPropertyDecl *Prop = &*P;
|
||||
ObjCPropertyDecl *PropertyFromSuper = SuperPropMap[Prop->getIdentifier()];
|
||||
// Exclude property for protocols which conform to class's super-class,
|
||||
// as super-class has to implement the property.
|
||||
@ -1273,7 +1273,7 @@ static void CollectClassPropertyImplementations(ObjCContainerDecl *CDecl,
|
||||
if (ObjCInterfaceDecl *IDecl = dyn_cast<ObjCInterfaceDecl>(CDecl)) {
|
||||
for (ObjCContainerDecl::prop_iterator P = IDecl->prop_begin(),
|
||||
E = IDecl->prop_end(); P != E; ++P) {
|
||||
ObjCPropertyDecl *Prop = (*P);
|
||||
ObjCPropertyDecl *Prop = &*P;
|
||||
PropMap[Prop->getIdentifier()] = Prop;
|
||||
}
|
||||
for (ObjCInterfaceDecl::all_protocol_iterator
|
||||
@ -1284,7 +1284,7 @@ static void CollectClassPropertyImplementations(ObjCContainerDecl *CDecl,
|
||||
else if (ObjCProtocolDecl *PDecl = dyn_cast<ObjCProtocolDecl>(CDecl)) {
|
||||
for (ObjCProtocolDecl::prop_iterator P = PDecl->prop_begin(),
|
||||
E = PDecl->prop_end(); P != E; ++P) {
|
||||
ObjCPropertyDecl *Prop = (*P);
|
||||
ObjCPropertyDecl *Prop = &*P;
|
||||
if (!PropMap.count(Prop->getIdentifier()))
|
||||
PropMap[Prop->getIdentifier()] = Prop;
|
||||
}
|
||||
@ -1316,7 +1316,7 @@ ObjCPropertyDecl *Sema::LookupPropertyDecl(const ObjCContainerDecl *CDecl,
|
||||
dyn_cast<ObjCInterfaceDecl>(CDecl)) {
|
||||
for (ObjCContainerDecl::prop_iterator P = IDecl->prop_begin(),
|
||||
E = IDecl->prop_end(); P != E; ++P) {
|
||||
ObjCPropertyDecl *Prop = (*P);
|
||||
ObjCPropertyDecl *Prop = &*P;
|
||||
if (Prop->getIdentifier() == II)
|
||||
return Prop;
|
||||
}
|
||||
@ -1333,7 +1333,7 @@ ObjCPropertyDecl *Sema::LookupPropertyDecl(const ObjCContainerDecl *CDecl,
|
||||
dyn_cast<ObjCProtocolDecl>(CDecl)) {
|
||||
for (ObjCProtocolDecl::prop_iterator P = PDecl->prop_begin(),
|
||||
E = PDecl->prop_end(); P != E; ++P) {
|
||||
ObjCPropertyDecl *Prop = (*P);
|
||||
ObjCPropertyDecl *Prop = &*P;
|
||||
if (Prop->getIdentifier() == II)
|
||||
return Prop;
|
||||
}
|
||||
@ -1437,7 +1437,7 @@ void Sema::DiagnoseUnimplementedProperties(Scope *S, ObjCImplDecl* IMPDecl,
|
||||
for (ObjCImplDecl::propimpl_iterator
|
||||
I = IMPDecl->propimpl_begin(),
|
||||
EI = IMPDecl->propimpl_end(); I != EI; ++I)
|
||||
PropImplMap.insert((*I)->getPropertyDecl());
|
||||
PropImplMap.insert(I->getPropertyDecl());
|
||||
|
||||
for (llvm::DenseMap<IdentifierInfo *, ObjCPropertyDecl*>::iterator
|
||||
P = PropMap.begin(), E = PropMap.end(); P != E; ++P) {
|
||||
@ -1487,7 +1487,7 @@ Sema::AtomicPropertySetterGetterRules (ObjCImplDecl* IMPDecl,
|
||||
for (ObjCContainerDecl::prop_iterator I = IDecl->prop_begin(),
|
||||
E = IDecl->prop_end();
|
||||
I != E; ++I) {
|
||||
ObjCPropertyDecl *Property = (*I);
|
||||
ObjCPropertyDecl *Property = &*I;
|
||||
ObjCMethodDecl *GetterMethod = 0;
|
||||
ObjCMethodDecl *SetterMethod = 0;
|
||||
bool LookedUpGetterSetter = false;
|
||||
@ -1574,7 +1574,7 @@ void Sema::DiagnoseOwningPropertyGetterSynthesis(const ObjCImplementationDecl *D
|
||||
|
||||
for (ObjCImplementationDecl::propimpl_iterator
|
||||
i = D->propimpl_begin(), e = D->propimpl_end(); i != e; ++i) {
|
||||
ObjCPropertyImplDecl *PID = *i;
|
||||
ObjCPropertyImplDecl *PID = &*i;
|
||||
if (PID->getPropertyImplementation() != ObjCPropertyImplDecl::Synthesize)
|
||||
continue;
|
||||
|
||||
|
@ -876,7 +876,7 @@ Sema::ActOnFinishSwitchStmt(SourceLocation SwitchLoc, Stmt *Switch,
|
||||
EDI != ED->enumerator_end(); ++EDI) {
|
||||
llvm::APSInt Val = EDI->getInitVal();
|
||||
AdjustAPSInt(Val, CondWidth, CondIsSigned);
|
||||
EnumVals.push_back(std::make_pair(Val, *EDI));
|
||||
EnumVals.push_back(std::make_pair(Val, &*EDI));
|
||||
}
|
||||
std::stable_sort(EnumVals.begin(), EnumVals.end(), CmpEnumVals);
|
||||
EnumValsTy::iterator EIend =
|
||||
|
@ -671,7 +671,7 @@ void TemplateDeclInstantiator::InstantiateEnumDefinition(
|
||||
}
|
||||
|
||||
if (EnumConst) {
|
||||
SemaRef.InstantiateAttrs(TemplateArgs, *EC, EnumConst);
|
||||
SemaRef.InstantiateAttrs(TemplateArgs, &*EC, EnumConst);
|
||||
|
||||
EnumConst->setAccess(Enum->getAccess());
|
||||
Enum->addDecl(EnumConst);
|
||||
@ -682,7 +682,7 @@ void TemplateDeclInstantiator::InstantiateEnumDefinition(
|
||||
!Enum->isScoped()) {
|
||||
// If the enumeration is within a function or method, record the enum
|
||||
// constant as a local.
|
||||
SemaRef.CurrentInstantiationScope->InstantiatedLocal(*EC, EnumConst);
|
||||
SemaRef.CurrentInstantiationScope->InstantiatedLocal(&*EC, EnumConst);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -4336,11 +4336,11 @@ bool Sema::RequireLiteralType(SourceLocation Loc, QualType T,
|
||||
}
|
||||
for (CXXRecordDecl::field_iterator I = RD->field_begin(),
|
||||
E = RD->field_end(); I != E; ++I) {
|
||||
if (!(*I)->getType()->isLiteralType() ||
|
||||
(*I)->getType().isVolatileQualified()) {
|
||||
Diag((*I)->getLocation(), diag::note_non_literal_field)
|
||||
<< RD << (*I) << (*I)->getType()
|
||||
<< (*I)->getType().isVolatileQualified();
|
||||
if (!I->getType()->isLiteralType() ||
|
||||
I->getType().isVolatileQualified()) {
|
||||
Diag(I->getLocation(), diag::note_non_literal_field)
|
||||
<< RD << &*I << I->getType()
|
||||
<< I->getType().isVolatileQualified();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -5038,7 +5038,7 @@ static void PassObjCImplDeclToConsumer(ObjCImplDecl *ImplD,
|
||||
|
||||
for (ObjCImplDecl::method_iterator
|
||||
I = ImplD->meth_begin(), E = ImplD->meth_end(); I != E; ++I)
|
||||
Consumer->HandleInterestingDecl(DeclGroupRef(*I));
|
||||
Consumer->HandleInterestingDecl(DeclGroupRef(&*I));
|
||||
|
||||
Consumer->HandleInterestingDecl(DeclGroupRef(ImplD));
|
||||
}
|
||||
|
@ -144,9 +144,9 @@ bool CallAndMessageChecker::PreVisitProcessArg(CheckerContext &C,
|
||||
assert(RD && "Referred record has no definition");
|
||||
for (RecordDecl::field_iterator I =
|
||||
RD->field_begin(), E = RD->field_end(); I!=E; ++I) {
|
||||
const FieldRegion *FR = MrMgr.getFieldRegion(*I, R);
|
||||
FieldChain.push_back(*I);
|
||||
T = (*I)->getType();
|
||||
const FieldRegion *FR = MrMgr.getFieldRegion(&*I, R);
|
||||
FieldChain.push_back(&*I);
|
||||
T = I->getType();
|
||||
if (T->getAsStructureType()) {
|
||||
if (Find(FR))
|
||||
return true;
|
||||
|
@ -114,7 +114,7 @@ static void checkObjCDealloc(const ObjCImplementationDecl *D,
|
||||
for (ObjCInterfaceDecl::ivar_iterator I=ID->ivar_begin(), E=ID->ivar_end();
|
||||
I!=E; ++I) {
|
||||
|
||||
ObjCIvarDecl *ID = *I;
|
||||
ObjCIvarDecl *ID = &*I;
|
||||
QualType T = ID->getType();
|
||||
|
||||
if (!T->isObjCObjectPointerType() ||
|
||||
@ -215,10 +215,10 @@ static void checkObjCDealloc(const ObjCImplementationDecl *D,
|
||||
E = D->propimpl_end(); I!=E; ++I) {
|
||||
|
||||
// We can only check the synthesized properties
|
||||
if ((*I)->getPropertyImplementation() != ObjCPropertyImplDecl::Synthesize)
|
||||
if (I->getPropertyImplementation() != ObjCPropertyImplDecl::Synthesize)
|
||||
continue;
|
||||
|
||||
ObjCIvarDecl *ID = (*I)->getPropertyIvarDecl();
|
||||
ObjCIvarDecl *ID = I->getPropertyIvarDecl();
|
||||
if (!ID)
|
||||
continue;
|
||||
|
||||
@ -226,7 +226,7 @@ static void checkObjCDealloc(const ObjCImplementationDecl *D,
|
||||
if (!T->isObjCObjectPointerType()) // Skip non-pointer ivars
|
||||
continue;
|
||||
|
||||
const ObjCPropertyDecl *PD = (*I)->getPropertyDecl();
|
||||
const ObjCPropertyDecl *PD = I->getPropertyDecl();
|
||||
if (!PD)
|
||||
continue;
|
||||
|
||||
@ -261,7 +261,7 @@ static void checkObjCDealloc(const ObjCImplementationDecl *D,
|
||||
}
|
||||
|
||||
PathDiagnosticLocation SDLoc =
|
||||
PathDiagnosticLocation::createBegin((*I), BR.getSourceManager());
|
||||
PathDiagnosticLocation::createBegin(&*I, BR.getSourceManager());
|
||||
|
||||
BR.EmitBasicReport(MD, name, categories::CoreFoundationObjectiveC,
|
||||
os.str(), SDLoc);
|
||||
|
@ -231,7 +231,7 @@ static void CheckASTMemory(const CXXRecordDecl *R, BugReporter &BR) {
|
||||
for (RecordDecl::field_iterator I = R->field_begin(), E = R->field_end();
|
||||
I != E; ++I) {
|
||||
ASTFieldVisitor walker(R, BR);
|
||||
walker.Visit(*I);
|
||||
walker.Visit(&*I);
|
||||
}
|
||||
}
|
||||
|
||||
@ -247,7 +247,7 @@ void ASTFieldVisitor::Visit(FieldDecl *D) {
|
||||
const RecordDecl *RD = RT->getDecl()->getDefinition();
|
||||
for (RecordDecl::field_iterator I = RD->field_begin(), E = RD->field_end();
|
||||
I != E; ++I)
|
||||
Visit(*I);
|
||||
Visit(&*I);
|
||||
}
|
||||
|
||||
FieldChain.pop_back();
|
||||
|
@ -76,7 +76,7 @@ static void Scan(IvarUsageMap& M, const ObjCContainerDecl *D) {
|
||||
// to an ivar.
|
||||
for (ObjCImplementationDecl::propimpl_iterator I = ID->propimpl_begin(),
|
||||
E = ID->propimpl_end(); I!=E; ++I)
|
||||
Scan(M, *I);
|
||||
Scan(M, &*I);
|
||||
|
||||
// Scan the associated categories as well.
|
||||
for (const ObjCCategoryDecl *CD =
|
||||
@ -109,7 +109,7 @@ static void checkObjCUnusedIvar(const ObjCImplementationDecl *D,
|
||||
for (ObjCInterfaceDecl::ivar_iterator I=ID->ivar_begin(),
|
||||
E=ID->ivar_end(); I!=E; ++I) {
|
||||
|
||||
const ObjCIvarDecl *ID = *I;
|
||||
const ObjCIvarDecl *ID = &*I;
|
||||
|
||||
// Ignore ivars that...
|
||||
// (a) aren't private
|
||||
|
@ -1016,7 +1016,7 @@ RegionOffset MemRegion::getAsOffset() const {
|
||||
unsigned idx = 0;
|
||||
for (RecordDecl::field_iterator FI = RD->field_begin(),
|
||||
FE = RD->field_end(); FI != FE; ++FI, ++idx)
|
||||
if (FR->getDecl() == *FI)
|
||||
if (FR->getDecl() == &*FI)
|
||||
break;
|
||||
|
||||
const ASTRecordLayout &Layout = getContext().getASTRecordLayout(RD);
|
||||
|
@ -1646,11 +1646,11 @@ StoreRef RegionStoreManager::BindStruct(Store store, const TypedValueRegion* R,
|
||||
break;
|
||||
|
||||
// Skip any unnamed bitfields to stay in sync with the initializers.
|
||||
if ((*FI)->isUnnamedBitfield())
|
||||
if (FI->isUnnamedBitfield())
|
||||
continue;
|
||||
|
||||
QualType FTy = (*FI)->getType();
|
||||
const FieldRegion* FR = MRMgr.getFieldRegion(*FI, R);
|
||||
QualType FTy = FI->getType();
|
||||
const FieldRegion* FR = MRMgr.getFieldRegion(&*FI, R);
|
||||
|
||||
if (FTy->isArrayType())
|
||||
newStore = BindArray(newStore.getStore(), FR, *VI);
|
||||
|
@ -845,9 +845,9 @@ SVal SimpleSValBuilder::evalBinOpLL(ProgramStateRef state,
|
||||
bool leftFirst = (op == BO_LT || op == BO_LE);
|
||||
for (RecordDecl::field_iterator I = RD->field_begin(),
|
||||
E = RD->field_end(); I!=E; ++I) {
|
||||
if (*I == LeftFD)
|
||||
if (&*I == LeftFD)
|
||||
return makeTruthVal(leftFirst, resultTy);
|
||||
if (*I == RightFD)
|
||||
if (&*I == RightFD)
|
||||
return makeTruthVal(!leftFirst, resultTy);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user