3016 Commits

Author SHA1 Message Date
Ivan Krysak 36ce22cd4e STLExtras: change notNull to return a reference 2025-07-23 11:38:51 +02:00
Ivan Krysak fd1ed20852 Ranks: update local variables and goto labels
Then now use corresponding model keys instead of raw names.
2025-07-23 11:38:51 +02:00
Ivan Krysak 554ffa376a model::Function: introduce GotoLabels field 2025-07-23 11:38:51 +02:00
Ivan Krysak 1ebeb8f493 model::Function: introduce LocalVariables field 2025-07-23 11:38:50 +02:00
Ivan Krysak 4e3c6cccd0 Model: introduce LocalIdentifier struct 2025-07-23 11:38:50 +02:00
Ivan Krysak 3c9aa5f4b2 Pipes: pull tryExtractAddress up 2025-07-23 11:38:50 +02:00
Ivan Krysak 8dff23d586 MetaAddress: pull addressesToString up 2025-07-23 11:38:50 +02:00
Ivan Krysak b982ae68d0 NamingConfiguration: add UnnamedGotoLabelPrefix 2025-07-23 11:38:50 +02:00
Ivan Krysak 031c4dfa2f Introduce ptml::CTypeBuilder::getFreeFormComment 2025-07-23 11:38:50 +02:00
Ivan Krysak 04b751dafc TrackingContainer: add a missing Other access
This ensures `operator==` correctly registers the fact that *both*
of the containers were accesses.
2025-07-23 11:38:50 +02:00
Ivan Krysak d11b524f14 TrackingContainer: introduce operator<=> 2025-07-23 11:38:50 +02:00
Ivan Krysak 83a3843d8a SortedVector: introduce operator<=> 2025-07-23 11:38:50 +02:00
Ivan Krysak 96be1a9979 MetaAddress: introduce operator<=> 2025-07-23 11:38:50 +02:00
Ivan Krysak b5337d78da Minor Improvements 2025-07-23 11:38:50 +02:00
Andrea Gussoni c060f07ecd ScopeGraph: add scope-graph-output cl::opt 2025-07-23 11:34:13 +02:00
Andrea Gussoni 1faa781e6a CommandLine: drop pathToStream
Remove `pathToStream` in favour of `llvm::ToolOutputFile`.
2025-07-23 11:34:13 +02:00
Giacomo Vercesi 29d7f2d8a8 artifacts: allow parsing the recompilable archive
Allow the artifacts machinery to parse, via `pycparser`, the
recompilable archive provided by revng via the
`emit-recompilable-archive` artifact.
2025-07-18 09:30:56 +02:00
Lauri Vasama 28550f2f57 Add explicit pointer size support in old backend
When `Configuration.ExplicitTargetPointerSize` is set, the backend uses
explicit pointer type sizes (e.g. `pointer32_t(T)`).
2025-07-17 16:45:03 +02:00
Lauri Vasama 780e774b20 Add Clift legalization pipe 2025-07-17 16:45:03 +02:00
Lauri Vasama 9fda9f955d Add NoMemoryEffect on Clift operations
This allows unused expressions to be automatically pruned during
transforms.
2025-07-17 16:45:03 +02:00
Lauri Vasama 4e17287cfc Add LLVM-to-Clift import 2025-07-17 16:45:03 +02:00
Lauri Vasama b9ce0a87df Add Clift model verification 2025-07-17 16:45:03 +02:00
Lauri Vasama d70c9404f3 Add a helper for LLVM IR lookup by meta-address 2025-07-17 16:45:03 +02:00
Lauri Vasama 8c3d774978 Implement MetaAddress DenseMap support 2025-07-17 16:45:03 +02:00
Lauri Vasama 74588ae684 Rename MLIRFunctionKind to CliftFunction 2025-07-17 16:45:03 +02:00
Lauri Vasama 237d246665 Factor out the default C target implementation
This commit also adds size 16 -> extended integer kind mapping.

While we are hardcoding this for now, some maintenance (as above) is
needed, so it's best to hardcode it only in one place and share that
definition.
2025-07-17 16:45:03 +02:00
Lauri Vasama ee38ac933c Make comparison op assembly syntax more explicit
```
// Old syntax:
// Argument types are !int32_t.
// The boolean result type is implicitly !int32_t.
clift.eq %0, %1 : !int32_t

// New syntax:
// The boolean result type must be specified explicitly.
clift.eq %0, %1 : !int32_t -> !int32_t
```
2025-07-17 16:45:03 +02:00
Lauri Vasama c92f34b409 Add FunctionOp::getCliftReturnType 2025-07-17 16:45:03 +02:00
Lauri Vasama 50a96527cd Add PtrAdd/PtrSub operand helpers 2025-07-17 16:45:03 +02:00
Lauri Vasama fc682383e9 Implement Clift bytecode
Fixes bytecode emission of class types with very large trees of members.
See the new unit test: union-with-large-tree.mlir .
2025-07-17 16:45:03 +02:00
Lauri Vasama d2e83b30a1 Add clift::getPointerType 2025-07-17 16:45:03 +02:00
Lauri Vasama 50c3c8f95a Fix Clift union recursion parsing issue 2025-07-17 16:45:03 +02:00
Giacomo Vercesi 79d20d343b FilePath: fix addExtension
When working with `stdin` and `stdout`, the `addExtension` function
should return std::nullopt, since concatenating files is undesirable.
This fixes a bug where the output of the `StringMap` container would
have the index file appended to it, rendering an invalid tar.
2025-06-27 17:12:18 +02:00
Andrea Gussoni a93b8b7044 RegionCFGTree: introduce soft failure
Soft fail for `inflate`.
2025-06-26 12:02:38 +02:00
Giacomo Vercesi d62b7b6b1a TTG: inline root type in schema
Move the root type inside the schema definition, as it is a property of
it and not of the generator.
2025-06-25 15:40:13 +02:00
Andrea Gussoni 82c66fd4ca BeautifyGHAST: early return failure handling 2025-06-23 12:00:59 +02:00
Andrea Gussoni 6a6db9e00f GenerateAST: introduce soft failure
Soft fail for `createSwitchTile`.
2025-06-23 12:00:59 +02:00
Andrea Gussoni a521b9d760 RegionCFGTree: introduce soft failure
Soft fail for `insertBulkNodes`.
2025-06-20 13:38:05 +02:00
Andrea Gussoni 7550753081 ASTTree: introduce soft failure
Soft fail for `copyASTNodesFrom`.
2025-06-20 10:29:04 +02:00
Andrea Gussoni e2c7404218 RegionCFGTree: introduce soft failure
Soft fail for `purgeIfTrivialDummy`.
2025-06-20 10:15:46 +02:00
Andrea Gussoni 12bf4e7db0 RestructureCFG: fail on unexpected dummy purge
When attempting to simplify away a dummy that simply connects a
Predecessor and a Successor, fail if Predecessor and Successor are
already connected.

In order to handle such failure, we need to decorate a lot of function
on the stack trace in order to be able to propagate the failure code.
2025-06-19 11:36:49 +02:00
Andrea Gussoni da31adc83c ASTTree: clear internal fields on constructor 2025-06-19 09:48:39 +02:00
Andrea Gussoni 333903e86e ScopeGraph: ScopeGraphBuilder const methods 2025-06-12 15:31:38 +02:00
Lauri Vasama 4bf1d8fe99 Remove Clift backend transform and model option 2025-06-04 15:13:47 +02:00
Lauri Vasama 7c9031bd98 Change MLIRContainer to focus on Clift, rename 2025-06-04 15:13:47 +02:00
Lauri Vasama cc94e2d290 Constrain returnable types 2025-06-04 15:13:47 +02:00
Lauri Vasama 047511b1ed Remove Clift break and continue ops 2025-06-04 15:13:47 +02:00
Lauri Vasama 3e065cb23d Remove local and label names 2025-06-04 15:13:47 +02:00
Lauri Vasama fdbc7b57fb Add SwitchOp::getCaseRegions 2025-06-04 15:13:47 +02:00
Lauri Vasama a0ec1305f1 Move ReturnOp type verification to FunctionOp 2025-06-04 15:13:47 +02:00