Commit Graph

7232 Commits

Author SHA1 Message Date
Andrea Gussoni f6b1772bbd EmitFieldAccesses: add const-qualified test 2026-04-14 09:50:48 +02:00
Andrea Gussoni e0a9f4f484 EmitFieldAccesses: ignore qualifiers on Types 2026-04-14 09:24:48 +02:00
Pietro Fezzardi 715a2e54b0 IndentingEmitter: initialize IndentationString 2026-04-13 11:39:55 +02:00
Pietro Fezzardi fa5b9c99c2 Merge branch 'feature/prepare-sts-alias-analysis' 2026-04-10 16:06:02 +02:00
Pietro Fezzardi e399f381ea CommonTypeMethods: add getters for function types 2026-04-10 15:27:24 +02:00
Pietro Fezzardi 4735dfb460 Fix model-migration.yml: bash negation 2026-04-10 15:27:24 +02:00
Pietro Fezzardi 762e3e9def Better RecursivelyDeleteTriviallyDeadInstructions 2026-04-10 15:27:24 +02:00
Pietro Fezzardi 74e3a6873e BeautifyGHAST: use mayHaveSideEffects() method 2026-04-10 15:27:24 +02:00
Pietro Fezzardi 6e3afe097b PromoteCSVs: drop unused Initializers member 2026-04-10 15:27:24 +02:00
Pietro Fezzardi 23bd3f6c46 ExitSSA: don't declare to preserve the CFG 2026-04-10 15:27:24 +02:00
Pietro Fezzardi cc441ccd5c ExitSSA: fix insertion point past PHIs
Before this commit, the insertion point for load instructions was being
set before a PHINode, causing the IR to temporarily fail verification.
The effect of this logic bug did not propagate outside the pass, because
all PHINodes are removed at the end of the pass, but it made debugging
harder.

This commit fixes the problem by always setting the insert point after
all the PHINodes.
2026-04-10 15:27:24 +02:00
Pietro Fezzardi df5139027c Add -fno-strict-aliasing to compile-flags.cfg 2026-04-10 15:27:24 +02:00
Pietro Fezzardi 7dce4fba42 Improve documentation of compile-flags.cfg 2026-04-10 15:27:24 +02:00
Pietro Fezzardi 59f91dcfc0 MakeModelGEP: drop unnecessary includes 2026-04-10 15:27:24 +02:00
Alessandro Di Federico d440e20a9a Merge branch 'feature/pypeline-integrate-scripting' 2026-04-10 11:45:25 +02:00
Giacomo Vercesi a8e13e4ee7 docs: fix
Fix the docs so that `revng test-docs` passes. Rework the
`model-from-scrach.md` to use the new pipeline.
2026-04-10 11:45:13 +02:00
Giacomo Vercesi aa28975c3f LocalStorageProvider: prune on startup
Add two situations where the cache is pruned on startup, removing all
the cached objects from storage:
1. the version field does not match the current one
2. the model has been changed out of band

The second one is very important as it allows to use the revng2 CLI
while editing the model manually on disk.
2026-04-10 11:45:13 +02:00
Giacomo Vercesi e5ca09e0f3 pypeline-storage: drop revng_ prefix
Drop the `revng_` prefix for the version field.
2026-04-10 11:45:12 +02:00
Giacomo Vercesi 0a18cb94f5 Cleanup revng.support.artifacts
Remove a few `Artifact` classes from `revng.support.artifact`. These
were needed to handle the idiosyncrasies of the legacy pipeline. Some of
the logic has been reworked into the ptml code.
2026-04-10 11:45:12 +02:00
Giacomo Vercesi 96f2ad60b4 Fix scripting tests 2026-04-10 11:45:12 +02:00
Giacomo Vercesi 3a5dc835de revng.project: port to pypeline
Convert `revng.project` to use the `revng2` command-line and the `revng
project daemon` server instead of the legacy ones.
2026-04-10 11:45:12 +02:00
Giacomo Vercesi 90e8cce41e model: rework python mixin infrastructure
Rework the python mixin infrastructure for the model. Mixins are now
specified explicitly instead of using the `ast` module. The mixins are
loaded relative to the generated python file, this allows to have two
models: `revng.model` and `revng.project.model`. The latter is augmented
via mixins to have project-specific facilities such as `get_artifact`
and artifact accessors.
2026-04-10 11:45:12 +02:00
Giacomo Vercesi a91d87315a pypeline daemon: add /status endpoint
Add a `/status` endpoint to the daemon that allows verifying that the
daemon is up.
2026-04-10 11:45:12 +02:00
Giacomo Vercesi f626dece53 Add revng2 project dump-pipeline
Add the `revng2 project dump-pipeline` command which allows emitting the
pipeline description from the command-line.
2026-04-10 11:45:12 +02:00
Giacomo Vercesi 18e3501731 pypeline: implement proper config parsing
Overhaul the pipeline configuration logic by collapsing all dynamic
configuration options, both for analyses and pipes into a single
dictionary. Change all the interfaces so that there is no longer
distinction between the configuration of an analysis and of pipes.
Expose these options to the command line via `--{name}-configuration`
options for each pipe/analysis that is applicable to the command-line
invocation.
2026-04-10 11:45:12 +02:00
Giacomo Vercesi ee7ce2d9a3 revng2 quick artifact: use subcommands
Make each artifact a subcommand of `revng2 quick artifact` so that it
behaves the same way as `revng2 project artifact`.
2026-04-10 11:45:12 +02:00
Giacomo Vercesi 9fd3077081 pype: adopt option group for wrappers
Group all the wrapper options (`--lldb`, `--gdb`, etc.) in an option
group, so that they are rendered in an indented section.
2026-04-10 11:45:12 +02:00
Giacomo Vercesi d41f7bcd6e LocalStorageProvider: handle OSErrors
Ignore `OSError`s in `LocalStorageProvider` when rebuilding the list of
files for a given hash, since those paths might have become inaccessible
in the meantime.
2026-04-10 11:45:12 +02:00
Giacomo Vercesi 2afcb4ec67 pype: improve output on wider terminals
Click clamps the output of its help to 80 columns, this makes reading
the help on wider terminals quite annoying. Change the formatter class
used to allow better help output on wider terminals.
2026-04-10 11:45:12 +02:00
Giacomo Vercesi f0890e6617 revng.support.to_bytes: handle empty files
`mmap` throws an error when opening empty files, add code to check this
situation and return a zero-length byte string.
2026-04-10 11:45:12 +02:00
Pietro Fezzardi 65a1a23b18 Merge branch 'feature/clift-comment-emission' 2026-04-10 09:01:07 +02:00
Lauri Vasama d813581ae4 Add DoxygenEmitter documentation 2026-04-09 18:37:46 +03:00
Lauri Vasama c18164c25d Simplify IndentingEmitter; make configurable 2026-04-09 18:37:46 +03:00
Lauri Vasama 79a4fbc808 Fix DoxygenEmitter line prefix emission 2026-04-09 18:37:46 +03:00
Lauri Vasama cacaa9fff1 Fix CTokenEmitter::CommentEmitter newlines 2026-04-09 18:37:46 +03:00
Lauri Vasama 9c76e1219f Add ADT/LineRange.h 2026-04-09 18:37:46 +03:00
Pietro Fezzardi 1527bc5b67 Merge branch 'feature/clift-dialect-changes' 2026-04-08 17:32:11 +02:00
Lauri Vasama 553c740e2d Remove pointers to array in model type import
Pointers to array of T are now converted to pointers to T.
2026-04-08 12:32:18 +03:00
Lauri Vasama 8085a1e8e9 Improve integer literal emission 2026-04-08 12:31:45 +03:00
Lauri Vasama 4cadcafa2c Move operand constraints from C++ to tablegen 2026-04-08 12:30:31 +03:00
Lauri Vasama 0e7703e312 CBackend null pointer constant 2026-04-08 12:29:58 +03:00
Lauri Vasama d35e54627c Add Clift ValueType interface
Value types is the set of non-array object types. These types are
assignable, can be used as function parameters, and as return types
(along with void), and in other scenarios where the type must have usual
value-like behaviour with no weirdness (such as array decay).
2026-04-08 12:28:45 +03:00
Lauri Vasama 80731d1a10 Migrate users to new Clift type casts 2026-04-08 12:27:32 +03:00
Lauri Vasama fb3cdbdf38 Rename ValueType to AddressableType 2026-04-08 12:26:18 +03:00
Lauri Vasama 29c935ac90 Replace Clift type category helpers with casts 2026-04-08 12:25:04 +03:00
Lauri Vasama ecaec9b2f1 Add typedef-unwrapping Clift type casts
* `clift::unwrapped_isa`
* `clift::unwrapped_isa_and_present`
* `clift::unwrapped_cast`
* `clift::unwrapped_cast_if_present`
* `clift::unwrapped_dyn_cast`
* `clift::unwrapped_dyn_cast_if_present`

These casts first unwrap typedefs and then behave equivalently to their
usual LLVM counterparts.
2026-04-08 12:23:49 +03:00
Lauri Vasama db2b57e867 Add Clift ObjectType type interface 2026-04-08 12:22:33 +03:00
Lauri Vasama 92ad229ff0 Move BytecodeClassAttr into a separate file 2026-04-08 12:21:16 +03:00
Lauri Vasama 9ba90e9b81 Replace ValueType with mlir::Type where applicable
`mlir::Type` is now used as the default C++ type for representing all
MLIR types, even when `ValueType` would be a valid constraint, unless
doing so provides a clear benefit in that specific context.
2026-04-08 12:20:00 +03:00
Lauri Vasama f9a4cb6384 Split up clift::dealias
* `unwrapTypedefs` matches `dealias(T, /*IgnoreQualifiers=*/true)`.
* `collapseTypedefs` matches `dealias(T)`.
2026-04-08 12:18:42 +03:00