Ivan Krysak
9f1d9fd5d0
Use Container::contains() where appropriate
2023-07-02 15:06:11 +00: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
d99b0241e8
Minor improvements
2023-05-17 14:08:04 +02:00
Giacomo Vercesi
31cd2b53f9
rcc: add codespell
...
Add codespell to the list of checks performed by
revng-check-conventions. This should reduce the amount of typos present
in the revng codebase.
2023-05-11 10:05:32 +02:00
Alessandro Di Federico
4eeb942afb
LLVMContainer: outline methods to .cpp
2023-04-28 14:34:49 +02:00
Alessandro Di Federico
8b3f641a29
Rename LLVMGlobalKindBase to LLVMKind
2023-04-28 14:34:49 +02:00
Massimo Fioravanti
4d4b587e1d
Drop LLVMGlobalKindBase template argument
2023-04-28 14:34:47 +02:00
Alessandro Di Federico
a0dcd176b2
Purge useless headers
2023-04-28 14:34:40 +02:00
Alessandro Di Federico
58b50e6b2a
Dismiss LLVMContainerBase
2023-04-28 14:34:39 +02:00
Alessandro Di Federico
8af3fd7fa3
LLVMContainer: do not duplicate appending globals
...
`llvm.global_ctors` and llvm.global_dtors were being cloned
exponentially many times. This was due to their `appending` linkage.
2023-04-28 14:04:32 +02:00
Alessandro Di Federico
2f917a2772
Introduce ModuleStatistics
2023-04-28 14:04:32 +02:00
Alessandro Di Federico
170749b0aa
Introduce revng::verify
2023-04-28 14:04:31 +02:00
Giacomo Vercesi
566cb6310b
PipelineC: make indexed object stably sorted
...
Many Pipeline objects (Globals, Ranks, Kinds, Targets in a TargetList)
were ordered by load order, this makes the playback of traces difficult.
Moreover the order of loading of pipeline files also influences the
ordering of other elements (Step, Analys{is,esLists}). These are also
ordered to prevent incosistent ordering.
2023-04-20 14:43:13 +02:00
Giacomo Vercesi
9a972009d1
PipelineC: size and const-correctness
...
Fix the return type (often mismatched from uint64_t to int) and the
const-correctness of many functions in PipelineC
2023-04-20 14:43:12 +02:00
Alessandro Di Federico
8ef567471b
LLVMContainer::mergeBackImpl: postpone verify
...
This commit moves module verification after cleanup.
2023-04-13 18:11:48 +02:00
Alessandro Di Federico
995d44cf73
Implement Location::{parent,back}
2023-04-08 08:42:24 +02:00
Alessandro Di Federico
6564fc0568
Minor changes
2023-04-08 08:42:24 +02:00
Alessandro Di Federico
52521f8cac
Adopt more standard library's features
2023-04-08 08:42:23 +02:00
Alessandro Di Federico
b2f22c168f
Adopt clang-format 16
2023-04-08 08:42:23 +02:00
Giacomo Vercesi
2e96e09f63
Drop analyze-all
...
Drop all the uses of analyzeAll and swap its use with the invocation of
the appropriate analysesList
2023-03-22 17:50:02 +01:00
Massimo Fioravanti
312e2e8d53
Add analyses lists
...
Introduces the possibility of specifiying lists of analyses as way to
give them coherent names.
2023-03-22 17:31:46 +01:00
Ivan Krysak
69c292102d
Pipeline: improve InvokableWrapperImpl::dump()
2023-03-15 10:19:02 +01:00
Ivan Krysak
03be19fab8
Pipeline: fix pure (model only) analysis support
...
Because of a missing function overload, no container-less analysis
could have been created. This adds the said overload.
2023-03-15 10:19:01 +01:00
Ivan Krysak
0b1aaeaede
Minor improvements
2023-03-15 10:19:01 +01:00
Alessandro Di Federico
6f47231695
LLVMContainer: pruneDICompileUnits pre linking
2023-03-13 22:53:44 +01:00
Alessandro Di Federico
8d813e169a
LLVMContainer: drop certain named MD pre linking
2023-03-13 22:53:44 +01:00
Alessandro Di Federico
4353beff22
LLVMContainer: fix how we adjust linkage
...
We used to turn `internal` linkage to the equivalent of C++'s inline.
We need to do the same for `private`. If we don't do this, the number of
`private` variables grows exponentially.
2023-03-13 22:53:44 +01:00
Massimo Fioravanti
95ec36eea3
Fix error messages capitalization
2023-02-09 13:44:22 +01:00
Massimo Fioravanti
4dc2e92782
Introduce DocumentError
...
`DocumentError`s are the inteded way of propagating errors from the
pipeline to the frontend when a location is required to inform the user
of the error whereabouts.
2023-02-09 13:42:50 +01:00
Antonio Frighetto
2d086e04a1
Context: fix entry in containsReadOnlyContainer
...
`ReadOnlyContainers` is defined to be a `llvm::StringMap`
of a further `llvm::StringMap` of `std::unique_ptr`s of
`ContainerBase`. A logic issue has been addressed by
properly dereferincing the inner map.
2023-02-06 09:37:23 +01:00
Antonio Frighetto
308d8ee8a3
Loader: associate container name to its role
...
`Container` names were mistakenly associated to the name
of their declaration. This has been fixed by associating
them to their `Role`.
2023-02-06 09:37:23 +01:00
Antonio Frighetto
ea0a06a876
revng.daemon: accept no arguments for analysis
...
Let GraphQL accept zero or more parameters for analyses.
2023-02-06 09:37:23 +01:00
Antonio Frighetto
c5d9a4d787
Introduce helper for location conversion
2023-02-06 09:37:23 +01:00
Antonio Frighetto
c3480b6f9b
CLOption: improve isSet for a cl::opt<T>
...
A logic issue existed when validating whether a `cl::opt<T>`
was set. This has been addressed by replacing `isDefaultOption`
method with `getNumOccurrences`, as the former one was not
meant to be used for checking if the option was set or not.
Likewise, the default Option itself is written to a `std::string`,
in method `get`; the latter is leveraged by `Invokable`.
2023-02-06 09:37:23 +01:00
Djordje Todorovic
3365a626df
LLVMContainer: avoid copying !dbg to declarations
2023-02-02 15:26:18 +01:00
Alessandro Di Federico
185df966b7
LLVMContainer: s/REVNG/revng./g
2022-11-30 15:06:54 +01:00
Alessandro Di Federico
06d4c3a5ed
LLVMContainer: infect DataLayouts upon linking
2022-11-30 15:06:54 +01:00
Massimo Fioravanti
452d10950e
Pipeline: only remove targets in the container
...
This commit ensures that only content that is actually inside a
container is elegible to be removed.
2022-11-30 15:06:54 +01:00
Massimo Fioravanti
044071435e
Fix handling of binaries with no functions
...
Fix various edge cases when a binary with no functions was analyzed.
2022-11-22 16:19:28 +01:00
Giacomo Vercesi
7526d72492
Kinds: exposed locations produced
...
Expose the locations that can be found in each kind
2022-11-11 13:43:55 +01:00
Giacomo Vercesi
d185fc80ac
Rank: fix RankConvertibleTo with RootRank
...
RankConvertibleTo would be erroneously fail when used with a RootRank
either in the From or To template parameter.
2022-11-11 13:43:55 +01:00
Giacomo Vercesi
0b80801b2b
TupleTreeDiff: applyDiff uses ErrorList
...
Change how TupleTreeDiff and Visitor work so they can populate an
ErrorList in case the deserialization/apply of a diff fails.
2022-10-30 09:13:44 +01:00
Giacomo Vercesi
81d25f9805
PipelineC: expose invalidation logic
2022-10-30 09:13:14 +01:00
Pietro Fezzardi
f371c03e93
Globals.h: evictCachedReferences on clear()
2022-10-29 16:46:19 +02:00
Massimo Fioravanti
d55aa9b9e6
Pipeline: remove * from targets
...
Now * is just a pipeline frontend shorthand.
2022-10-20 14:20:12 +02:00
Massimo Fioravanti
049ba69d43
Pipeline: containers can now enumerate their kinds
2022-09-29 15:55:30 +02:00
Massimo Fioravanti
dc23473d85
Introduce Loader::getRegistered{Pipes,Analyses}
2022-09-29 15:55:16 +02:00
Massimo Fioravanti
445bc2aa8c
Pipeline: introduce registry for container types
2022-09-29 15:52:26 +02:00