Pietro Fezzardi
8b2e3a70df
ModelTypeNames: annotate stack args with STACK
2023-07-26 10:01:27 +02:00
Pietro Fezzardi
4bbac8220b
PTMLCBuilder: improve const-correctness of methods
2023-07-26 10:01:27 +02:00
Djordje Todorovic
262e579128
ModelToHeader: annotation for enum underlying type
2023-07-25 12:03:57 +02:00
Djordje Todorovic
5c0167f792
Add ImportModelFromC Analysis
...
This analysis will be used for the following features:
1) Edit Type in the Model
2) Edit Function Prototype in the Model
3) Add Type to the Model
It takes C code as an input, parses it and produces a Model
type that represents the C type.
2023-07-24 11:51:47 +02:00
Djordje Todorovic
60ebfa950d
VerifyHelper: Remember the reason of fail
...
In some cases we want to know what was the reason of some error
without crashing the revng.
2023-07-24 09:22:07 +02:00
Djordje Todorovic
0e176f3147
Support for uint64_t in pipeline analyses options
2023-07-24 09:22:07 +02:00
Djordje Todorovic
e6b128c17b
ModelToHeader: Print annotation __attributes__
...
This will be useful for `edit/add type` feature,
since we will be able to specify which ABI describes
a function, from the source code written in C.
2023-07-24 09:17:08 +02:00
Ivan Krysak
ed4efb0bd9
yield::ptml: add functionComment function
2023-07-21 17:25:24 +02:00
Ivan Krysak
18204ccb9f
yield::ptml: add comment function
...
This is a generic way to format an arbitrary type with `Comment`
field as a comment and emit it using PTML.
2023-07-21 17:25:24 +02:00
Ivan Krysak
4654e4ef74
Ranks: introduce ranks for function arguments
2023-07-21 17:25:24 +02:00
Ivan Krysak
888b083248
Model: introduce edit path helpers for comments
2023-07-21 17:25:24 +02:00
Ivan Krysak
5c31405e63
Model: rework edit path helpers from the ground up
2023-07-21 17:25:24 +02:00
Ivan Krysak
0c8a5aaffb
Model: move edit path helpers in from PTML
2023-07-21 17:25:24 +02:00
Ivan Krysak
8fb21693cc
CompileTime: improve documentation
2023-07-21 17:25:24 +02:00
Ivan Krysak
a012c752e2
CompileTime: introduce selection helper template
2023-07-21 17:25:24 +02:00
Ivan Krysak
b2506d8f4b
STLExtras: separate compile time helpers
2023-07-21 17:25:24 +02:00
Ivan Krysak
70a5c8edd0
Model: make metadata utilities more generic
2023-07-21 17:25:24 +02:00
Ivan Krysak
560ed4f55e
Model: add ReturnValueComment field to functions
2023-07-21 17:25:24 +02:00
Ivan Krysak
485ef34a12
Model: add Comment field all across the board
2023-07-21 17:25:24 +02:00
Ivan Krysak
8a9b253314
Model: clean type constructors up
2023-07-21 17:25:24 +02:00
Ivan Krysak
1e9e38548d
Model: make register name check stricter
2023-07-21 17:25:24 +02:00
Ivan Krysak
bc0eebaad1
Model: enforce consistent name fields
2023-07-21 17:25:24 +02:00
Ivan Krysak
4a32781868
Backend: emit function comment
2023-07-21 04:58:51 +00:00
Ivan Krysak
11f07c6708
TypeNames: emit comments when outputting types
2023-07-21 04:58:50 +00:00
Ivan Krysak
e0b956b1c2
Model: rework edit path helpers from the ground up
2023-07-21 04:58:50 +00:00
Kacper Kołodziej
b05a56e2da
Move isMemory to IRHelpers.h
2023-07-20 18:09:48 +02:00
Kacper Kołodziej
75ed8f7788
Add WrittenRegisters set to FunctionSummary
...
WrittenRegisters will be used in propagating prototypes to wrappers
functionality to check if function writes to arguments or stack pointer.
2023-07-20 18:09:48 +02:00
Andrea Gussoni
42f74ad998
RestructureCFG: use nodesBetween helper
...
Use the `nodesBetween` helper provided by the `GraphAlgorithms` header
instead of the custom `findReachableNodes` implementation.
2023-07-19 16:31:48 +02:00
Andrea Gussoni
ac6139bc0f
clift: import mlir::clift dialect
2023-07-07 17:48:13 +02:00
Andrea Gussoni
c8871fc508
GraphAlgorithms: drop old nodesBetween
...
We now switch to the `llvm::df_iterator` based `nodesBetween`
implementation.
This new implementation makes use of the idiomatic way of extending the
DFS implementation provided by LLVM, instead of rolling our custom
implementation for the `nodesBetween` algorithm.
2023-07-07 15:02:08 +02:00
Andrea Gussoni
f7db37e990
SetOperations: new header with useful set helpers
2023-07-07 15:02:08 +02:00
Andrea Gussoni
1a0c429ef9
GraphAlgorithms: introduce extended DFS algorithms
...
We improve the `getBackedges` and `nodesBetween` helper functions that
can be used for backedge discovery and computation of all the nodes
reachable on all the paths defined between two nodes in a graph.
We build upon the `llvm::df_iterator` function, by customizing the visit
stack to perform the desired visits.
2023-07-07 15:02:08 +02:00
Andrea Gussoni
a613b873e8
GraphAlgorithms: introduce isDAG verifier helper
2023-07-07 13:33:30 +02:00
Ivan Krysak
b0dcc3d9ee
Formatting: forbid clang format off
2023-07-05 14:33:06 +02:00
Ivan Krysak
ce6d9a6dbf
Formatting: forbid \brief
2023-07-05 14:33:03 +02:00
Ivan Krysak
fe0531868c
Use Container::contains() where appropriate
2023-07-05 06:07:09 +00:00
Ivan Krysak
888e5371eb
Formatting: change PenaltyReturnTypeOnItsOwnLine
...
The new value is 21.
2023-07-05 06:06:07 +00:00
Ivan Krysak
3c584cfabc
Formatting: set AllowShortEnumsOnASingleLine
...
The new value is `false`.
2023-07-05 06:05:04 +00:00
Ivan Krysak
ee0dc1866d
Forbid clang format off
2023-07-03 15:23:10 +00:00
Ivan Krysak
9f1d9fd5d0
Use Container::contains() where appropriate
2023-07-02 15:06:11 +00:00
Ivan Krysak
5779cd878d
KOCs: make more STL-like
...
This adds a couple of newer methods missing from these templates.
2023-07-02 15:06:11 +00:00
Ivan Krysak
4ab4d85ead
STLExtras: remove incomplete iterator concepts
2023-07-02 15:06:11 +00:00
Ivan Krysak
690df84eca
Concepts: prefer non-strict SpecializationOf
...
Not every case can benefit from extra liniency, so they were manually
reviewed on a case by case basis.
Additionally, this drops a couple of "this should be a non-strict
specialization" commits, because of a bug with clang
(see the GenericGraph concepts rework commit for more details) as
to avoid confusion (we wouldn't want anyone trying to solve these
"todo"s) until the clang struct type deduction is fixed. Especially
considering that there are currently no cases where these softer
versions would be beneficial (we never inherit from templates in
question).
2023-07-02 15:06:11 +00:00
Ivan Krysak
37b8f80bf1
Concepts: introduce SpecializationOf
...
It was not available earlier because it required clang-13+
2023-07-02 17:05:52 +02:00
Ivan Krysak
b927e26f94
Drop concepts provided by the standard library
...
We needed these because our libc++ version didn't provide them. Now that
that's no longer the case, they can be safely dropped.
2023-07-02 13:20:49 +02:00
Ivan Krysak
a123ec2c35
Remove clang-format off around concepts
...
Now that clang-format no longer breaks anything involving a concept or
a requires clause on sight, these are no longer necessary
2023-07-02 13:20:49 +02:00
Ivan Krysak
bc98e0079f
Formatting: change PenaltyReturnTypeOnItsOwnLine
...
The new value is 21.
2023-07-02 13:20:49 +02:00
Ivan Krysak
01b4ec36c9
Formatting: set AllowShortEnumsOnASingleLine
...
The new value is `false`.
2023-07-02 13:15:08 +02:00
Ivan Krysak
c523167302
Formatting: enforce access modifier whitespaces
2023-07-02 13:09:52 +02:00
Ivan Krysak
7ed14ca65c
Minor improvements
2023-07-02 11:06:55 +00:00