Giacomo Vercesi
e4e259df3c
Add MakeSegmentRef to pypeline
2025-12-10 15:05:53 +01:00
Giacomo Vercesi
3e37058899
Add LegacySegregateStackAccesses to pypeline
2025-12-10 15:05:53 +01:00
Giacomo Vercesi
d664a59827
Add detect-stack-size to pypeline
2025-12-10 15:05:53 +01:00
Giacomo Vercesi
3a08f8713b
Add SimplifySwitch to pypeline
2025-12-10 15:05:53 +01:00
Giacomo Vercesi
c0e8c8fa09
Add PromoteStackPointer to pypeline
2025-12-10 15:05:53 +01:00
Giacomo Vercesi
10cc709098
Add InjectStackSizeProbesAtCallSites to pypeline
2025-12-10 15:05:53 +01:00
Giacomo Vercesi
0bc74e0234
Add PromoteInitCSVToUndef to pypeline
2025-12-10 15:05:53 +01:00
Giacomo Vercesi
e13e5add06
Add RemoveLiftingArtifacts to pypeline
2025-12-10 15:05:53 +01:00
Giacomo Vercesi
35ef98e83f
LLVMPipe: make passes key lowercase
...
Since the rest of the pypeline yaml file is lowercase, convert the
`Passes` key of the configuration used by `pure-llvm-passes-*` to
lowercase.
2025-12-10 15:05:53 +01:00
Giacomo Vercesi
19f67c8223
Introduce LLVMFunctionMixin
...
Add a mixin class for piperuns that work on an LLVM module and need
both the model function and the `llvm::Function`. Pipe that inherit this
mixin will receive both the model and LLVM function in the
`runOnLLVMFunction` method.
2025-12-10 15:05:53 +01:00
Giacomo Vercesi
db94859401
Registrars: add Run suffix for piperuns
...
Change the `Register.*Pipe` functions to end in `Run` if the template
argument should be a pipe run. Also change the concepts `Is.*Pipe` to
also have the `Run` suffix if applicable.
2025-12-10 15:05:53 +01:00
Giacomo Vercesi
296eb9a76f
Make SingleOutputPipe uniform to other piperuns
...
Make the interface required by `SingleOutputPipe` similar to other
piperuns by requiring a constructor, the use of `PipeRunArgument`s and
the implementation of a non-static `run` function.
2025-12-10 15:05:53 +01:00
Giacomo Vercesi
532a4a19f6
Drop LLVMFunctionPassPipe
...
Drop the `LLVMFunctionPassPipe` as it will not be used in the pipeline
by any pipe and its infrastructure is not needed.
2025-12-10 15:05:53 +01:00
Giacomo Vercesi
1da6e49b36
ObjectDependenciesTracker: also stop tracking
...
Call `revng::Tracking::stop` in the destructor of
`ObjectDependenciesTracker` to avoid tracking happening after the object
is destroyed.
2025-12-10 15:05:53 +01:00
Giacomo Vercesi
fe73243cc5
pypeline-cli: fix autocomplete with pipebox init
...
Make it so the pipebox is initialized early if the pypeline CLI is in
autocomplete mode, otherwise some pipes might break.
2025-12-10 15:05:53 +01:00
Giacomo Vercesi
afcdea4381
pypeline: also consider image/svg as text
2025-12-10 15:05:53 +01:00
Giacomo Vercesi
cd3cd5c4d1
pypeline: fix Request.check
...
The function `Request.check` did not work properly due to
`Container.contains_all` performing the check with the operands swapped.
Fix the call and improve the body of `ObjectSet.issubset`.
Also improve the error message, highlighting the missing objects.
2025-12-10 15:05:53 +01:00
Giacomo Vercesi
fdb0b4f025
revng2 project analyze: fix analysis arguments
...
When setting the variable names for the analysis' configuration,
sanitize the analysis' name, as it might contain dashes and other
undesirable characters.
2025-12-10 15:05:53 +01:00
Giacomo Vercesi
3556e9bfa7
Pipebox: reorder link_libraries
2025-12-10 15:05:53 +01:00
Giacomo Vercesi
27f2407a36
pypeline-comparison: omit metadata in lift
...
Do not compare metadata when comparing `lift` as the output is still
non-deterministic in some instances.
2025-12-10 15:05:53 +01:00
Pietro Fezzardi
23292173cb
Merge branch 'feature/clift-optimization'
2025-12-09 10:39:20 +01:00
Lauri Vasama
21a51af54f
Add immediate radix deduction pass
2025-12-05 19:53:41 +02:00
Lauri Vasama
a882b245ba
Add backend support for immediate radix attributes
2025-12-05 19:53:41 +02:00
Lauri Vasama
33450e9306
Add terminal-branch-complement-hoisting pass
2025-12-05 19:53:41 +02:00
Lauri Vasama
73d7a77442
Add expression rewrite pass
2025-12-05 19:53:41 +02:00
Lauri Vasama
0f04483517
Add statement rewrite pass
2025-12-05 19:53:41 +02:00
Lauri Vasama
448276915e
Add label-merging pass
2025-12-05 19:53:41 +02:00
Lauri Vasama
f2911da190
Add trivial-return-elimination pass
2025-12-05 19:53:41 +02:00
Lauri Vasama
40e1ad5d23
Add -Wno-array-bounds for check-decompiled-c
2025-12-05 19:53:41 +02:00
Lauri Vasama
d4114ae188
Implement bit_cast in Clift backend
2025-12-05 19:53:41 +02:00
Lauri Vasama
58216deafd
Add RewriteHelpers.h
...
Contains helpers for statement rewriting.
2025-12-05 19:53:41 +02:00
Lauri Vasama
c835baf65a
Add PatternRewriter.h
...
Contains APIs from upstream LLVM that are not yet present in the current
version, as well as helpers not present in upstream.
See upstream commit 42c31d8302ff8f716601df9c276a5cd9ace6b158.
2025-12-05 19:53:41 +02:00
Lauri Vasama
ba945442d6
Add BlockStatementOp
2025-12-05 15:01:14 +02:00
Lauri Vasama
8599cc0c1d
Add StatementRegionOpInterface
...
This interface describes any operation containing statement regions.
2025-12-05 15:01:14 +02:00
Lauri Vasama
332fe51aa0
Fix pointer arithmetic legalization
...
Resizes the integer types involved in pointer arithmetic along with the
pointer types.
2025-12-05 15:01:14 +02:00
Lauri Vasama
adcbdf4524
Add clift::getPrimitiveIntegerType
2025-12-05 15:01:14 +02:00
Lauri Vasama
b43df10c4b
Improve Clift legalization
...
Casts are no longer emitted for immediates in boolean-tested contexts.
2025-12-05 15:01:14 +02:00
Alessandro Di Federico
5d9a9fad02
Merge branch 'feature/pre-drop-old-backend'
2025-12-03 18:02:21 +01:00
Alessandro Di Federico
5045506ce0
model-migration: use no-op analysis
2025-12-03 17:59:19 +01:00
Alessandro Di Federico
33e4957bb9
RemoveExtractValues: do not link to TypeNames
2025-12-03 17:59:19 +01:00
Alessandro Di Federico
4c833e6227
emit-c: add peephole-opt-* and ternary-reduction
2025-12-03 17:59:19 +01:00
Alessandro Di Federico
f435443630
tests: adopt emit-c over decompile
2025-12-03 17:59:19 +01:00
Alessandro Di Federico
aa4120e1e2
tests/scripting.py: drop decompile, use emit-c
2025-12-03 17:59:19 +01:00
Alessandro Di Federico
54cbadfc0f
ImportModelNamesPipe: use prototypeOrDefault
2025-12-03 17:59:19 +01:00
Alessandro Di Federico
f281a12088
LocalVariableBuilder: less debug info checks
2025-12-03 17:59:19 +01:00
Alessandro Di Federico
1dff54ba60
Make new backend independent from the old one
2025-12-03 17:59:18 +01:00
Alessandro Di Federico
896bb8d523
Drop SegregateStackAccessesPass.h
2025-12-03 17:59:18 +01:00
Alessandro Di Federico
8f19f5292c
Minor changes
2025-12-03 17:59:18 +01:00
Andrea Gussoni
646ad4f97a
GenericRegion: improve Head election
...
The `Head` election now works in a bottom-up fashion (child regions are
processed before the parent ones), and ensures that the `Head` election
process is coherent across multiple nested regions.
This means that:
1) The late entries are coherent between the nested regions. If a node
is selected as a late entry for a region, the parent region must
follow this decision too.
2) If a node which is a `Head` candidate for a parent region, is
selected as the `Head` for a child region, the same choice must be
performed for the parent region too.
2025-12-03 16:37:17 +01:00
Pietro Fezzardi
2397b82bcd
MakeSegmentRef: fix handling of constexpr casts
2025-11-28 16:14:02 +01:00