Massimo Fioravanti
19b2b23ce7
Dropped the steps in favor of begin steps
2022-03-10 13:51:28 +01:00
Massimo Fioravanti
807d9d56ba
Introduce serialization primitives for containers
2022-03-10 13:51:28 +01:00
Massimo Fioravanti
8032142c92
Renamed Pass Name to Type in the yml dsl
2022-03-10 13:51:28 +01:00
Massimo Fioravanti
9b7a81f3f2
Drop: pipeline implicit rank 0
2022-03-10 13:51:28 +01:00
Massimo Fioravanti
c3b8b76d05
Add multistep invalidation test
2022-03-10 13:51:28 +01:00
Filippo Cremonese
09a995ba51
python-model: generate from jsonschema
2022-02-23 18:03:35 +01:00
Ivan Krysak
a122ff0431
Introduce register state deduction unit tests
2022-02-14 13:35:37 +01:00
Alessandro Di Federico
e80d159944
revng-pipline: simplify Kinds.h
2022-02-08 17:44:33 +01:00
Alessandro Di Federico
9788c49529
Fix pipeline test suite names
2022-02-08 17:44:26 +01:00
Massimo Fioravanti
fe9686be03
revng-pipeline: introduce C API
2022-02-08 00:05:03 +01:00
Massimo Fioravanti
98ecd38162
Drop PureLLVMPipe
...
Now LLVM passes can be used directly in an LLVMPipe without specifying a
contract for it.
2022-02-07 22:24:39 +01:00
Alessandro Di Federico
3b7d7c5f7e
Don't use llvm::outs
2022-02-07 22:24:39 +01:00
Alessandro Di Federico
fec5f3537b
s/Granularity/Rank/
2022-02-07 22:24:39 +01:00
Alessandro Di Federico
e2cd7cbcdf
Pipeline: simplify LLVMContainer
2022-02-07 20:11:37 +01:00
Massimo Fioravanti
396095706f
Minor changes to revngPipeline
2022-02-07 20:11:15 +01:00
Alessandro Di Federico
0f084ed620
Minor changes
2022-02-07 16:55:46 +01:00
Alessandro Di Federico
78be0e9268
Explode TupleTree.h
2022-01-31 16:28:26 +01:00
Alessandro Di Federico
7fba073058
Enable testing model diff
2022-01-31 16:28:17 +01:00
Alessandro Di Federico
a353e00ac1
Introduce model passes
2022-01-31 16:28:14 +01:00
Alessandro Di Federico
f14e722c86
Introduce deduplicateEquivalentTypes
2022-01-27 11:51:03 +01:00
Alessandro Di Federico
56536ba231
STLExtras.h: introduce IsTupleLike concept
...
One day we'll need to make it report error messages in a more effective
way.
2022-01-27 11:51:03 +01:00
Alessandro Di Federico
c9d47d4ee7
Drop model::EnumEntry::Aliases
...
They turn out to be problematic to handle in the model and not very
usable in practice.
2022-01-27 11:51:03 +01:00
Alessandro Di Federico
3ab32cd2ef
tuple_tree_generator: make fully standalone
2022-01-21 18:05:51 +01:00
Massimo Fioravanti
70ec456078
Introduce revng-pipeline
2022-01-17 18:17:54 +01:00
Alessandro Di Federico
d19879d4e8
Minor changes
2022-01-17 16:30:42 +01:00
Filippo Cremonese
74217b4fe5
Generate C++ model from YAML definition
...
Model classes are now described by a YAML document, which is used to
generate C++ headers containing classes and all the boilerplate
required for YAML serialization/deserialization, usage in
SortedVectors, etc. See the README in include/revng/Model for more
info.
2022-01-13 14:34:11 +01:00
Filippo Cremonese
fbeee896e1
Rename model::abi -> model::ABI
2022-01-10 10:31:27 +01:00
Alessandro Di Federico
cfb47157b9
clang-tidy: readability-identifier-naming
...
This commit fixes all the non-compliance with our preliminary clang-tidy
configuration, which will be merged soon.
2022-01-07 09:18:05 +01:00
Pietro Fezzardi
a4c9d6c6fd
Allow model::StructType with no fields
...
This is necessary for how we represent the type of the stack frames when
we know about its size but not yet about its fields.
2022-01-05 13:33:52 +01:00
Alessandro Di Federico
4d7a175996
Extract TupleTree
2021-12-22 17:47:54 +01:00
Antonio Frighetto
10f45c593a
Move StackAnalysis to EarlyFunctionAnalysis
2021-12-15 18:03:30 +01:00
Antonio Frighetto
ffd5ac7f57
Drop old StackAnalysis
2021-12-15 18:03:30 +01:00
Alessandro Di Federico
3a3eea0cf5
Introduce support for dynamic functions
2021-10-21 15:01:19 +02:00
Alessandro Di Federico
a023bfa7f5
Introduce ABI handling
2021-10-18 20:44:58 +02:00
Alessandro Di Federico
34ae75c800
model: handle 80 bits floats (12 bytes)
2021-10-18 20:44:58 +02:00
Pietro Fezzardi
3d38451abd
Enable error checking on Model deserialization
...
This commit changes the `TupleTree::deserialize` method to return an
`llvm::ErrorOr<TupleTree>`, enabling users to choose their policies on
error reporting.
2021-09-02 14:42:51 +02:00
Pietro Fezzardi
48f6a60629
Fix callOnPathSteps for KeyedObjectContainer
...
callOnPathSteps was using linear scan search in KeyedObjectContainer.
This commit fixes it for using binary search, dramatically improving
performance in workloads that do lots of lookups.
2021-09-02 14:39:23 +02:00
Ivan Krysak
612461cffa
Enable more explicit edge iteration
...
Add reverse iterator support
2021-09-02 11:09:29 +03:00
Ivan Krysak
509ee3c41a
Disallow label-less mutable edge graphs
2021-09-02 11:09:17 +03:00
Ivan Krysak
009a5ae060
Rework EdgeView to improve code consistency
2021-09-02 11:08:14 +03:00
Ivan Krysak
334cdf9f05
Make iterators and mapping filters consistent
2021-09-02 11:07:39 +03:00
Ivan Krysak
f15e41433f
Make graph testing node type agnostic
2021-09-02 11:04:44 +03:00
Ivan Krysak
c8a60f9d8e
Implement safe node removal
2021-09-02 09:14:20 +03:00
Ivan Krysak
5b60c22feb
Implement the core of the mutable edge node
2021-09-02 09:14:20 +03:00
Ivan Krysak
fbf90f8b17
Implement revng::SmallMap::contains
2021-09-01 16:32:56 +02:00
Alessandro Di Federico
fd30d3de42
Import the model's type system
...
This commit introduces the type system of the model along with several
various other improvements to the model and its users.
* Introduce the type system.
* Introduce possibility to tag certain fields in the model as to be
optional during YAML serialization.
* All the `Name` fields have been replaced in favor of `CustomName` plus
a `name` method that will use `CustomName` if available, or an
automatically generated name otherwise.
* Make TupleTreeReferences behavior more robust: now you either need to
have a valid pointer to `Root` and a `Path` or be default constructed
(`nullptr` for `Root` and an empty `Path`). Any other configuration is
invalid.
* The type system introduces `RawFunctionType`: this superseds the
previous way in which we were specifying arguments and return
values. Users of such information have been updated accordingly.
2021-07-21 18:22:58 +02:00
Alessandro Di Federico
0f8fa271d9
TupleTree: reduce INTROSPECTION responsibilities
...
This commit also introduces support for optional YAML serialization of
fields.
2021-07-21 18:19:45 +02:00
Pietro Fezzardi
6f7de910a6
Enable warning -Wunused-local-typedefs
2021-06-14 23:04:02 +02:00
Pietro Fezzardi
a7a55f974a
Require TupleTreeCompatible concept on TupleTree
2021-06-09 20:13:27 +02:00
Alessandro Di Federico
871931b9cd
Test TupleTreeDiff on Model
...
`TupleTreeDiff` was not being tested.
This commit implements several `operator==` that are required to
successfully instantiate `TupleTreeDiff`.
2021-05-06 15:42:16 +02:00