forked from OSchip/llvm-project
Use pop_back_val() instead of both back() and pop_back().
No functionality change intended. llvm-svn: 189112
This commit is contained in:
parent
b09bb1ce19
commit
25284cc95b
|
@ -58,10 +58,7 @@ public:
|
|||
return false;
|
||||
}
|
||||
|
||||
void erase(unsigned I) {
|
||||
Decls[I] = Decls.back();
|
||||
Decls.pop_back();
|
||||
}
|
||||
void erase(unsigned I) { Decls[I] = Decls.pop_back_val(); }
|
||||
|
||||
void clear() { Decls.clear(); }
|
||||
|
||||
|
|
|
@ -61,10 +61,8 @@ class Parser {
|
|||
void consumeToken() {
|
||||
if (MoreLATokens.empty())
|
||||
L.lex(Tok);
|
||||
else {
|
||||
Tok = MoreLATokens.back();
|
||||
MoreLATokens.pop_back();
|
||||
}
|
||||
else
|
||||
Tok = MoreLATokens.pop_back_val();
|
||||
}
|
||||
|
||||
void putBack(const Token &OldTok) {
|
||||
|
|
|
@ -139,15 +139,9 @@ public:
|
|||
I.ir->set(New, AS);
|
||||
}
|
||||
|
||||
void erase(unsigned I) {
|
||||
decls()[I] = decls().back();
|
||||
decls().pop_back();
|
||||
}
|
||||
void erase(unsigned I) { decls()[I] = decls().pop_back_val(); }
|
||||
|
||||
void erase(iterator I) {
|
||||
*I.ir = decls().back();
|
||||
decls().pop_back();
|
||||
}
|
||||
void erase(iterator I) { *I.ir = decls().pop_back_val(); }
|
||||
|
||||
void setAccess(iterator I, AccessSpecifier AS) {
|
||||
I.ir->setAccess(AS);
|
||||
|
|
|
@ -45,8 +45,7 @@ public:
|
|||
/// dequeue - Remove a block from the worklist.
|
||||
const CFGBlock *dequeue() {
|
||||
assert(!BlockQueue.empty());
|
||||
const CFGBlock *B = BlockQueue.back();
|
||||
BlockQueue.pop_back();
|
||||
const CFGBlock *B = BlockQueue.pop_back_val();
|
||||
BlockSet[B] = 0;
|
||||
return B;
|
||||
}
|
||||
|
|
|
@ -111,9 +111,9 @@ protected:
|
|||
/// stack, returning information about it. If the conditional stack is empty,
|
||||
/// this returns true and does not fill in the arguments.
|
||||
bool popConditionalLevel(PPConditionalInfo &CI) {
|
||||
if (ConditionalStack.empty()) return true;
|
||||
CI = ConditionalStack.back();
|
||||
ConditionalStack.pop_back();
|
||||
if (ConditionalStack.empty())
|
||||
return true;
|
||||
CI = ConditionalStack.pop_back_val();
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -168,9 +168,9 @@ bool CXXRecordDecl::forallBases(ForallBasesCallback *BaseMatches,
|
|||
}
|
||||
}
|
||||
|
||||
if (Queue.empty()) break;
|
||||
Record = Queue.back(); // not actually a queue.
|
||||
Queue.pop_back();
|
||||
if (Queue.empty())
|
||||
break;
|
||||
Record = Queue.pop_back_val(); // not actually a queue.
|
||||
}
|
||||
|
||||
return AllMatches;
|
||||
|
|
|
@ -515,8 +515,7 @@ HTMLEndTagComment *Sema::actOnHTMLEndTag(SourceLocation LocBegin,
|
|||
}
|
||||
|
||||
while (!HTMLOpenTags.empty()) {
|
||||
const HTMLStartTagComment *HST = HTMLOpenTags.back();
|
||||
HTMLOpenTags.pop_back();
|
||||
const HTMLStartTagComment *HST = HTMLOpenTags.pop_back_val();
|
||||
StringRef LastNotClosedTagName = HST->getTagName();
|
||||
if (LastNotClosedTagName == TagName)
|
||||
break;
|
||||
|
|
|
@ -566,8 +566,7 @@ void NestedNameSpecifierLocBuilder::MakeTrivial(ASTContext &Context,
|
|||
for (NestedNameSpecifier *NNS = Qualifier; NNS; NNS = NNS->getPrefix())
|
||||
Stack.push_back(NNS);
|
||||
while (!Stack.empty()) {
|
||||
NestedNameSpecifier *NNS = Stack.back();
|
||||
Stack.pop_back();
|
||||
NestedNameSpecifier *NNS = Stack.pop_back_val();
|
||||
switch (NNS->getKind()) {
|
||||
case NestedNameSpecifier::Identifier:
|
||||
case NestedNameSpecifier::Namespace:
|
||||
|
|
|
@ -50,11 +50,10 @@ void CFGReverseBlockReachabilityAnalysis::mapReachability(const CFGBlock *Dst) {
|
|||
// multiple queries relating to a destination node.
|
||||
worklist.push_back(Dst);
|
||||
bool firstRun = true;
|
||||
|
||||
while (!worklist.empty()) {
|
||||
const CFGBlock *block = worklist.back();
|
||||
worklist.pop_back();
|
||||
|
||||
|
||||
while (!worklist.empty()) {
|
||||
const CFGBlock *block = worklist.pop_back_val();
|
||||
|
||||
if (visited[block->getBlockID()])
|
||||
continue;
|
||||
visited[block->getBlockID()] = true;
|
||||
|
|
|
@ -87,8 +87,7 @@ void DataflowWorklist::sortWorklist() {
|
|||
const CFGBlock *DataflowWorklist::dequeue() {
|
||||
if (worklist.empty())
|
||||
return 0;
|
||||
const CFGBlock *b = worklist.back();
|
||||
worklist.pop_back();
|
||||
const CFGBlock *b = worklist.pop_back_val();
|
||||
enqueuedBlocks[b->getBlockID()] = false;
|
||||
return b;
|
||||
}
|
||||
|
|
|
@ -240,10 +240,9 @@ const CFGBlock *DataflowWorklist::dequeue() {
|
|||
|
||||
// First dequeue from the worklist. This can represent
|
||||
// updates along backedges that we want propagated as quickly as possible.
|
||||
if (!worklist.empty()) {
|
||||
B = worklist.back();
|
||||
worklist.pop_back();
|
||||
}
|
||||
if (!worklist.empty())
|
||||
B = worklist.pop_back_val();
|
||||
|
||||
// Next dequeue from the initial reverse post order. This is the
|
||||
// theoretical ideal in the presence of no back edges.
|
||||
else if (PO_I != PO_E) {
|
||||
|
@ -527,8 +526,7 @@ public:
|
|||
// of marking it as not being a candidate element of the frontier.
|
||||
SuccsVisited[block->getBlockID()] = block->succ_size();
|
||||
while (!Queue.empty()) {
|
||||
const CFGBlock *B = Queue.back();
|
||||
Queue.pop_back();
|
||||
const CFGBlock *B = Queue.pop_back_val();
|
||||
for (CFGBlock::const_pred_iterator I = B->pred_begin(), E = B->pred_end();
|
||||
I != E; ++I) {
|
||||
const CFGBlock *Pred = *I;
|
||||
|
|
|
@ -863,8 +863,7 @@ void CodeGenModule::EmitModuleLinkOptions() {
|
|||
// Find all of the modules to import, making a little effort to prune
|
||||
// non-leaf modules.
|
||||
while (!Stack.empty()) {
|
||||
clang::Module *Mod = Stack.back();
|
||||
Stack.pop_back();
|
||||
clang::Module *Mod = Stack.pop_back_val();
|
||||
|
||||
bool AnyChildren = false;
|
||||
|
||||
|
|
|
@ -329,8 +329,7 @@ void TokenLexer::ExpandFunctionArguments() {
|
|||
(unsigned)ArgNo == Macro->getNumArgs()-1 &&
|
||||
Macro->isVariadic()) {
|
||||
// Remove the paste operator, report use of the extension.
|
||||
PP.Diag(ResultToks.back().getLocation(), diag::ext_paste_comma);
|
||||
ResultToks.pop_back();
|
||||
PP.Diag(ResultToks.pop_back_val().getLocation(), diag::ext_paste_comma);
|
||||
}
|
||||
|
||||
ResultToks.append(ArgToks, ArgToks+NumToks);
|
||||
|
@ -386,8 +385,7 @@ void TokenLexer::ExpandFunctionArguments() {
|
|||
assert(PasteBefore);
|
||||
if (NonEmptyPasteBefore) {
|
||||
assert(ResultToks.back().is(tok::hashhash));
|
||||
NextTokGetsSpace |= ResultToks.back().hasLeadingSpace();
|
||||
ResultToks.pop_back();
|
||||
NextTokGetsSpace |= ResultToks.pop_back_val().hasLeadingSpace();
|
||||
}
|
||||
|
||||
// If this is the __VA_ARGS__ token, and if the argument wasn't provided,
|
||||
|
|
|
@ -630,8 +630,7 @@ void Sema::ActOnEndOfTranslationUnit() {
|
|||
SmallVector<Module *, 2> Stack;
|
||||
Stack.push_back(CurrentModule);
|
||||
while (!Stack.empty()) {
|
||||
Module *Mod = Stack.back();
|
||||
Stack.pop_back();
|
||||
Module *Mod = Stack.pop_back_val();
|
||||
|
||||
// Resolve the exported declarations and conflicts.
|
||||
// FIXME: Actually complain, once we figure out how to teach the
|
||||
|
|
|
@ -315,8 +315,7 @@ static AccessResult IsDerivedFromInclusive(const CXXRecordDecl *Derived,
|
|||
|
||||
if (Queue.empty()) break;
|
||||
|
||||
Derived = Queue.back();
|
||||
Queue.pop_back();
|
||||
Derived = Queue.pop_back_val();
|
||||
}
|
||||
|
||||
return OnFailure;
|
||||
|
|
|
@ -6031,8 +6031,7 @@ void Sema::CheckUnsequencedOperations(Expr *E) {
|
|||
SmallVector<Expr *, 8> WorkList;
|
||||
WorkList.push_back(E);
|
||||
while (!WorkList.empty()) {
|
||||
Expr *Item = WorkList.back();
|
||||
WorkList.pop_back();
|
||||
Expr *Item = WorkList.pop_back_val();
|
||||
SequenceChecker(*this, Item, WorkList);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -464,9 +464,8 @@ getRequiredQualification(ASTContext &Context,
|
|||
|
||||
NestedNameSpecifier *Result = 0;
|
||||
while (!TargetParents.empty()) {
|
||||
const DeclContext *Parent = TargetParents.back();
|
||||
TargetParents.pop_back();
|
||||
|
||||
const DeclContext *Parent = TargetParents.pop_back_val();
|
||||
|
||||
if (const NamespaceDecl *Namespace = dyn_cast<NamespaceDecl>(Parent)) {
|
||||
if (!Namespace->getIdentifier())
|
||||
continue;
|
||||
|
|
|
@ -1249,8 +1249,7 @@ static bool findCircularInheritance(const CXXRecordDecl *Class,
|
|||
if (Queue.empty())
|
||||
return false;
|
||||
|
||||
Current = Queue.back();
|
||||
Queue.pop_back();
|
||||
Current = Queue.pop_back_val();
|
||||
}
|
||||
|
||||
return false;
|
||||
|
|
|
@ -167,8 +167,7 @@ namespace {
|
|||
if (queue.empty())
|
||||
return;
|
||||
|
||||
DC = queue.back();
|
||||
queue.pop_back();
|
||||
DC = queue.pop_back_val();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1446,8 +1445,7 @@ static bool LookupQualifiedNameInUsingDirectives(Sema &S, LookupResult &R,
|
|||
|
||||
bool Found = false;
|
||||
while (!Queue.empty()) {
|
||||
NamespaceDecl *ND = Queue.back();
|
||||
Queue.pop_back();
|
||||
NamespaceDecl *ND = Queue.pop_back_val();
|
||||
|
||||
// We go through some convolutions here to avoid copying results
|
||||
// between LookupResults.
|
||||
|
@ -2039,8 +2037,7 @@ addAssociatedClassesAndNamespaces(AssociatedLookup &Result,
|
|||
Bases.push_back(Class);
|
||||
while (!Bases.empty()) {
|
||||
// Pop this class off the stack.
|
||||
Class = Bases.back();
|
||||
Bases.pop_back();
|
||||
Class = Bases.pop_back_val();
|
||||
|
||||
// Visit the base classes.
|
||||
for (CXXRecordDecl::base_class_iterator Base = Class->bases_begin(),
|
||||
|
@ -2224,9 +2221,9 @@ addAssociatedClassesAndNamespaces(AssociatedLookup &Result, QualType Ty) {
|
|||
continue;
|
||||
}
|
||||
|
||||
if (Queue.empty()) break;
|
||||
T = Queue.back();
|
||||
Queue.pop_back();
|
||||
if (Queue.empty())
|
||||
break;
|
||||
T = Queue.pop_back_val();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -3527,8 +3527,7 @@ bool Sema::CheckTemplateArgumentList(TemplateDecl *Template,
|
|||
// deduced argument and place it on the argument pack. Note that we
|
||||
// stay on the same template parameter so that we can deduce more
|
||||
// arguments.
|
||||
ArgumentPack.push_back(Converted.back());
|
||||
Converted.pop_back();
|
||||
ArgumentPack.push_back(Converted.pop_back_val());
|
||||
} else {
|
||||
// Move to the next template parameter.
|
||||
++Param;
|
||||
|
|
|
@ -1431,8 +1431,7 @@ DeduceTemplateArgumentsByTypeMatch(Sema &S,
|
|||
Deduced.end());
|
||||
while (!ToVisit.empty()) {
|
||||
// Retrieve the next class in the inheritance hierarchy.
|
||||
const RecordType *NextT = ToVisit.back();
|
||||
ToVisit.pop_back();
|
||||
const RecordType *NextT = ToVisit.pop_back_val();
|
||||
|
||||
// If we have already seen this type, skip it.
|
||||
if (!Visited.insert(NextT))
|
||||
|
@ -2091,8 +2090,7 @@ ConvertDeducedTemplateArgument(Sema &S, NamedDecl *Param,
|
|||
return true;
|
||||
|
||||
// Move the converted template argument into our argument pack.
|
||||
PackedArgsBuilder.push_back(Output.back());
|
||||
Output.pop_back();
|
||||
PackedArgsBuilder.push_back(Output.pop_back_val());
|
||||
}
|
||||
|
||||
// Create the resulting argument pack.
|
||||
|
|
|
@ -2819,13 +2819,12 @@ void ASTReader::makeModuleVisible(Module *Mod,
|
|||
bool Complain) {
|
||||
llvm::SmallPtrSet<Module *, 4> Visited;
|
||||
SmallVector<Module *, 4> Stack;
|
||||
Stack.push_back(Mod);
|
||||
Stack.push_back(Mod);
|
||||
while (!Stack.empty()) {
|
||||
Mod = Stack.back();
|
||||
Stack.pop_back();
|
||||
Mod = Stack.pop_back_val();
|
||||
|
||||
if (NameVisibility <= Mod->NameVisibility) {
|
||||
// This module already has this level of visibility (or greater), so
|
||||
// This module already has this level of visibility (or greater), so
|
||||
// there is nothing more to do.
|
||||
continue;
|
||||
}
|
||||
|
|
|
@ -332,8 +332,7 @@ ModuleManager::visit(bool (*Visitor)(ModuleFile &M, void *UserData),
|
|||
break;
|
||||
|
||||
// Pop the next module off the stack.
|
||||
NextModule = State->Stack.back();
|
||||
State->Stack.pop_back();
|
||||
NextModule = State->Stack.pop_back_val();
|
||||
} while (true);
|
||||
}
|
||||
|
||||
|
|
|
@ -85,10 +85,9 @@ void ReachableCode::computeReachableBlocks() {
|
|||
|
||||
SmallVector<const CFGBlock*, 10> worklist;
|
||||
worklist.push_back(&cfg.getEntry());
|
||||
|
||||
|
||||
while (!worklist.empty()) {
|
||||
const CFGBlock *block = worklist.back();
|
||||
worklist.pop_back();
|
||||
const CFGBlock *block = worklist.pop_back_val();
|
||||
llvm::BitVector::reference isReachable = reachable[block->getBlockID()];
|
||||
if (isReachable)
|
||||
continue;
|
||||
|
|
|
@ -2651,10 +2651,8 @@ void BugReport::pushInterestingSymbolsAndRegions() {
|
|||
}
|
||||
|
||||
void BugReport::popInterestingSymbolsAndRegions() {
|
||||
delete interestingSymbols.back();
|
||||
interestingSymbols.pop_back();
|
||||
delete interestingRegions.back();
|
||||
interestingRegions.pop_back();
|
||||
delete interestingSymbols.pop_back_val();
|
||||
delete interestingRegions.pop_back_val();
|
||||
}
|
||||
|
||||
const Stmt *BugReport::getStmt() const {
|
||||
|
|
|
@ -357,8 +357,7 @@ ExplodedGraph::trim(ArrayRef<const NodeTy *> Sinks,
|
|||
|
||||
// Process the first worklist until it is empty.
|
||||
while (!WL1.empty()) {
|
||||
const ExplodedNode *N = WL1.back();
|
||||
WL1.pop_back();
|
||||
const ExplodedNode *N = WL1.pop_back_val();
|
||||
|
||||
// Have we already visited this node? If so, continue to the next one.
|
||||
if (Pass1.count(N))
|
||||
|
@ -388,8 +387,7 @@ ExplodedGraph::trim(ArrayRef<const NodeTy *> Sinks,
|
|||
|
||||
// ===- Pass 2 (forward DFS to construct the new graph) -===
|
||||
while (!WL2.empty()) {
|
||||
const ExplodedNode *N = WL2.back();
|
||||
WL2.pop_back();
|
||||
const ExplodedNode *N = WL2.pop_back_val();
|
||||
|
||||
// Skip this node if we have already processed it.
|
||||
if (Pass2.find(N) != Pass2.end())
|
||||
|
|
|
@ -216,11 +216,10 @@ void PathDiagnosticConsumer::HandlePathDiagnostic(PathDiagnostic *D) {
|
|||
WorkList.push_back(&D->path);
|
||||
|
||||
while (!WorkList.empty()) {
|
||||
const PathPieces &path = *WorkList.back();
|
||||
WorkList.pop_back();
|
||||
const PathPieces &path = *WorkList.pop_back_val();
|
||||
|
||||
for (PathPieces::const_iterator I = path.begin(), E = path.end();
|
||||
I != E; ++I) {
|
||||
for (PathPieces::const_iterator I = path.begin(), E = path.end(); I != E;
|
||||
++I) {
|
||||
const PathDiagnosticPiece *piece = I->getPtr();
|
||||
FullSourceLoc L = piece->getLocation().asLocation().getExpansionLoc();
|
||||
|
||||
|
|
|
@ -382,11 +382,10 @@ void PlistDiagnostics::FlushDiagnosticsImpl(
|
|||
WorkList.push_back(&D->path);
|
||||
|
||||
while (!WorkList.empty()) {
|
||||
const PathPieces &path = *WorkList.back();
|
||||
WorkList.pop_back();
|
||||
|
||||
for (PathPieces::const_iterator I = path.begin(), E = path.end();
|
||||
I!=E; ++I) {
|
||||
const PathPieces &path = *WorkList.pop_back_val();
|
||||
|
||||
for (PathPieces::const_iterator I = path.begin(), E = path.end(); I != E;
|
||||
++I) {
|
||||
const PathDiagnosticPiece *piece = I->getPtr();
|
||||
AddFID(FM, Fids, SM, piece->getLocation().asLocation());
|
||||
ArrayRef<SourceRange> Ranges = piece->getRanges();
|
||||
|
|
|
@ -112,8 +112,7 @@ SymbolRef SymExpr::symbol_iterator::operator*() {
|
|||
}
|
||||
|
||||
void SymExpr::symbol_iterator::expand() {
|
||||
const SymExpr *SE = itr.back();
|
||||
itr.pop_back();
|
||||
const SymExpr *SE = itr.pop_back_val();
|
||||
|
||||
switch (SE->getKind()) {
|
||||
case SymExpr::RegionValueKind:
|
||||
|
|
|
@ -2256,8 +2256,7 @@ bool CursorVisitor::IsInRegionOfInterest(CXCursor C) {
|
|||
bool CursorVisitor::RunVisitorWorkList(VisitorWorkList &WL) {
|
||||
while (!WL.empty()) {
|
||||
// Dequeue the worklist item.
|
||||
VisitorJob LI = WL.back();
|
||||
WL.pop_back();
|
||||
VisitorJob LI = WL.pop_back_val();
|
||||
|
||||
// Set the Parent field, then back to its old value once we're done.
|
||||
SetParentRAII SetParent(Parent, StmtParent, LI.getParent());
|
||||
|
|
Loading…
Reference in New Issue