mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-13 04:30:23 +00:00
Make StringSet::insert return pair<iterator, bool> like other self-associative 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
This commit is contained in:
parent
3977e2f696
commit
8f4a49f41a
@ -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'));
|
||||
}
|
||||
};
|
||||
}
|
||||
|
@ -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";
|
||||
}
|
||||
}
|
||||
|
@ -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))
|
||||
|
@ -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()));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user