6#ifndef JLM_LLVM_OPT_ALIAS_ANALYSES_LOCALALIASANALYSIS_HPP
7#define JLM_LLVM_OPT_ALIAS_ANALYSES_LOCALALIASANALYSIS_HPP
13#include <unordered_map>
53 Query(const rvsdg::Output & p1,
size_t s1, const rvsdg::Output & p2,
size_t s2) override;
69 std::optional<int64_t> offset1,
71 std::optional<int64_t> offset2,
86 [[nodiscard]] static
bool
95 [[nodiscard]] static
bool
104 [[nodiscard]] static std::optional<
size_t>
122 [[nodiscard]] static std::optional<
size_t>
123 GetRemainingSize(const rvsdg::Output & basePointer, const std::optional<int64_t> & offsetInBytes);
154 [[nodiscard]] static
size_t
190 [[nodiscard]] static
bool
199 [[nodiscard]] static
bool
static void RemoveTopOriginsWithinTheFirstNBytes(TraceCollection &traces, size_t s, size_t N)
static bool IsOriginalOrigin(const rvsdg::Output &pointer)
~LocalAliasAnalysis() noexcept override
static bool hasOnlyAllocaTopOrigins(const TraceCollection &traceCollection)
bool HasOnlyFullyTraceableTopOrigins(TraceCollection &traces)
AliasQueryResponse Query(const rvsdg::Output &p1, size_t s1, const rvsdg::Output &p2, size_t s2) override
static std::optional< size_t > GetRemainingSize(const rvsdg::Output &basePointer, const std::optional< int64_t > &offsetInBytes)
std::string ToString() const override
static void removeArgumentTopOrigins(TraceCollection &traceCollection)
std::unordered_map< const rvsdg::Output *, bool > IsFullyTraceable_
static bool DoTraceCollectionsOverlap(TraceCollection &tc1, size_t s1, TraceCollection &tc2, size_t s2)
static void RemoveTopOriginsSmallerThanSize(TraceCollection &traces, size_t s)
void setMaxTraceCollectionSize(size_t maxTraceCollectionSize)
static bool HasOnlyOriginalTopOrigins(TraceCollection &traces)
static size_t GetMinimumOffsetFromStart(TraceCollection &traces)
size_t getMaxTraceCollectionSize()
bool IsOriginalOriginFullyTraceable(const rvsdg::Output &pointer)
size_t maxTraceCollectionSize_
static void RemoveTopOriginsWithRemainingSizeBelow(TraceCollection &traces, size_t s)
static AliasQueryResponse QueryOffsets(std::optional< int64_t > offset1, size_t s1, std::optional< int64_t > offset2, size_t s2)
static std::optional< size_t > GetOriginalOriginSize(const rvsdg::Output &pointer)