bool RSExportReduce::matchName(const llvm::StringRef &Candidate) const { return Candidate.equals(mNameInitializer) || Candidate.equals(mNameAccumulator) || Candidate.equals(mNameCombiner) || Candidate.equals(mNameOutConverter) || Candidate.equals(mNameHalter); }
bool DynamicLibraryManager::isDynamicLibraryLoaded(llvm::StringRef fullPath) const{ for(DyLibs::const_iterator I = m_DyLibs.begin(), E = m_DyLibs.end(); I != E; ++I) { if (fullPath.equals((I->second))) return true; } return false; }
static bool array_match(llvm::StringRef name, const char *names[]) { unsigned idx = 0; while(names[idx]) { if (name.equals(names[idx])) return true; ++idx; } return false; }
lldb::SectionType IRExecutionUnit::GetSectionTypeFromSectionName (const llvm::StringRef &name, IRExecutionUnit::AllocationKind alloc_kind) { lldb::SectionType sect_type = lldb::eSectionTypeCode; switch (alloc_kind) { case AllocationKind::Stub: sect_type = lldb::eSectionTypeCode; break; case AllocationKind::Code: sect_type = lldb::eSectionTypeCode; break; case AllocationKind::Data: sect_type = lldb::eSectionTypeData; break; case AllocationKind::Global:sect_type = lldb::eSectionTypeData; break; case AllocationKind::Bytes: sect_type = lldb::eSectionTypeOther; break; } if (!name.empty()) { if (name.equals("__text") || name.equals(".text")) sect_type = lldb::eSectionTypeCode; else if (name.equals("__data") || name.equals(".data")) sect_type = lldb::eSectionTypeCode; else if (name.startswith("__debug_") || name.startswith(".debug_")) { const uint32_t name_idx = name[0] == '_' ? 8 : 7; llvm::StringRef dwarf_name(name.substr(name_idx)); switch (dwarf_name[0]) { case 'a': if (dwarf_name.equals("abbrev")) sect_type = lldb::eSectionTypeDWARFDebugAbbrev; else if (dwarf_name.equals("aranges")) sect_type = lldb::eSectionTypeDWARFDebugAranges; break; case 'f': if (dwarf_name.equals("frame")) sect_type = lldb::eSectionTypeDWARFDebugFrame; break; case 'i': if (dwarf_name.equals("info")) sect_type = lldb::eSectionTypeDWARFDebugInfo; break; case 'l': if (dwarf_name.equals("line")) sect_type = lldb::eSectionTypeDWARFDebugLine; else if (dwarf_name.equals("loc")) sect_type = lldb::eSectionTypeDWARFDebugLoc; break; case 'm': if (dwarf_name.equals("macinfo")) sect_type = lldb::eSectionTypeDWARFDebugMacInfo; break; case 'p': if (dwarf_name.equals("pubnames")) sect_type = lldb::eSectionTypeDWARFDebugPubNames; else if (dwarf_name.equals("pubtypes")) sect_type = lldb::eSectionTypeDWARFDebugPubTypes; break; case 's': if (dwarf_name.equals("str")) sect_type = lldb::eSectionTypeDWARFDebugStr; break; case 'r': if (dwarf_name.equals("ranges")) sect_type = lldb::eSectionTypeDWARFDebugRanges; break; default: break; } } else if (name.startswith("__apple_") || name.startswith(".apple_")) { #if 0 const uint32_t name_idx = name[0] == '_' ? 8 : 7; llvm::StringRef apple_name(name.substr(name_idx)); switch (apple_name[0]) { case 'n': if (apple_name.equals("names")) sect_type = lldb::eSectionTypeDWARFAppleNames; else if (apple_name.equals("namespac") || apple_name.equals("namespaces")) sect_type = lldb::eSectionTypeDWARFAppleNamespaces; break; case 't': if (apple_name.equals("types")) sect_type = lldb::eSectionTypeDWARFAppleTypes; break; case 'o': if (apple_name.equals("objc")) sect_type = lldb::eSectionTypeDWARFAppleObjC; break; default: break; } #else sect_type = lldb::eSectionTypeInvalid; #endif } else if (name.equals("__objc_imageinfo")) sect_type = lldb::eSectionTypeOther; } return sect_type; }
bool SplitPaths(llvm::StringRef PathStr, llvm::SmallVectorImpl<llvm::StringRef>& Paths, SplitMode Mode, llvm::StringRef Delim, bool Verbose) { assert(Delim.size() && "Splitting without a delimiter"); #if defined(LLVM_ON_WIN32) // Support using a ':' delimiter on Windows. const bool WindowsColon = Delim.equals(":"); #endif bool AllExisted = true; for (std::pair<llvm::StringRef, llvm::StringRef> Split = PathStr.split(Delim); !Split.second.empty(); Split = PathStr.split(Delim)) { if (!Split.first.empty()) { bool Exists = llvm::sys::fs::is_directory(Split.first); #if defined(LLVM_ON_WIN32) // Because drive letters will have a colon we have to make sure the split // occurs at a colon not followed by a path separator. if (!Exists && WindowsColon && Split.first.size()==1) { // Both clang and cl.exe support '\' and '/' path separators. if (Split.second.front() == '\\' || Split.second.front() == '/') { const std::pair<llvm::StringRef, llvm::StringRef> Tmp = Split.second.split(Delim); // Split.first = 'C', but we want 'C:', so Tmp.first.size()+2 Split.first = llvm::StringRef(Split.first.data(), Tmp.first.size() + 2); Split.second = Tmp.second; Exists = llvm::sys::fs::is_directory(Split.first); } } #endif AllExisted = AllExisted && Exists; if (!Exists) { if (Mode == kFailNonExistant) { if (Verbose) { // Exiting early, but still log all non-existant paths that we have LogNonExistantDirectory(Split.first); while (!Split.second.empty()) { Split = PathStr.split(Delim); if (llvm::sys::fs::is_directory(Split.first)) { llvm::errs() << " ignoring directory that exists \"" << Split.first << "\"\n"; } else LogNonExistantDirectory(Split.first); Split = Split.second.split(Delim); } if (!llvm::sys::fs::is_directory(Split.first)) LogNonExistantDirectory(Split.first); } return false; } else if (Mode == kAllowNonExistant) Paths.push_back(Split.first); else if (Verbose) LogNonExistantDirectory(Split.first); } else Paths.push_back(Split.first); } PathStr = Split.second; } // Trim trailing sep in case of A:B:C:D: if (!PathStr.empty() && PathStr.endswith(Delim)) PathStr = PathStr.substr(0, PathStr.size()-Delim.size()); if (!PathStr.empty()) { if (!llvm::sys::fs::is_directory(PathStr)) { AllExisted = false; if (Mode == kAllowNonExistant) Paths.push_back(PathStr); else if (Verbose) LogNonExistantDirectory(PathStr); } else Paths.push_back(PathStr); } return AllExisted; }
void MetaSema::actOnstatsCommand(llvm::StringRef name) const { if (name.equals("ast")) { m_Interpreter.getCI()->getSema().getASTContext().PrintStats(); } }
static inline bool stringref_equal(llvm::StringRef a, llvm::StringRef b) { return a.equals(b); }