Ivan Krysak
2dfdff992d
UpcastablePointer: introduce copy helper
2024-06-27 11:05:49 +02:00
Ivan Krysak
efc24dee4b
UpcastablePointer: introduce empty helper
2024-06-27 11:05:49 +02:00
Ivan Krysak
ee238fd473
RCC: allow prettier to print errors
2024-06-27 11:05:49 +02:00
Ivan Krysak
32fd1eed5b
TTG: move classof boilerplate into the template
2024-06-27 11:05:49 +02:00
Ivan Krysak
48ace7c147
TTG: reorder early struct template
...
This heavily improves readability of the generated header.
2024-06-27 11:05:49 +02:00
Ivan Krysak
a85ce02b29
TTG: clean impl.cpp formatting up
2024-06-27 11:05:49 +02:00
Ivan Krysak
37f424da06
TTG: move UpcastableX typedef to the template
2024-06-27 11:05:49 +02:00
Ivan Krysak
6a1018b860
Remove unused linter suppressors
2024-06-27 11:05:48 +02:00
Ivan Krysak
ac587cbb4f
Model: rename Type into TypeDefinition
2024-06-27 11:05:48 +02:00
Ivan Krysak
d613023a53
Model: drop an obsolete assert
2024-06-27 11:05:48 +02:00
Ivan Krysak
26c68b78ea
Model: drop makeTypeWithID
2024-06-27 11:05:48 +02:00
Ivan Krysak
84c8822c37
Model: drop TypedRegister
2024-06-27 11:05:48 +02:00
Ivan Krysak
4676c951a0
ABI: update outdated comments
2024-06-27 11:05:48 +02:00
Ivan Krysak
7ff1a0f487
Model: remove mostly unused Types.h header
2024-06-27 11:05:48 +02:00
Ivan Krysak
ce1f13e715
TTG: fix parseClass argument type
2024-06-27 11:05:48 +02:00
Ivan Krysak
93b5ad6067
TTG: add indirect dependencies to root's late.h
2024-06-27 11:05:48 +02:00
Ivan Krysak
c109d50814
TTG: remove self passthrough
2024-06-27 11:05:48 +02:00
Ivan Krysak
0438a207fc
TTG: improve early struct header formatting
2024-06-27 11:05:48 +02:00
Ivan Krysak
b2959e36df
Minor improvements
2024-06-27 11:05:48 +02:00
Alessandro Di Federico
4523571231
Merge branch 'feature/pipeline-revng-passes'
2024-06-27 10:17:37 +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