45 std::shared_ptr<AliasAnalysis> first,
46 std::shared_ptr<AliasAnalysis> second)
47 : First_(std::move(first)),
48 Second_(std::move(second))
55 const rvsdg::Output & p1,
57 const rvsdg::Output & p2,
60 const auto firstResponse = First_->
Query(p1, s1, p2, s2);
61 if (firstResponse == MayAlias)
62 return Second_->Query(p1, s1, p2, s2);
78 return IsOrContains<PointerType>(*value.
Type());
virtual ~AliasAnalysis() noexcept
std::shared_ptr< AliasAnalysis > First_
std::string ToString() const override
std::shared_ptr< AliasAnalysis > Second_
AliasQueryResponse Query(const rvsdg::Output &p1, size_t s1, const rvsdg::Output &p2, size_t s2) override
ChainedAliasAnalysis(std::shared_ptr< AliasAnalysis > first, std::shared_ptr< 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)