Giacomo Vercesi
ee1fdebc4e
Add SegregateStackAccesses to pypeline
2025-12-10 16:16:14 +01:00
Giacomo Vercesi
3cd011c146
Introduce CliftFunctionMixin
...
In equivalence with `LLVMFunctionMixin`, add a mixin that allows
writing a pipe that instead of defining the `runOnFunction` method it
defines the `runOnCliftFunction` which receives both the
`module::Function` and the `FunctionOp`.
2025-12-10 16:16:14 +01:00
Giacomo Vercesi
16e89416c5
Add CliftFunctionContainer
...
Add a container that owns one `mlir::ModuleOp` per function, to be used
in conjunction with the new clift backend.
2025-12-10 16:16:14 +01:00
Giacomo Vercesi
e35f5750de
Add ConvertFunctionsToCABI analysis to pypeline
2025-12-10 16:16:14 +01:00
Giacomo Vercesi
9e8e4cdf85
Add AnalyzeDataLayout analysis to pypeline
2025-12-10 16:16:14 +01:00
Giacomo Vercesi
56ab47bfd2
Outline mergeBackImpl in IRHelpers
...
Move the body of `LLVMContainer::mergeBackImpl` in
`Support/IRHelpers.cpp` under the name `linkFunctionModules`.
2025-12-10 16:16:14 +01:00
Giacomo Vercesi
5a6efb0fa2
Add DetectStackSize analysis to pypeline
2025-12-10 15:05:53 +01:00
Giacomo Vercesi
c1217dcfc3
Add DetectABI analysis to pypeline
2025-12-10 15:05:53 +01:00
Giacomo Vercesi
405733369b
Add ImportWellKnownModelsAnalysis to pypeline
2025-12-10 15:05:53 +01:00
Giacomo Vercesi
47038d46ec
Add ParseBinaryAnalysis to pypeline
2025-12-10 15:05:53 +01:00
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
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
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
Lauri Vasama
21a51af54f
Add immediate radix deduction pass
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
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
adcbdf4524
Add clift::getPrimitiveIntegerType
2025-12-05 15:01:14 +02: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
Pietro Fezzardi
83da56ea7a
TypeSystemPrinter: set top level IDs
...
This uses the "rank=source" feature of graphviz, that allows to select
what are the nodes with mimimal rank in a graph.
We use this to mark all the nodes that represent functions and segments
so that the graph layout is more deterministic and readable across
multiple runs when the input Model is very similar.
2025-11-28 16:05:57 +01:00
Alessandro Di Federico
bce32d9669
Default to --emit-hex-constant-literals-from=4096
2025-11-28 11:21:18 +01:00
Giacomo Vercesi
fb97693df0
Lift: implement invalidate
2025-11-26 16:13:28 +01:00
Giacomo Vercesi
b1b5778822
Add infrastructure for custom invalidation
...
Add infrastructure to pypeline to allow for pipes to provide custom
invalidation, by implementing an `invalidate` function.
2025-11-26 16:13:28 +01:00
Giacomo Vercesi
8cff10e13b
Introduce analyses that manipulate the model
...
Add 4 analyses to the pipebox that allow setting and verifying the model
and its diffs.
2025-11-26 16:13:28 +01:00
Giacomo Vercesi
2f7a055121
pypeline: convert pipe names to kebab-case
2025-11-26 16:13:28 +01:00
Giacomo Vercesi
4a1edec018
get_registry: use name for selected classes
...
Use the `name` class attribute to build the registry when discovering
subclasses of `Pipe`, `Analysis` and `Container`.
2025-11-26 14:59:43 +01:00
Giacomo Vercesi
de75d94597
{Pipe,Analysis}Run: release Python GIL
...
Move out of the `runPipe`/`runAnalysis` functions the logic that
extracts the container from the vector type. This logic is now
delegated to `containerVectorToTuple` which converts the vector type to
a tuple of references. This allows python's `run{Pipe,Analysis}` to
safely call `nanobind::gil_scoped_release` which releases the GIL for
the entire duration of the `runPipe`/`runAnalysis` execution.
2025-11-26 14:59:43 +01:00
Giacomo Vercesi
ca3c5113d9
Add recompile-isolated to pypeline
2025-11-18 17:47:54 +01:00
Giacomo Vercesi
159ca6b965
Add LinkForTranslation to pypeline
2025-11-18 17:47:54 +01:00
Giacomo Vercesi
af4b447f89
Add CompileRootModule to pypeline
2025-11-18 17:47:54 +01:00
Giacomo Vercesi
7462c2daeb
Add LinkSupport to pypeline
2025-11-18 17:47:54 +01:00
Giacomo Vercesi
d5aeb306f6
Add YieldAssembly to pypeline
2025-11-18 17:47:54 +01:00
Giacomo Vercesi
a834f874c9
Add ProcessAssembly to pypeline
2025-11-18 17:47:54 +01:00