Lauri Vasama
03a21855ab
Require Clift module attribute in MLIRContainer
2025-06-04 15:13:47 +02:00
Lauri Vasama
4bf1d8fe99
Remove Clift backend transform and model option
2025-06-04 15:13:47 +02:00
Lauri Vasama
c956904b8e
Add Clift backend pipe and update tests
2025-06-04 15:13:47 +02:00
Lauri Vasama
73ca618c4d
Simplify import-clift-types pipe and tests
2025-06-04 15:13:47 +02:00
Lauri Vasama
7c9031bd98
Change MLIRContainer to focus on Clift, rename
2025-06-04 15:13:47 +02:00
Lauri Vasama
cd827d6a14
Remove import-clift-types pipe
2025-06-04 15:13:47 +02:00
Lauri Vasama
d21325ef55
Remove model dependency in CliftTypes.cpp
2025-06-04 15:13:47 +02:00
Lauri Vasama
13b554d64a
Remove unused include in CliftOps.cpp
2025-06-04 15:13:47 +02:00
Lauri Vasama
cc94e2d290
Constrain returnable types
2025-06-04 15:13:47 +02:00
Lauri Vasama
047511b1ed
Remove Clift break and continue ops
2025-06-04 15:13:47 +02:00
Lauri Vasama
3e065cb23d
Remove local and label names
2025-06-04 15:13:47 +02:00
Lauri Vasama
e24c881559
Remove DLTI and LLVMIR dialects from MLIRContainer
2025-06-04 15:13:47 +02:00
Lauri Vasama
a0ec1305f1
Move ReturnOp type verification to FunctionOp
2025-06-04 15:13:47 +02:00
Lauri Vasama
f0091e699f
Remove clift::ModuleOp
...
A new dialect attribute is instead used to verify mlir::ModuleOp:
```
module attributes {clift.module} {
}
```
2025-06-04 15:13:47 +02:00
Lauri Vasama
a7eb86174b
Add revng/Support/Identifier.h for id validation
2025-06-04 15:13:47 +02:00
Lauri Vasama
d1dfbc4b01
Emit implicit switch breaks from Clift
2025-06-04 15:13:47 +02:00
Lauri Vasama
137bb6f95b
Fix register set member access emission
2025-06-04 15:13:47 +02:00
Lauri Vasama
f94b28b7e4
Add missing newline after if without else
2025-06-04 15:13:47 +02:00
Lauri Vasama
a3ee0349a6
Inherit GlobalOpInterface from Symbol
2025-06-04 15:13:47 +02:00
Lauri Vasama
81dcea49e4
Fix printing of CallOp on function pointer
2025-06-04 15:13:47 +02:00
Lauri Vasama
7273b0d1a1
Fix getOnlyOperation Clift backend
2025-06-04 15:13:47 +02:00
Lauri Vasama
276e43d050
Fix brace elision around gotos
2025-06-04 15:13:47 +02:00
Lauri Vasama
2bc4cec399
Fix MakeLabelOp canonicalization
2025-06-04 15:13:47 +02:00
Lauri Vasama
336b18d937
Overhaul Clift type syntax
...
* Removed syntax for defined type attributes.
* Added !clift.const<T> and removed const syntax from types kinds.
* Some restructuring of class type internals.
2025-06-04 15:13:47 +02:00
Lauri Vasama
0313350b7f
Minor Clift.cpp cleanup
2025-06-04 15:13:47 +02:00
Pietro Fezzardi
ea3cbe4c1b
Drop type inlining
...
Type inlining was a feature that allowed type definitions of
structs/unions/enums to be printed in C directly inside the definition
of another parent struct/union, if the inner type was only used once in
the parent type.
This kind of reasoning is inherently global: a type definition of the
subtype can be inlined in the parent type one only if *globally* the
subtype it isn't referred anywhere else.
This caused issues with type inlining inside definitions of stack types
in the body of functions. Indeed, for a given function, due to type
inlining, it was necessary to do global reasoning about what other types
could be inlined in the definition of the function's stack frame type.
This, in turn, had heavy consequences on invalidation, because any
change to any type (even if it wasn't referred in a given function's
body) was causing invalidation of all functions' bodies.
For this reason it was decided to drop the type inlining feature.
2025-05-28 17:11:56 +02:00
Pietro Fezzardi
28f180dcb8
Rename CTypeBuilder::printTypeDefinition
...
to printDefinition.
2025-05-28 17:11:11 +02:00
Ivan Krysak
c7bba8c1b9
Prevent Support headers from depending on PTML
2025-05-08 15:42:01 +02:00
Ivan Krysak
eac296a99f
Standardize PTML tag emission in c backend
2025-05-08 15:42:00 +02:00
Ivan Krysak
79964eac74
Avoid ' misuse in error messages and comments
2025-04-17 16:41:21 +02:00
Ivan Krysak
57b5eb7f98
NameBuilder: allow different name checkers
2025-04-17 11:19:17 +03:00
Ivan Krysak
dce5c1a02c
NamingConfiguration: pull more prefixes inside
...
Unify additional values that used to be hardcoded in the old backend
under the same naming configuration root.
2025-04-17 11:19:17 +03:00
Ivan Krysak
645cf7fc2e
NameBuilder: sunset deduplication
...
This reworks NameBuilder to ease the transition to the system where
the model will be guaranteed to never contain any name collisions, both
between user-specified names and the automatic ones.
2025-04-15 16:35:42 +03:00
Ivan Krysak
3edb6cbb9b
Minor improvements
2025-04-15 16:35:42 +03:00
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
Lauri Vasama
3ca3653333
Convert Clift type handles to use locations
2025-03-24 09:27:57 +02:00
Lauri Vasama
d6a2ee387e
Add aliases for Clift types without handles
2025-03-24 09:26:43 +02:00
Lauri Vasama
e9c329e51d
Rename Clift unique handle to handle
2025-03-24 09:26:43 +02:00
Lauri Vasama
1325c75979
Move Clift op custom parsers out of header
2025-03-24 09:26:43 +02:00
Lauri Vasama
5479a5de88
Add special handling of aggregate initializers
2025-03-24 09:26:43 +02:00
Lauri Vasama
c85275cc70
Add expression region utilities in CliftOps.h
2025-03-24 09:26:43 +02:00
Lauri Vasama
2f64025dc9
Fix Clift backend double negation emission
2025-03-24 09:26:43 +02:00
Lauri Vasama
5f475739ef
Rename reinterpret, add convert cast
2025-03-24 09:26:43 +02:00
Lauri Vasama
f884642f59
Overhaul clift.struct, clift.union assembly syntax
...
Old syntax:
```
unique_handle = "/model-type/1",
name = "my_struct",
size = 2,
fields = [
<
offset = 0
name = "",
type = !t
>,
<
offset = 1,
name = "my_field",
type = !t
>
]
>
unique_handle = "/model-type/1",
name = "my_union",
fields = [
<
offset = 0,
name = "",
type = !t
>,
<
offset = 0,
name = "my_field",
type = !t
>
]
>
```
New syntax:
```
"/model-type/1" as "my_struct" : size(1) {
offset(0) : !t,
offset(1) as "my_field" : !t
}
>
"/model-type/1" as "my_union" : {
!t,
"my_field" : !t
}
>
```
2025-03-24 09:26:43 +02:00
Lauri Vasama
ea78766f10
Overhaul clift.enum assembly syntax
...
Old syntax:
```
unique_handle = "/model-type/1",
name = "my_enum",
underlying_type = !t,
fields = [
<
name = "my_enumerator",
raw_value = 42
>
]
>
```
New syntax:
```
"/model-type/1" as "my_enum" : !t {
42 as "my_enumerator"
}
>
```
2025-03-24 09:26:43 +02:00
Lauri Vasama
eaf1bf35aa
Overhaul clift.primitive assembly syntax
...
Old syntax:
```
!clift.primitive<SignedKind 8>
!clift.primitive<is_const = true, SignedKind 8>
```
New syntax:
```
!clift.primitive<signed 8>
!clift.primitive<const signed 8>
```
2025-03-24 09:26:43 +02:00
Lauri Vasama
e2f4af30e9
Add custom builder for Clift FunctionOp
2025-03-24 09:26:43 +02:00
Lauri Vasama
e08a8e766b
Set register set type name in Clift import
2025-03-24 09:26:43 +02:00
Lauri Vasama
20cb57a105
Fix redundant cast parentheses in Clift backend
2025-03-24 09:26:42 +02:00
Lauri Vasama
a9727e198c
Fix return statement emission in Clift backend
2025-03-24 09:25:30 +02:00