Skip to content

Commit

Permalink
Make StringSet::insert return pair<iterator, bool> like other self-as…
Browse files Browse the repository at this point in the history
…sociative containers

StringSet is still a bit dodgy in that it exposes the raw iterator of
the StringMap parent, which exposes the weird detail that StringSet
actually has a 'value'... but anyway, this is useful for a handful of
clients that want to reference the newly inserted/persistent string data
in the StringSet/Map/Entry/thing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@222302 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
dwblaikie committed Nov 19, 2014
1 parent 3977e2f commit 8f4a49f
Show file tree
Hide file tree
Showing 4 changed files with 5 additions and 16 deletions.
15 changes: 2 additions & 13 deletions include/llvm/ADT/StringSet.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,20 +24,9 @@ namespace llvm {
typedef llvm::StringMap<char, AllocatorTy> base;
public:

/// insert - Insert the specified key into the set. If the key already
/// exists in the set, return false and ignore the request, otherwise insert
/// it and return true.
bool insert(StringRef Key) {
// Get or create the map entry for the key; if it doesn't exist the value
// type will be default constructed which we use to detect insert.
//
// We use '+' as the sentinel value in the map.
std::pair<typename base::iterator, bool> insert(StringRef Key) {
assert(!Key.empty());
StringMapEntry<char> &Entry = this->GetOrCreateValue(Key);
if (Entry.getValue() == '+')
return false;
Entry.setValue('+');
return true;
return base::insert(std::make_pair(Key, '\0'));
}
};
}
Expand Down
2 changes: 1 addition & 1 deletion tools/opt/BreakpointPrinter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ struct BreakpointPrinter : public ModulePass {
continue;
getContextName(SP.getContext().resolve(TypeIdentifierMap), Name);
Name = Name + SP.getDisplayName().str();
if (!Name.empty() && Processed.insert(Name)) {
if (!Name.empty() && Processed.insert(Name).second) {
Out << Name << "\n";
}
}
Expand Down
2 changes: 1 addition & 1 deletion utils/FileCheck/FileCheck.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1219,7 +1219,7 @@ static bool ValidateCheckPrefixes() {
if (Prefix == "")
return false;

if (!PrefixSet.insert(Prefix))
if (!PrefixSet.insert(Prefix).second)
return false;

if (!ValidateCheckPrefix(Prefix))
Expand Down
2 changes: 1 addition & 1 deletion utils/TableGen/DAGISelMatcherOpt.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -454,7 +454,7 @@ static void FactorNodes(std::unique_ptr<Matcher> &MatcherPtr) {
SmallVector<std::pair<const SDNodeInfo*, Matcher*>, 8> Cases;
for (unsigned i = 0, e = NewOptionsToMatch.size(); i != e; ++i) {
CheckOpcodeMatcher *COM = cast<CheckOpcodeMatcher>(NewOptionsToMatch[i]);
assert(Opcodes.insert(COM->getOpcode().getEnumName()) &&
assert(Opcodes.insert(COM->getOpcode().getEnumName()).second &&
"Duplicate opcodes not factored?");
Cases.push_back(std::make_pair(&COM->getOpcode(), COM->getNext()));
}
Expand Down

0 comments on commit 8f4a49f

Please sign in to comment.