Jit/hir/alias_class.cpp (38 lines of code) (raw):
// Copyright (c) Facebook, Inc. and its affiliates. (http://www.facebook.com)
#include "Jit/hir/alias_class.h"
#include <fmt/ostream.h>
#include <ostream>
#include <unordered_map>
namespace jit {
namespace hir {
namespace {
auto makeAclsNames() {
std::unordered_map<AliasClass, std::string> map{
#define X(name, ...) {A##name, #name},
HIR_ACLS(X)
#undef X
};
return map;
}
} // namespace
std::string AliasClass::toString() const {
static auto const names = makeAclsNames();
auto it = names.find(*this);
if (it != names.end()) {
return it->second;
}
std::string result = "{";
auto sep = "";
#define X(name) \
if (bits_ & AliasClass::k##name) { \
format_to(result, "{}" #name, sep); \
sep = "|"; \
}
HIR_BASIC_ACLS(X)
#undef X
return result + "}";
}
std::ostream& operator<<(std::ostream& os, const AliasClass& acls) {
return os << acls.toString();
}
} // namespace hir
} // namespace jit