Alessandro Di Federico
aaba2f7d0f
segregate-stack-accesses.yml: adopt --debug-names
2024-06-26 12:21:58 +02:00
Alessandro Di Federico
f231e19a5f
decompilation.yml: remove test duplication
2024-06-26 12:21:58 +02:00
Alessandro Di Federico
a7ec300b16
MLIRContainer::mergeBack: only purge definitions
2024-06-26 12:21:58 +02:00
Alessandro Di Federico
988af25a7d
Adopt UniquedBy* FunctionTags for deduplication
2024-06-26 12:21:58 +02:00
Alessandro Di Federico
398681c5ce
Introduce tests for invalidation
2024-06-25 09:50:38 +02:00
Alessandro Di Federico
e90dd20b69
Introduce revng analyze --save-invalidations
2024-06-20 10:24:51 +02:00
Alessandro Di Federico
3e8764093e
RawFunctionType return type: adopt literal struct
2024-06-20 10:24:51 +02:00
Alessandro Di Federico
71135a56ab
Make Target and friends YAML serializable
2024-06-20 10:24:51 +02:00
Alessandro Di Federico
32e6f3e303
Fix handling of -path version of analysis flags
...
Before this commit, the `*-path` flags required the non-`-path` flag
too.
2024-06-20 10:24:51 +02:00
Alessandro Di Federico
b62bc8df91
s/FunctionMetadata/ControlFlowGraph/g
2024-06-20 10:24:51 +02:00
Alessandro Di Federico
276a6e0efb
s|ControlFlowGraph.h|CFGHelpers.h|g
2024-06-20 10:24:51 +02:00
Alessandro Di Federico
6e49fed965
FunctionMetadata::{ControlFlowGraph,Blocks}
2024-06-20 10:24:51 +02:00
Alessandro Di Federico
f60c1bb4ad
s/TrackGuard/DisableTracking/
2024-06-20 10:24:51 +02:00
Alessandro Di Federico
c3733f293a
s/RevngPasses/FunctionPass/g
2024-06-20 10:24:51 +02:00
Alessandro Di Federico
553d869d03
Drop Pipe::print method
2024-06-20 10:24:51 +02:00
Alessandro Di Federico
148e6b1979
Rename all LLVMContainer arguments
2024-06-20 10:24:51 +02:00
Alessandro Di Federico
036e9282fe
Disable invalidation on const containers
2024-06-20 10:24:51 +02:00
Alessandro Di Federico
d859db08a4
Fix tests
2024-06-20 10:24:51 +02:00
Alessandro Di Federico
bce1d6c0f3
Adopt invalidation along the core pipeline
2024-06-20 10:24:50 +02:00
Alessandro Di Federico
b5f7576573
Rework TupleTreeGenerator tracking
2024-06-20 10:24:50 +02:00
Alessandro Di Federico
f8776ef8b5
Introduce revng tar-to-yaml
2024-06-20 10:24:50 +02:00
Alessandro Di Federico
51292f3d32
Improve --debug-log=pipeline
2024-06-20 10:24:50 +02:00
Alessandro Di Federico
831ed0db91
TaggedFunctionKind: fix tracking-related issues
2024-06-20 10:24:50 +02:00
Alessandro Di Federico
879b48669d
Contract::deduceRequirements: fix Kind-related bug
...
Preserving contracts kinds logic moved targets to source container
instead of preserving them in the original container.
2024-06-20 10:24:50 +02:00
Alessandro Di Federico
d25d53e711
RootAnalyzer: use generic preserved registers
...
Before this commit, when outlining parts of `root` for analysis
purposes, we used to replace calls with a set of instructions clobbering
the set of register *not* preserved by such call, or, in case the
prototype was not available, by the default prototype.
This commit forces the usage of the default prototype.
This trades off precision with accuracy but we get the lift pipe not to
depend on any model::Function prototype.
2024-06-20 10:24:50 +02:00
Alessandro Di Federico
6cff5416d6
InvokeIsolatedFunctions should add IsolatedRoot
...
Before this commit, it was added by `IsolateFunctions` instead.
2024-06-20 10:24:50 +02:00
Alessandro Di Federico
9fce67eee9
Reduce IRBuilder usage in favor of IRBuilderBase
2024-06-20 10:24:50 +02:00
Alessandro Di Federico
7553e2acf8
Introduce UniquedBy{Prototype,Metadata}
...
This commit introduces new tags to specify how LLVMContainer should
deduplicate sets of equivalent functions, typically managed by an
`OpaqueFunctionPool`.
2024-06-20 10:24:50 +02:00
Alessandro Di Federico
a47c6e81dd
FunctionKind::appendAllTargets: disable tracking
2024-06-20 10:24:50 +02:00
Alessandro Di Federico
c3751a8c5a
Introduce Pipe::invalidate
...
This method enables pipes to specify a custom invalidation logic. This
change enables us to supress automatic model tracking in certain parts
and then handle the consequences by hand.
Make sure you read the TODO before using this.
2024-06-20 10:24:50 +02:00
Alessandro Di Federico
3ea5efdc93
Various minor Python improvements
2024-06-20 10:24:49 +02:00
Alessandro Di Federico
a6cf3fbb83
Centralize computation of llvm::Function names
...
This commit introduces a function to obtain the name assigned to a
`llvm::Function` associated to a `model::Function`. This simplifies the
codebase but also enables us to introduce an option to produce
human-friendly names for debugging/testing purposes.
2024-06-20 10:24:49 +02:00
Alessandro Di Federico
3097e94a0d
Enable fetching call site prototype without CFG
...
Before this commit, we used to attach to call site a metadata to trace
back the call site to the CFG (i.e., `FunctionMetadata`).
This led several passes in revng-c to depend on `FunctionMetadata` just
for this.
This commit, attaches to call sites a reference to the prototype itself
(on the `revng.prototype` metadata), breaking many of such dependencies.
2024-06-20 10:24:49 +02:00
Alessandro Di Federico
fd68c25aee
Implement ContainerBase::dump{,ToDisk}
2024-06-20 10:24:49 +02:00
Alessandro Di Federico
b350d12ad2
TTG: spread some optional: true around
2024-06-20 10:24:49 +02:00
Alessandro Di Federico
e44fe36539
Make GCBI::getJTReasons static
2024-06-20 10:24:49 +02:00
Alessandro Di Federico
2925b11f6a
Model: adopt getConst where appropriate
2024-06-20 10:24:49 +02:00
Alessandro Di Federico
7001d96b97
Implement TagsSet::{operator<,operator==}
2024-06-20 10:24:49 +02:00
Alessandro Di Federico
b0d897b87d
Minor changes
2024-06-20 10:24:49 +02:00
Alessandro Di Federico
d07d6c4f1f
Drop leftover Section.h
2024-06-20 10:24:49 +02:00
Massimo Fioravanti
db15f7df9a
Propagate info about inputs and outputs of pipes
...
This comit propagates the deduced info about inputs and outputs of pipes
all the way up to the runner, so that the requested output of a pipe can
be passed to its invocation.
2024-06-20 10:24:49 +02:00
Alessandro Di Federico
0ac71816a6
revng daemon: improve detection of interpreter
...
This ensures we wait for the right process.
2024-06-20 10:24:49 +02:00
Alessandro Di Federico
9a35d6da40
revng graphql: improve error reporting
2024-06-20 10:24:49 +02:00
Massimo Fioravanti
f0244bc689
Target names: handle :
2024-06-20 09:57:36 +02:00
Massimo Fioravanti
f783868dde
Model: adopt tryGet instead of find() != end()
2024-06-20 09:57:36 +02:00
Massimo Fioravanti
43349943a7
Stop serializing the model in the IR
2024-06-20 09:57:36 +02:00
Massimo Fioravanti
7ee8c8000d
Introduce revng pipe
2024-06-20 09:57:36 +02:00
Alessandro Di Federico
33cb4232f4
BinaryImporter: bail out if we have segments
2024-06-19 17:50:51 +02:00
Alessandro Di Federico
5186a58053
s/FunctionMetadata/ControlFlowGraph/
2024-06-18 17:56:24 +02:00
Alessandro Di Federico
a6759b9231
LLVMIRForMLIR: name structs with growing numbers
2024-06-18 17:56:24 +02:00