/// best match.
///
/// Return a common part of LTO name for a given \p Name.
-Optional<StringRef> getLTOCommonName(const StringRef Name);
+std::optional<StringRef> getLTOCommonName(const StringRef Name);
class ProfileReaderBase {
protected:
namespace llvm {
namespace bolt {
-Optional<StringRef> getLTOCommonName(const StringRef Name) {
+std::optional<StringRef> getLTOCommonName(const StringRef Name) {
size_t LTOSuffixPos = Name.find(".lto_priv.");
if (LTOSuffixPos != StringRef::npos)
return Name.substr(0, LTOSuffixPos + 10);
void DataReader::buildLTONameMaps() {
for (StringMapEntry<FuncBranchData> &FuncData : NamesToBranches) {
const StringRef FuncName = FuncData.getKey();
- const Optional<StringRef> CommonName = getLTOCommonName(FuncName);
+ const std::optional<StringRef> CommonName = getLTOCommonName(FuncName);
if (CommonName)
LTOCommonNameMap[*CommonName].push_back(&FuncData.getValue());
}
for (StringMapEntry<FuncMemData> &FuncData : NamesToMemEvents) {
const StringRef FuncName = FuncData.getKey();
- const Optional<StringRef> CommonName = getLTOCommonName(FuncName);
+ const std::optional<StringRef> CommonName = getLTOCommonName(FuncName);
if (CommonName)
LTOCommonNameMemMap[*CommonName].push_back(&FuncData.getValue());
}
// of matching a name at the end of the list.
for (auto FI = FuncNames.rbegin(), FE = FuncNames.rend(); FI != FE; ++FI) {
std::string Name = normalizeName(*FI);
- const Optional<StringRef> LTOCommonName = getLTOCommonName(Name);
+ const std::optional<StringRef> LTOCommonName = getLTOCommonName(Name);
if (LTOCommonName) {
auto I = LTOCommonNameMap.find(*LTOCommonName);
if (I != LTOCommonNameMap.end()) {
if (Pos != StringRef::npos)
Name = Name.substr(0, Pos);
ProfileNameToProfile[Name] = &YamlBF;
- if (const Optional<StringRef> CommonName = getLTOCommonName(Name))
+ if (const std::optional<StringRef> CommonName = getLTOCommonName(Name))
LTOCommonNameMap[*CommonName].push_back(&YamlBF);
}
for (auto &BFI : Functions) {
const BinaryFunction &Function = BFI.second;
for (StringRef Name : Function.getNames())
- if (const Optional<StringRef> CommonName = getLTOCommonName(Name))
+ if (const std::optional<StringRef> CommonName = getLTOCommonName(Name))
LTOCommonNameFunctionMap[*CommonName].insert(&Function);
}
}
for (StringRef Name : BF.getNames()) {
if (ProfileNameToProfile.find(Name) != ProfileNameToProfile.end())
return true;
- if (const Optional<StringRef> CommonName = getLTOCommonName(Name)) {
+ if (const std::optional<StringRef> CommonName = getLTOCommonName(Name)) {
if (LTOCommonNameMap.find(*CommonName) != LTOCommonNameMap.end())
return true;
}
continue;
for (StringRef FunctionName : Function.getNames()) {
- const Optional<StringRef> CommonName = getLTOCommonName(FunctionName);
+ const std::optional<StringRef> CommonName =
+ getLTOCommonName(FunctionName);
if (CommonName) {
auto I = LTOCommonNameMap.find(*CommonName);
if (I == LTOCommonNameMap.end())
const double Score = getNormalizedScore(Function, RI1);
LargestBin1.insert(std::make_pair<>(Score, &Function));
for (const StringRef &Name : Function.getNames()) {
- if (Optional<StringRef> OptionalLTOName = getLTOCommonName(Name))
+ if (std::optional<StringRef> OptionalLTOName = getLTOCommonName(Name))
LTOName = *OptionalLTOName;
NameLookup[Name] = &Function;
}
const double Score = getNormalizedScore(Function, RI2);
LargestBin2.insert(std::make_pair<>(Score, &Function));
for (const StringRef &Name : Function.getNames()) {
- if (Optional<StringRef> OptionalLTOName = getLTOCommonName(Name))
+ if (std::optional<StringRef> OptionalLTOName = getLTOCommonName(Name))
LTOName = *OptionalLTOName;
}
if (opts::IgnoreLTOSuffix && !LTOName.empty()) {
bool Match = false;
for (const StringRef &Name : Function2.getNames()) {
auto Iter = NameLookup.find(Name);
- if (Optional<StringRef> OptionalLTOName = getLTOCommonName(Name))
+ if (std::optional<StringRef> OptionalLTOName = getLTOCommonName(Name))
LTOName = *OptionalLTOName;
if (Iter == NameLookup.end())
continue;