Ivan Krysak
e20e65ca9a
Require a description when registering a pass
2022-02-14 13:35:36 +01:00
Ivan Krysak
7369e49eba
Implement "best effort" function type convertion
2022-02-14 13:35:36 +01:00
Ivan Krysak
5c671e8446
Add abi::Trait specialization for s390x ABI
2022-02-14 13:35:36 +01:00
Ivan Krysak
75c00f5112
Add abi::Trait specialization for mips ABI
2022-02-14 13:35:36 +01:00
Ivan Krysak
c9daab2ce4
Add abi::Trait specializations for arm ABIs
2022-02-14 13:35:36 +01:00
Ivan Krysak
4069d547b6
Add abi::Trait specializations for x86 ABIs
2022-02-14 13:35:36 +01:00
Ivan Krysak
756d0f7376
Add abi::Trait specializations for x86_64 ABIs
2022-02-14 13:35:36 +01:00
Ivan Krysak
d30c4c54fb
Introduce trait to describe ABIs
2022-02-14 13:35:36 +01:00
Ivan Krysak
68129c9221
Add model::Binary::DefaultABI field
2022-02-14 13:35:36 +01:00
Ivan Krysak
d108f7f049
Extend model::ABI enumeration
2022-02-14 11:28:36 +01:00
Ivan Krysak
c14567e3d0
Make TupleTree::visitReferences public
2022-02-14 11:28:36 +01:00
Ivan Krysak
fd3e7243c1
Remove an unused parameter from TupleTree::clone
2022-02-14 11:28:36 +01:00
Ivan Krysak
ec625e8533
Define architecture-specific register access
2022-02-14 11:28:36 +01:00
Ivan Krysak
9b7eb76ac4
Introduce enumSwitch
2022-02-14 11:28:36 +01:00
Ivan Krysak
3bb266125c
Add always_true and always_false traits
2022-02-14 10:57:10 +01:00
Ivan Krysak
a21dff02de
Add additional registers to the model
2022-02-14 10:57:00 +01:00
Ivan Krysak
7151c587f9
Prevent TupleTreeReference::isValid() asserts
2022-02-14 10:56:50 +01:00
Ivan Krysak
dfeb437b45
Fix a minor convertible_to concept issue
2022-02-14 10:56:40 +01:00
Alessandro Di Federico
806f076709
Minor changes
2022-02-14 09:39:44 +01:00
Alessandro Di Federico
e80d159944
revng-pipline: simplify Kinds.h
2022-02-08 17:44:33 +01:00
Alessandro Di Federico
fa8061b805
Drop dead Kinds
2022-02-08 17:44:19 +01:00
Alessandro Di Federico
c8026ac401
Minor changes
2022-02-08 17:40:09 +01:00
Massimo Fioravanti
fe9686be03
revng-pipeline: introduce C API
2022-02-08 00:05:03 +01:00
Massimo Fioravanti
a8a8da3bae
Introduce revng pipes
...
This commit imports all the revng pipes (and other support utilities) to
be used with `revng-pipeline`. In particular, the pipes necessary for
binary translations have been introduced.
2022-02-08 00:05:03 +01:00
Massimo Fioravanti
6f0d0c4f9d
CodeGenerator: accept an external model
2022-02-07 22:24:39 +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
91fd04079a
AllPasses.h: include Verify.h
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
a353e00ac1
Introduce model passes
2022-01-31 16:28:14 +01:00
Alessandro Di Federico
3980ee3fad
Introduce model tools
2022-01-31 16:28:14 +01:00
Alessandro Di Federico
29cf330fc8
TupleTreeDiff: use streams
2022-01-31 14:13:25 +01:00
Alessandro Di Federico
5c89a6a858
callOnPathSteps: fix UpcastablePointer handling
...
The version of callOnPathSteps without an actual instance was completely
ignoring the upcasted type of `UpcastablePointer`s. We now fix this by
calling the right template specialization, which we choose by inspecting
the key of the `UpcastablePointer`.
2022-01-31 14:13:25 +01:00
Alessandro Di Federico
c1ec001f46
TupleTreeDiff: dump any object
2022-01-31 14:13:25 +01:00
Alessandro Di Federico
b3d6c721ad
Introduce purgeUnnamedAndUnreachableTypes
2022-01-27 11:51:03 +01:00
Alessandro Di Federico
f3634e165f
Introduce model::Type::localCompare
2022-01-27 11:51:03 +01:00
Alessandro Di Federico
74a7496020
deduplicateNames -> promoteOriginalName
...
This commit switches from `deduplicateNames`, which changed certain
`CustomName` values, to `promoteOriginalName`, which updates empty
`CustomName` using non-ambiguous versions of `OriginalName`.
2022-01-27 11:51:03 +01:00
Alessandro Di Federico
863652f480
Introduce OriginalName in the type system
...
The goal of `OriginalName` is to keep track of the original name of a
symbol upon import.
In future, this will also be used to promote it to `CustomName`.
2022-01-27 11:51:03 +01:00
Alessandro Di Federico
8d22c5205f
Push CustomName to model::Type
...
Before this commit `CustomName` was in each inheritor, except for
`model::PrimitiveType`.
2022-01-27 11:51:03 +01:00
Alessandro Di Federico
54fcc1d7fe
struct_impl.cpp.tpl: include headers in any case
2022-01-27 11:51:03 +01:00
Alessandro Di Federico
48565ee905
Move skip to STLExtras.h
...
It has nothing to do with IR.
2022-01-27 11:51:03 +01:00
Alessandro Di Federico
09054e637a
Introduce TupleTree::replaceReferences
2022-01-27 11:51:03 +01:00
Alessandro Di Federico
b31e7b1f5e
Introduce model::Type::edges()
...
This makes building a graph for the type system very easy.
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
80ed065206
model::Type: move makeTypeWithID to .cpp
...
It needs to see the full declaration of all concrete types.
2022-01-27 11:51:03 +01:00
Alessandro Di Federico
4f29a70df8
UpcastablePointer.h: pointee: skip over const
2022-01-27 11:51:03 +01:00