Commit Graph

2366 Commits

Author SHA1 Message Date
Massimo Fioravanti 370b081c0e Moved kinds to kinds namespace 2022-08-25 17:09:15 +02:00
Alessandro Di Federico 1d91ed9beb tuple_tree_generator: make C++ just a regular backend
The `tuple_tree_generator` component was still heavily treating C++ as a
special citizen.
This commit normalizes the situation.
2022-08-11 16:20:42 +02:00
Massimo Fioravanti 5894867786 revng-pipeline: s/-p/--resume/ 2022-08-10 09:49:24 +02:00
Massimo Fioravanti d250d43ee4 revng-pipeline: factor out common CLI options
Common CLI options that were used by multiple tools and have now been
isolated into a single include file to be used before declaring main.
2022-08-10 09:49:24 +02:00
Massimo Fioravanti 261a114d6d Pipeline: corner-case fix in backward deduction 2022-08-10 09:49:24 +02:00
Massimo Fioravanti b49062b2d6 revng-pipeline: introduce --produce-all-single 2022-08-10 09:49:24 +02:00
Massimo Fioravanti 4cd5abe2b0 revng-pipeline: introduce --produce and --analyze 2022-08-10 09:49:24 +02:00
Massimo Fioravanti 9c13f8dbdd Introduce revng-artifact 2022-08-10 09:49:24 +02:00
Massimo Fioravanti 96bd5835d8 revng-pipeline: rework file-to-container syntax 2022-08-10 09:49:24 +02:00
Massimo Fioravanti 85a9c9637f revng-pipeline: rework logging 2022-08-10 09:49:24 +02:00
Massimo Fioravanti aa36cb7127 LLVMContainer: deduplicate linkage-related code 2022-08-10 09:49:24 +02:00
Massimo Fioravanti 14d71289fc Minor changes 2022-08-10 09:49:16 +02:00
Pietro Fezzardi c1641afeb6 Add LayoutTypeSystem::createArtificialLayoutTypes
This helper allows creating many artifical types at once.
2022-08-09 08:02:10 +02:00
Pietro Fezzardi f8bc4a2e77 Move isCallToIsolatedFunction to FunctionTags.h 2022-08-09 08:02:10 +02:00
Pietro Fezzardi e920ef040d Switch to dyn_cast_or_null in isCallToTagged
This allows to call the function passing null pointers without crashes.
2022-08-09 08:02:10 +02:00
Alessandro Di Federico b2a0c62618 RegionCFG: rename functions to avoid conflicts 2022-08-08 16:22:14 +02:00
Alessandro Di Federico 6a6cd939db Rework EarlyFunctionAnalysis 2022-08-08 13:55:34 +02:00
Alessandro Di Federico a844589739 ProgramCounterHandler: align PC address
ProgramCounterHandler now emits code masked with an alignment mask to
ease the job of various analyses.
2022-08-08 13:55:26 +02:00
Alessandro Di Federico cf9a0bc3fc getPrototype: don't fail on indirect calls 2022-08-08 13:55:26 +02:00
Alessandro Di Federico 562bb9959d Reimplement GCBI::getBlocksGeneratedByPC
GCBI::getBlocksGeneratedByPC has been reimplemented using recursive
coroutines.  Caching dominator trees was very error-prone.
2022-08-08 13:55:26 +02:00
Alessandro Di Federico ff8ca0aaff AVI: relax allowed operations on symbol
It is now legal to `and` and `bswap` the address of a symbol.
2022-08-08 13:55:26 +02:00
Alessandro Di Federico 4d69437548 Split moveBlocksInto off moveToNewFunctionType 2022-08-08 13:55:25 +02:00
Alessandro Di Federico 40f672ead9 EFA debug passes: raw_{fd_,}ostream 2022-08-08 13:55:25 +02:00
Alessandro Di Federico b07d134b73 Introduce CanonicalRegisterValues in the model
These canonical values ease certain analysis that can assume their value
at function entry.
2022-08-08 13:55:25 +02:00
Alessandro Di Federico 6d0fd9ada5 Make abi::FunctionType::Layout::Layout() public 2022-08-08 13:55:25 +02:00
Alessandro Di Federico bdfcbdd8d9 Implement std::set intersection 2022-08-08 13:55:23 +02:00
Alessandro Di Federico 2088a65fa0 Implement SuccessorsList::operator== 2022-08-08 13:54:41 +02:00
Alessandro Di Federico c4ca2e5d14 Introduce MetaAddress::isIn 2022-08-08 13:54:41 +02:00
Alessandro Di Federico c2f16b0907 Minor changes 2022-08-08 13:54:40 +02:00
Ivan Krysak 7b7c4c25b9 Standardize the pipe names to use CamelCase 2022-08-05 21:46:46 +03:00
Ivan Krysak dff7c5f37d Move yield pipes into revngYield 2022-08-05 21:46:28 +03:00
Massimo Fioravanti c97187fd0e Add cross relations role 2022-08-05 21:45:19 +03:00
Ivan Krysak 191fc99c1c Add a pipe for call-graph processing 2022-08-05 20:45:16 +02:00
Ivan Krysak 8f4590bf00 Outline the cross-relation interface 2022-08-05 21:42:58 +03:00
Ivan Krysak fe04a13a5b Introduce basic location support 2022-08-05 20:42:41 +02:00
Ivan Krysak 1ac6d6ea0d Introduce constexpr string splitter 2022-08-05 21:02:29 +03:00
Ivan Krysak 1b0fb2adfc Introduce constexpr repeat helpers 2022-08-05 20:59:02 +03:00
Ivan Krysak 792da8151e Redesign the rank definition process 2022-08-05 19:58:57 +02:00
Ivan Krysak 44fbe3e18b Rename abi::IsTrait into abi::TraitLike 2022-08-05 17:27:56 +03:00
Ivan Krysak 65d1a016d4 Standardize concept naming across the codebase 2022-08-05 17:27:56 +03:00
Ivan Krysak 4ee2835d52 Fix a trait inheritance problem 2022-08-05 17:27:56 +03:00
Ivan Krysak 409486609c Add EqualityComparable concept 2022-08-05 17:27:56 +03:00
Ivan Krysak 240f334d78 Fix minor wording issues 2022-08-05 17:27:56 +03:00
Ivan Krysak 9610051df9 Fix yaml traits to correctly [de]serialize scalars 2022-08-05 17:27:56 +03:00
Ivan Krysak de99de78ae Add key overloads for model::getTypePath 2022-08-05 17:27:56 +03:00
Ivan Krysak 165964bde1 Add a ConstexprString container to ADT 2022-08-05 17:27:56 +03:00
Ivan Krysak 8305e020b0 Move ranks into their own namespace 2022-08-05 17:27:56 +03:00
Ivan Krysak c21d8398e6 Move ranks into a separate header 2022-08-05 17:27:56 +03:00
Ivan Krysak 2e83058e83 Update rank naming convention 2022-08-05 13:55:24 +02:00
Djordje Todorovic 1243d1061c Introduce revng model hard-purge
In addition, introduce a new model Pass:

  revng model opt -prune-unsused-types
2022-07-28 15:02:55 +02:00