summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2009-06-30 00:17:27 +0000
committerFariborz Jahanian <fjahanian@apple.com>2009-06-30 00:17:27 +0000
commite853bfa970331bcd538b8cd286a8205265a825e1 (patch)
tree4deedcb3bc2a1e3e75b01db02186ba59b22cb8b6 /clang
parent7b366b5d47372d9104dbed6de9a0e7f2f5c92924 (diff)
downloadbcm5719-llvm-e853bfa970331bcd538b8cd286a8205265a825e1.tar.gz
bcm5719-llvm-e853bfa970331bcd538b8cd286a8205265a825e1.zip
Take care of Chris's comments.
llvm-svn: 74486
Diffstat (limited to 'clang')
-rw-r--r--clang/include/clang/AST/DeclCXX.h2
-rw-r--r--clang/lib/Sema/SemaDeclCXX.cpp29
2 files changed, 16 insertions, 15 deletions
diff --git a/clang/include/clang/AST/DeclCXX.h b/clang/include/clang/AST/DeclCXX.h
index 05383d885d5..847dd0cfdfc 100644
--- a/clang/include/clang/AST/DeclCXX.h
+++ b/clang/include/clang/AST/DeclCXX.h
@@ -616,7 +616,7 @@ public:
/// getBaseOrMember - get the generic 'member' representing either the field
/// or a base class.
- uintptr_t getBaseOrMember() const { return BaseOrMember; }
+ void* getBaseOrMember() const { return reinterpret_cast<void*>(BaseOrMember); }
/// isBaseInitializer - Returns true when this initializer is
/// initializing a base class.
diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp
index e59236c8a4e..1172d3e01b5 100644
--- a/clang/lib/Sema/SemaDeclCXX.cpp
+++ b/clang/lib/Sema/SemaDeclCXX.cpp
@@ -768,28 +768,29 @@ void Sema::ActOnMemInitializers(DeclPtrTy ConstructorDecl,
Diag(ColonLoc, diag::err_only_constructors_take_base_inits);
return;
}
- llvm::DenseMap<uintptr_t, CXXBaseOrMemberInitializer *>Members;
+ llvm::DenseMap<void*, CXXBaseOrMemberInitializer *>Members;
for (unsigned i = 0; i < NumMemInits; i++) {
CXXBaseOrMemberInitializer *Member =
static_cast<CXXBaseOrMemberInitializer*>(MemInits[i]);
CXXBaseOrMemberInitializer *&PrevMember = Members[Member->getBaseOrMember()];
- if (!PrevMember)
+ if (!PrevMember) {
PrevMember = Member;
+ continue;
+ }
+ if (FieldDecl *Field = Member->getMember())
+ Diag(Member->getSourceLocation(),
+ diag::error_multiple_mem_initialization)
+ << Field->getNameAsString();
else {
- if (FieldDecl *Field = Member->getMember())
- Diag(Member->getSourceLocation(),
- diag::error_multiple_mem_initialization)
- << Field->getNameAsString();
- else if (Type *BaseClass = Member->getBaseClass())
- Diag(Member->getSourceLocation(),
- diag::error_multiple_base_initialization)
- << BaseClass->getDesugaredType(true);
- else
- assert(false && "ActOnMemInitializers - neither field or base");
- Diag(PrevMember->getSourceLocation(), diag::note_previous_initializer)
- << 0;
+ Type *BaseClass = Member->getBaseClass();
+ assert(BaseClass && "ActOnMemInitializers - neither field or base");
+ Diag(Member->getSourceLocation(),
+ diag::error_multiple_base_initialization)
+ << BaseClass->getDesugaredType(true);
}
+ Diag(PrevMember->getSourceLocation(), diag::note_previous_initializer)
+ << 0;
}
}
OpenPOWER on IntegriCloud