forked from OSchip/llvm-project
parent
8663941068
commit
9663d8c46d
|
@ -465,13 +465,8 @@ int main(int argc, const char **argv) {
|
|||
|
||||
// Create a place to save duplicate entity locations, separate bins per kind.
|
||||
typedef SmallVector<Location, 8> LocationArray;
|
||||
typedef SmallVector<LocationArray *, Entry::NumberOfKinds> EntryBinArray;
|
||||
typedef SmallVector<LocationArray, Entry::NumberOfKinds> EntryBinArray;
|
||||
EntryBinArray EntryBins;
|
||||
Entry::KindType kind;
|
||||
int kindIndex;
|
||||
for (kindIndex = 0; kindIndex < Entry::NumberOfKinds; ++kindIndex) {
|
||||
EntryBins.push_back(new LocationArray);
|
||||
}
|
||||
|
||||
// Check for the same entity being defined in multiple places.
|
||||
for (EntityMap::iterator E = Entities.begin(), EEnd = Entities.end();
|
||||
|
@ -482,28 +477,27 @@ int main(int argc, const char **argv) {
|
|||
// Clear entity locations.
|
||||
for (EntryBinArray::iterator CI = EntryBins.begin(), CE = EntryBins.end();
|
||||
CI != CE; ++CI) {
|
||||
(**CI).clear();
|
||||
CI->clear();
|
||||
}
|
||||
// Walk the entities of a single name, collecting the locations,
|
||||
// separated into separate bins.
|
||||
for (unsigned I = 0, N = E->second.size(); I != N; ++I) {
|
||||
kind = E->second[I].Kind;
|
||||
LocationArray *locationArray = EntryBins[kind];
|
||||
LocationArray *locationArray = &EntryBins[E->second[I].Kind];
|
||||
locationArray->push_back(E->second[I].Loc);
|
||||
}
|
||||
// Report any duplicate entity definition errors.
|
||||
int kindIndex = 0;
|
||||
for (EntryBinArray::iterator DI = EntryBins.begin(), DE = EntryBins.end();
|
||||
DI != DE; ++DI, ++kindIndex) {
|
||||
int eCount = (**DI).size();
|
||||
int eCount = DI->size();
|
||||
// If only 1 occurance, skip;
|
||||
if (eCount <= 1)
|
||||
continue;
|
||||
LocationArray::iterator FI = (**DI).begin();
|
||||
LocationArray::iterator FI = DI->begin();
|
||||
StringRef kindName = Entry::getKindName((Entry::KindType) kindIndex);
|
||||
errs() << "error: " << kindName << " '" << E->first()
|
||||
<< "' defined at multiple locations:\n";
|
||||
for (LocationArray::iterator FE = (**DI).end(); FI != FE; ++FI) {
|
||||
for (LocationArray::iterator FE = DI->end(); FI != FE; ++FI) {
|
||||
errs() << " " << FI->File->getName() << ":" << FI->Line << ":"
|
||||
<< FI->Column << "\n";
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue