6#ifndef JLM_LLVM_IR_TRACE_HPP
7#define JLM_LLVM_IR_TRACE_HPP
98 [[nodiscard]] std::optional<int64_t>
102 std::optional<std::vector<GetElementPtrOperation::Constant>>
gepConstants{};
115[[nodiscard]] TracedPointerOrigin
135 std::unordered_map<const rvsdg::Output *, std::optional<int64_t>>
TopOrigins{};
152 TracedPointerOrigin p,
153 TraceCollection & traceCollection,
154 size_t maxTraceCollectionSize);
bool traceThroughLoadedStates_
bool isTracingThroughLoadedStates()
void setTraceThroughLoadedStates(bool traceThroughLoadedStates)
rvsdg::Output & traceStep(rvsdg::Output &output, const rvsdg::Region *withinRegion) override
Represent acyclic RVSDG subgraphs.
Global memory state passed between functions.
bool TraceAllPointerOrigins(TracedPointerOrigin p, TraceCollection &traceCollection, const size_t maxTraceCollectionSize)
rvsdg::Output & traceOutput(rvsdg::Output &output, const rvsdg::Region *withinRegion)
TracedPointerOrigin TracePointerOriginPrecise(const rvsdg::Output &p)
std::optional< int64_t > tryGetConstantSignedInteger(const rvsdg::Output &output)
std::unordered_map< const rvsdg::Output *, std::optional< int64_t > > TopOrigins
std::unordered_map< const rvsdg::Output *, std::optional< int64_t > > AllTracedOutputs
std::optional< std::vector< GetElementPtrOperation::Constant > > gepConstants
const rvsdg::Output * BasePointer
std::optional< int64_t > getOffsetInBytes() const noexcept