Andrea Gussoni
fa69bd24e5
ScopeGraph: introduce the ScopeGraph
...
Introduce the `ScopeCloser` and `GotoTarget` annotations in the IR, and
the relative necessary machinery, needed to handle scope closer and goto
edges for the new backend.
A specialization of the `llvm::GraphTraits`, called `ScopeGraph`, that
is able to handle both the above mentioned annotations is provided.
For the `llvm::GraphTraits` implementation, we introduce the
`GeneratorIterator` class, which uses a coroutine to store the status of
the iteration.
A debug logger pass is added, so that we are able to test the
functionality with `FileCheck`.
2024-12-05 15:43:57 +01:00
Andrea Gussoni
023771f084
FunctionTags: correct typo
...
Correct `function-dispatcher` typo.
2024-12-04 11:22:00 +01:00
Alessandro Di Federico
6e733427bc
emitMessage: fix function calle emission
2024-11-27 17:18:39 +01:00
Giacomo Vercesi
58b326b8fa
ZstdStream: remove manual memory management
...
Remove the use of manual memory management, convert to the use of
`std::unique_ptr`.
2024-11-26 09:48:37 +01:00
Alessandro Di Federico
143c315196
Merge revng-c into revng
2024-11-21 10:50:55 +01:00
Alessandro Di Federico
2e4f4d09b9
Remaining FunctionTags have been moved to revng
2024-11-04 15:09:56 +01:00
Alessandro Di Federico
e239e18b0c
Adopt FunctionPoolTag
2024-11-04 15:09:56 +01:00
Alessandro Di Federico
800340d6e8
IRHelpers.cpp has been moved to revng
2024-11-04 15:09:56 +01:00
Alessandro Di Federico
2ed940dc3a
FunctionTags have been moved to revng
2024-11-04 15:09:56 +01:00
Alessandro Di Federico
36e2faad3d
Introduce -Wunreachable-code-break
2024-10-31 17:19:55 +01:00
Alessandro Di Federico
05881c242a
revngSupport: use default set of LLVM libraries
2024-10-31 17:19:51 +01:00
Alessandro Di Federico
16e01f43d6
Import revng-c's FunctionTags.h
2024-10-31 17:19:51 +01:00
Alessandro Di Federico
d72f6413f0
Import revng-c's Support/IRHelpers.h
2024-10-31 17:19:51 +01:00
Giacomo Vercesi
3fc9bbf8fc
Uniform GzipStream
...
Uniform the functions/classes in GzipStream with the ones in ZstdStream.
2024-10-30 21:57:55 +01:00
Giacomo Vercesi
5b200df81a
Implement ZstdStream
...
Implement the `zstdCompress` and `zstdDecompress` functions. Also
implement the `ZstdCompressedOstream` which is a `llvm::raw_ostream`
which compresses data on the fly.
2024-10-30 21:57:55 +01:00
Alessandro Di Federico
a0c670652c
Improve usages of Expected<T>
2024-10-10 14:50:26 +02:00
Alessandro Di Federico
045f982a32
Improve usage of Expected<T>
2024-10-09 15:16:55 +02:00
Alessandro Di Federico
5db142237b
lddtreeResolve: adopt consumeError
2024-10-04 15:20:06 +02:00
Giacomo Vercesi
f8ffe38687
Unify cache directory logic
...
Make the cache directory logic uniform in Python and C++, move the
respective implementations under support since it's project-wide logic
and not exclusive to debug-info.
2024-10-01 13:38:13 +02:00
Alessandro Di Federico
c1cbb4e9a0
Initialize pointers to nullptr
2024-09-27 12:07:17 +02:00
Alessandro Di Federico
baa1bd612e
Introduce recreateWithoutBody
...
Similar to moveToNewFunctionType, but doesn't move the BasicBlocks.
2024-09-27 12:07:16 +02:00
Alessandro Di Federico
5d0d4005c5
s/Ctxt?/Context/g
2024-09-27 10:35:10 +02:00
Alessandro Di Federico
9c99ac33ac
s/serializeToLLVMString/toLLVMString/
2024-09-27 10:35:10 +02:00
Alessandro Di Federico
ca99bbbb66
Adopt toString()
2024-09-26 17:51:08 +02:00
Alessandro Di Federico
835a00d80c
Minor changes
2024-09-25 10:00:22 +02:00
Alessandro Di Federico
5c9b6ed9b3
Rename DILogger into Log
2024-08-16 13:27:00 +02:00
Alessandro Di Federico
744184c90c
Do not use CallBase::getCalledFunction
...
Use our wrapper, which does not return nullptr if the `FunctionType`s do
not match.
2024-08-07 16:07:59 +02:00
Alessandro Di Federico
0cb3eedd37
Do not use CallBase::getCalledFunction
...
Use our wrapper, which does not return nullptr if the `FunctionType`s do
not match.
2024-08-07 15:40:56 +02:00
Alessandro Di Federico
7b00473859
PDBImporter: rework .pdb search
2024-08-05 17:41:34 +02:00
Ivan Krysak
94a0ad6b93
Adopt reworked model::Type
2024-06-27 11:07:01 +02:00
Ivan Krysak
c2b4fb70bb
Model: rename TypePath to DefinitionReference
2024-06-27 11:07:01 +02:00
Ivan Krysak
3705906074
Model: rename Type into TypeDefinition
2024-06-27 11:07:01 +02:00
Alessandro Di Federico
988af25a7d
Adopt UniquedBy* FunctionTags for deduplication
2024-06-26 12:21:58 +02:00
Alessandro Di Federico
bce1d6c0f3
Adopt invalidation along the core pipeline
2024-06-20 10:24:50 +02:00
Alessandro Di Federico
9fce67eee9
Reduce IRBuilder usage in favor of IRBuilderBase
2024-06-20 10:24:50 +02:00
Alessandro Di Federico
a6cf3fbb83
Centralize computation of llvm::Function names
...
This commit introduces a function to obtain the name assigned to a
`llvm::Function` associated to a `model::Function`. This simplifies the
codebase but also enables us to introduce an option to produce
human-friendly names for debugging/testing purposes.
2024-06-20 10:24:49 +02:00
Alessandro Di Federico
5186a58053
s/FunctionMetadata/ControlFlowGraph/
2024-06-18 17:56:24 +02:00
Djordje Todorovic
c58fec45e3
Add ImplicitModelCastPass
...
We introduce a new LLVM Pass that should detect implicit
casts, by marking the 3rd argument of ModelCast as `true`.
The backend will omit printing a cast expression if the
ModelCast is implicit one.
2024-05-16 17:57:22 +02:00
Djordje Todorovic
c4eda86471
MakeModelCast: Change OpaqueFunctionsPool
...
Introduce new key: use TypePair instead of Type *.
2024-05-16 17:57:22 +02:00
Djordje Todorovic
dd68f7d810
Move casts to MakeModelCastPass
...
Production of casts in backend should be indicated by
call to ModelCast only. This patch implements that.
2024-05-16 17:57:22 +02:00
Alessandro Di Federico
bf6cefc05a
Externalize functions to improve build times
2024-05-03 21:52:40 +02:00
Alessandro Di Federico
fe1dffcffd
Add some missing includes
...
This is in preparation of reducing headers in Debug.h.
2024-05-03 21:52:40 +02:00
Alessandro Di Federico
a1f3624b21
TraceProgressListener: flush upon signal
2024-04-18 17:50:33 +02:00
Pietro Fezzardi
05cc20cb6e
Rename MallocLike Tag to ReturnsPolymorphic
...
Also add this Tag to the LocalVariable opcode who was missing it.
2024-03-19 09:44:00 +01:00
Pietro Fezzardi
ed88c6b459
Use LLVM MemoryEffects in hasSideEffects
2024-03-19 09:44:00 +01:00
Pietro Fezzardi
206936f1c0
Drop redunant ReadsMemory and WritesMemory Tags
...
Over time, these tags have shifted to basically coincide with the Copy
and Assign tags. There's no need for them anymore they just make the
code more verbose and less straightforward.
2024-03-19 09:44:00 +01:00
Pietro Fezzardi
1baec8ff7b
Drop old MonotoneFramework
2024-03-19 09:43:59 +01:00
Ivan Krysak
e2018fa1c3
MetaAddress: add partial serialization option
2024-03-18 11:58:11 +01:00
Ivan Krysak
86fdb19b9f
MetaAddress: pull separator into the header
2024-03-18 11:58:11 +01:00
Alessandro Di Federico
3fb9e58b0a
Progress: cap line length to terminal size
2024-03-01 17:47:28 +01:00