Commit Graph

488 Commits

Author SHA1 Message Date
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