Giacomo Vercesi
11f1e532c6
Implement dirty bit on Container
...
Add a `Dirty` boolean to the `ContainerBase` class. This will be set to
true when the container mutates itself (e.g. remove, mergeBack, clear).
The dirty bit is reset when running `PipelineManager.store`.
2025-04-03 15:59:18 +02:00
Giacomo Vercesi
8e65716ad8
Use zstd compression in pipeline
...
Use the zstd compression for:
* The `LLVMContainer` when serializing
* The invalidation cache when writing to disk
2024-10-30 21:57:55 +01:00
Alessandro Di Federico
c8d4381297
s/Context &Ctx/Context &Context/g
2024-09-27 12:07:17 +02:00
Massimo Fioravanti
7ee8c8000d
Introduce revng pipe
2024-06-20 09:57:36 +02:00
Ivan Krysak
bc98e0079f
Formatting: change PenaltyReturnTypeOnItsOwnLine
...
The new value is 21.
2023-07-02 13:20:49 +02:00
Alessandro Di Federico
4eeb942afb
LLVMContainer: outline methods to .cpp
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
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
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
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
445bc2aa8c
Pipeline: introduce registry for container types
2022-09-29 15:52:26 +02:00
Massimo Fioravanti
9363bbd70a
Pipeline: every container type has now a C++ type
2022-09-29 15:51:17 +02:00
Massimo Fioravanti
261a114d6d
Pipeline: corner-case fix in backward deduction
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
aa36cb7127
LLVMContainer: deduplicate linkage-related code
2022-08-10 09:49:24 +02:00
Massimo Fioravanti
93ccd83f6e
Fix: llvm merge back crash
...
merge back now relies on modifying linkage rather than
OverrideFromSources
2022-06-22 18:10:47 +02:00
Massimo Fioravanti
f0a5ffe3b3
revng-pipeline: globals, extractOne and analyses
2022-05-24 08:58:48 +02:00
Giacomo Vercesi
99ae9c98e0
Add MIMEType to container
...
Add additional field MIMEType to Container.
This allows API consumers to know at runtime how to treat the data
within a container without any prior knowledge.
2022-04-26 15:59:35 +02:00
Massimo Fioravanti
60fd53b1fb
Introduce Kind::verify
2022-04-15 15:17:37 +02:00
Alessandro Di Federico
f6c9b04c81
Adopt clang-tidy: readability-identifier-naming
2022-04-04 21:15:52 +02:00
Massimo Fioravanti
c05b5dbb28
Steps now represent the *end* of a step
...
A special "begin" step has been introduced.
2022-03-28 12:17:05 +02:00
Massimo Fioravanti
b1dac5d17b
ContainerBase: introduce serialization primitives
2022-03-28 12:17:05 +02:00
Massimo Fioravanti
7aa57ab3b0
LLVMContainer::mergeBack: fix linking failure
...
`linkInModule` returns true on error. So the condition for failure is
`link(final, module1) || link(final, module2)`, instead of `&&`.
2022-03-28 12:17:05 +02:00
Alessandro Di Federico
3cc138c8d6
Drop cloneMetadata
...
It was an hack to circumvent a bug in LLVM.
The following LLVM commit properly fixes the problem:
[Cloning] Clone metadata on function declarations
2022-03-17 16:46:02 +01:00
Alessandro Di Federico
5e38805063
Rename detail namespaces into revng::detail
2022-03-11 15:37:12 +01:00
Alessandro Di Federico
3b7d7c5f7e
Don't use llvm::outs
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
70ec456078
Introduce revng-pipeline
2022-01-17 18:17:54 +01:00