53 const rvsdg::Output & p1,
55 const rvsdg::Output & p2,
58 const auto firstResponse = First_.
Query(p1, s1, p2, s2);
59 if (firstResponse == MayAlias)
60 return Second_.Query(p1, s1, p2, s2);
76 return IsOrContains<PointerType>(*value.
Type());
virtual std::string ToString() const =0
virtual ~AliasAnalysis() noexcept
std::string ToString() const override
AliasQueryResponse Query(const rvsdg::Output &p1, size_t s1, const rvsdg::Output &p2, size_t s2) override
ChainedAliasAnalysis(AliasAnalysis &first, AliasAnalysis &second)
~ChainedAliasAnalysis() noexcept override
const std::shared_ptr< const rvsdg::Type > & Type() const noexcept
#define JLM_UNREACHABLE(msg)
static bool AreAliasResponsesCompatible(AliasAnalysis::AliasQueryResponse a, AliasAnalysis::AliasQueryResponse b)
bool IsPointerCompatible(const rvsdg::Output &value)
static std::string strfmt(Args... args)