From: Jay Foad Date: Thu, 21 May 2009 09:52:38 +0000 (+0000) Subject: Use v.data() instead of &v[0] when SmallVector v might be empty. X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=e3e51c0038bd6ba2add82e2246e97edec0ab2204;p=oota-llvm.git Use v.data() instead of &v[0] when SmallVector v might be empty. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72210 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/ADT/StringMap.h b/include/llvm/ADT/StringMap.h index f5394750f25..a15d24eeae2 100644 --- a/include/llvm/ADT/StringMap.h +++ b/include/llvm/ADT/StringMap.h @@ -286,8 +286,7 @@ public: return find(Key, Key + strlen(Key)); } iterator find(const std::string &Key) { - const char* key_start = (Key.empty() ? NULL : &Key[0]); - return find(key_start, key_start + Key.size()); + return find(Key.data(), Key.data() + Key.size()); } const_iterator find(const char *KeyStart, const char *KeyEnd) const { @@ -299,8 +298,7 @@ public: return find(Key, Key + strlen(Key)); } const_iterator find(const std::string &Key) const { - const char* key_start = (Key.empty() ? NULL : &Key[0]); - return find(key_start, key_start + Key.size()); + return find(Key.data(), Key.data() + Key.size()); } /// lookup - Return the entry for the specified key, or a default @@ -328,8 +326,7 @@ public: return GetOrCreateValue(Key, Key + strlen(Key)).getValue(); } ValueTy& operator[](const std::string &Key) { - const char* key_start = (Key.empty() ? NULL : &Key[0]); - return GetOrCreateValue(key_start, key_start + Key.size()).getValue(); + return GetOrCreateValue(Key.data(), Key.data() + Key.size()).getValue(); } size_type count(const char *KeyStart, const char *KeyEnd) const { @@ -339,8 +336,7 @@ public: return count(Key, Key + strlen(Key)); } size_type count(const std::string &Key) const { - const char* key_start = (Key.empty() ? NULL : &Key[0]); - return count(key_start, key_start + Key.size()); + return count(Key.data(), Key.data() + Key.size()); } /// insert - Insert the specified key/value pair into the map. If the key diff --git a/lib/Analysis/ConstantFolding.cpp b/lib/Analysis/ConstantFolding.cpp index 00b54413aa2..e5ab3226ce4 100644 --- a/lib/Analysis/ConstantFolding.cpp +++ b/lib/Analysis/ConstantFolding.cpp @@ -260,7 +260,7 @@ static Constant *FoldBitCast(Constant *C, const Type *DestTy, } } - return ConstantVector::get(&Result[0], Result.size()); + return ConstantVector::get(Result.data(), Result.size()); } } @@ -306,10 +306,10 @@ Constant *llvm::ConstantFoldInstruction(Instruction *I, const TargetData *TD) { if (const CmpInst *CI = dyn_cast(I)) return ConstantFoldCompareInstOperands(CI->getPredicate(), - &Ops[0], Ops.size(), TD); + Ops.data(), Ops.size(), TD); else return ConstantFoldInstOperands(I->getOpcode(), I->getType(), - &Ops[0], Ops.size(), TD); + Ops.data(), Ops.size(), TD); } /// ConstantFoldConstantExpression - Attempt to fold the constant expression @@ -325,10 +325,10 @@ Constant *llvm::ConstantFoldConstantExpression(ConstantExpr *CE, if (CE->isCompare()) return ConstantFoldCompareInstOperands(CE->getPredicate(), - &Ops[0], Ops.size(), TD); + Ops.data(), Ops.size(), TD); else return ConstantFoldInstOperands(CE->getOpcode(), CE->getType(), - &Ops[0], Ops.size(), TD); + Ops.data(), Ops.size(), TD); } /// ConstantFoldInstOperands - Attempt to constant fold an instruction with the diff --git a/lib/Analysis/DebugInfo.cpp b/lib/Analysis/DebugInfo.cpp index 9f6cbc919d9..6bdb64c975c 100644 --- a/lib/Analysis/DebugInfo.cpp +++ b/lib/Analysis/DebugInfo.cpp @@ -442,7 +442,7 @@ DIArray DIFactory::GetOrCreateArray(DIDescriptor *Tys, unsigned NumTys) { Constant *Init = ConstantArray::get(ArrayType::get(EmptyStructPtr, Elts.size()), - &Elts[0], Elts.size()); + Elts.data(), Elts.size()); // If we already have this array, just return the uniqued version. DIDescriptor &Entry = SimpleConstantCache[Init]; if (!Entry.isNull()) return DIArray(Entry.getGV()); diff --git a/lib/AsmParser/LLParser.cpp b/lib/AsmParser/LLParser.cpp index 21243975f1c..8db4c715b79 100644 --- a/lib/AsmParser/LLParser.cpp +++ b/lib/AsmParser/LLParser.cpp @@ -1577,7 +1577,7 @@ bool LLParser::ParseValID(ValID &ID) { ParseToken(lltok::rbrace, "expected end of metadata node")) return true; - ID.ConstantVal = MDNode::get(&Elts[0], Elts.size()); + ID.ConstantVal = MDNode::get(Elts.data(), Elts.size()); return false; } @@ -1617,7 +1617,7 @@ bool LLParser::ParseValID(ValID &ID) { ParseToken(lltok::rbrace, "expected end of struct constant")) return true; - ID.ConstantVal = ConstantStruct::get(&Elts[0], Elts.size(), false); + ID.ConstantVal = ConstantStruct::get(Elts.data(), Elts.size(), false); ID.Kind = ValID::t_Constant; return false; } @@ -1636,7 +1636,7 @@ bool LLParser::ParseValID(ValID &ID) { return true; if (isPackedStruct) { - ID.ConstantVal = ConstantStruct::get(&Elts[0], Elts.size(), true); + ID.ConstantVal = ConstantStruct::get(Elts.data(), Elts.size(), true); ID.Kind = ValID::t_Constant; return false; } @@ -1656,7 +1656,7 @@ bool LLParser::ParseValID(ValID &ID) { "vector element #" + utostr(i) + " is not of type '" + Elts[0]->getType()->getDescription()); - ID.ConstantVal = ConstantVector::get(&Elts[0], Elts.size()); + ID.ConstantVal = ConstantVector::get(Elts.data(), Elts.size()); ID.Kind = ValID::t_Constant; return false; } @@ -1690,7 +1690,7 @@ bool LLParser::ParseValID(ValID &ID) { " is not of type '" +Elts[0]->getType()->getDescription()); } - ID.ConstantVal = ConstantArray::get(ATy, &Elts[0], Elts.size()); + ID.ConstantVal = ConstantArray::get(ATy, Elts.data(), Elts.size()); ID.Kind = ValID::t_Constant; return false; } @@ -1761,8 +1761,8 @@ bool LLParser::ParseValID(ValID &ID) { if (!ExtractValueInst::getIndexedType(Val->getType(), Indices.begin(), Indices.end())) return Error(ID.Loc, "invalid indices for extractvalue"); - ID.ConstantVal = ConstantExpr::getExtractValue(Val, - &Indices[0], Indices.size()); + ID.ConstantVal = + ConstantExpr::getExtractValue(Val, Indices.data(), Indices.size()); ID.Kind = ValID::t_Constant; return false; } @@ -1782,8 +1782,8 @@ bool LLParser::ParseValID(ValID &ID) { if (!ExtractValueInst::getIndexedType(Val0->getType(), Indices.begin(), Indices.end())) return Error(ID.Loc, "invalid indices for insertvalue"); - ID.ConstantVal = ConstantExpr::getInsertValue(Val0, Val1, - &Indices[0], Indices.size()); + ID.ConstantVal = + ConstantExpr::getInsertValue(Val0, Val1, Indices.data(), Indices.size()); ID.Kind = ValID::t_Constant; return false; } diff --git a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp b/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp index 0c37f526292..5c8cf7568bc 100644 --- a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp +++ b/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp @@ -1041,7 +1041,7 @@ SDValue SelectionDAGLegalize::LegalizeOp(SDValue Op) { for (unsigned i = 0, e = Node->getNumOperands(); i != e; ++i) Ops.push_back(LegalizeOp(Node->getOperand(i))); - Result = DAG.UpdateNodeOperands(Result.getValue(0), &Ops[0], Ops.size()); + Result = DAG.UpdateNodeOperands(Result.getValue(0), Ops.data(), Ops.size()); for (unsigned i = 0, e = Node->getNumValues(); i != e; ++i) AddLegalizedOperand(Op.getValue(i), Result.getValue(i)); diff --git a/lib/VMCore/Attributes.cpp b/lib/VMCore/Attributes.cpp index 0f3efa7b9dd..5a8fad9cd32 100644 --- a/lib/VMCore/Attributes.cpp +++ b/lib/VMCore/Attributes.cpp @@ -108,7 +108,7 @@ public: void DropRef() { if (--RefCount == 0) delete this; } void Profile(FoldingSetNodeID &ID) const { - Profile(ID, &Attrs[0], Attrs.size()); + Profile(ID, Attrs.data(), Attrs.size()); } static void Profile(FoldingSetNodeID &ID, const AttributeWithIndex *Attr, unsigned NumAttrs) { @@ -261,7 +261,7 @@ AttrListPtr AttrListPtr::addAttr(unsigned Idx, Attributes Attrs) const { OldAttrList.begin()+i, OldAttrList.end()); } - return get(&NewAttrList[0], NewAttrList.size()); + return get(NewAttrList.data(), NewAttrList.size()); } AttrListPtr AttrListPtr::removeAttr(unsigned Idx, Attributes Attrs) const { @@ -296,7 +296,7 @@ AttrListPtr AttrListPtr::removeAttr(unsigned Idx, Attributes Attrs) const { NewAttrList.insert(NewAttrList.end(), OldAttrList.begin()+i, OldAttrList.end()); - return get(&NewAttrList[0], NewAttrList.size()); + return get(NewAttrList.data(), NewAttrList.size()); } void AttrListPtr::dump() const { diff --git a/lib/VMCore/ValueSymbolTable.cpp b/lib/VMCore/ValueSymbolTable.cpp index 3a0c54ed723..eee18a164c1 100644 --- a/lib/VMCore/ValueSymbolTable.cpp +++ b/lib/VMCore/ValueSymbolTable.cpp @@ -33,7 +33,7 @@ ValueSymbolTable::~ValueSymbolTable() { // lookup a value - Returns null on failure... // Value *ValueSymbolTable::lookup(const std::string &Name) const { - const_iterator VI = vmap.find(&Name[0], &Name[Name.size()]); + const_iterator VI = vmap.find(Name.data(), Name.data() + Name.size()); if (VI != vmap.end()) // We found the symbol return VI->getValue(); return 0; @@ -70,8 +70,9 @@ void ValueSymbolTable::reinsertValue(Value* V) { UniqueName.resize(BaseSize); UniqueName.append_uint_32(++LastUnique); // Try insert the vmap entry with this suffix. - ValueName &NewName = vmap.GetOrCreateValue(&UniqueName[0], - &UniqueName[UniqueName.size()]); + ValueName &NewName = + vmap.GetOrCreateValue(UniqueName.data(), + UniqueName.data() + UniqueName.size()); if (NewName.getValue() == 0) { // Newly inserted name. Success! NewName.setValue(V); @@ -111,8 +112,9 @@ ValueName *ValueSymbolTable::createValueName(const char *NameStart, UniqueName.append_uint_32(++LastUnique); // Try insert the vmap entry with this suffix. - ValueName &NewName = vmap.GetOrCreateValue(&UniqueName[0], - &UniqueName[UniqueName.size()]); + ValueName &NewName = + vmap.GetOrCreateValue(UniqueName.data(), + UniqueName.data() + UniqueName.size()); if (NewName.getValue() == 0) { // Newly inserted name. Success! NewName.setValue(V);