Commit Graph

6834 Commits

Author SHA1 Message Date
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