llir-opt
0.0.1
Low-Level Post-Link Optimiser for OCaml and C
|
7 #include <llvm/Support/Alignment.h>
10 #include "core/func.h"
12 #include "passes/pre_eval/symbolic_value.h"
31 std::optional<size_t> size,
71 std::optional<size_t> size_;
95 bool Accurate =
false;
101 class BucketStorage {
107 void Merge(
const BucketStorage &that);
112 bool StorePrecise(int64_t offset,
const SymbolicValue &value, Type type);
117 const SymbolicValue *end()
const {
return &*buckets_.end(); }
127 bool (BucketStorage::*mutate)(
unsigned,
const SymbolicValue &)
135 bool Accurate =
true;
137 std::vector<SymbolicValue> buckets_;
Definition: symbolic_value.h:24
SymbolicValue LoadImprecise(Type type)
Reads a value from all possible locations in the object.
Definition: symbolic_object.cpp:132
SymbolicObject(ID< SymbolicObject > id, std::optional< size_t > size, llvm::Align align, bool rdonly, bool zero)
Constructs a symbolic object.
Definition: symbolic_object.cpp:26
bool Init(int64_t offset, const SymbolicValue &val, Type type)
Initialises a value inside the object.b.
Definition: symbolic_object.cpp:142
Definition: symbolic_object.h:26
~SymbolicObject()
Cleanup.
Definition: symbolic_object.cpp:67
bool Store(int64_t offset, const SymbolicValue &val, Type type)
Performs a store to an atom inside the object.
Definition: symbolic_object.cpp:152
const SymbolicValue * begin() const
Iterator over buckets.
Definition: symbolic_object.cpp:77
llvm::Align GetAlignment() const
Return the alignment.
Definition: symbolic_object.h:44
Definition: symbolic_frame.h:29
ID< SymbolicObject > GetID() const
Return the ID of the object.
Definition: symbolic_object.h:42
SymbolicValue Load(int64_t offset, Type type)
Performs a load from an atom inside the object.
Definition: symbolic_object.cpp:122
bool StoreImprecise(int64_t offset, const SymbolicValue &val, Type type)
Clobbers the value at an exact location.
Definition: symbolic_object.cpp:173
void Merge(const SymbolicObject &that)
Merges another object into this one.
Definition: symbolic_object.cpp:97
Definition: symbolic_heap.h:21