Ivan Krysak
8cd3248175
abi::...::Layout: function-type-layout logger
2026-06-15 17:28:22 +02:00
Ivan Krysak
0d0d455b19
abi::FunctionType::Layout: move yaml traits higher
2026-06-15 17:28:22 +02:00
Ivan Krysak
ea785998ec
Minor improvements
2026-06-15 11:47:41 +02:00
Alessandro Di Federico
51526e9777
ABI/Layout: move YAML traits to header
...
The YAML traits for Layout (and friends) move into Layout.h so callers
can serialize a Layout directly without pulling in Layout.cpp's
internals. As a result StackSpan gains default-initialized fields and
its operator+ is hoisted to a free function (with the symmetric
uint64+StackSpan overload) so it works with the YAML mapping.
2026-06-11 17:39:53 +02:00
Andrea Gussoni
530ce317c1
ABI: use llvm::alignToPowerOf2
...
`llvm::alignToPowerOf2` covers the same semantics of the dropped
`alignedOffset` method, including the power of 2 assertion.
2026-05-29 17:12:35 +02:00
Lauri Vasama
0ab9f769dd
Add CDataModel in ABI definition
2026-05-02 17:21:47 +03:00
Giacomo Vercesi
704c5e9bbb
TupleTree: fix broken operator==
...
The `operator==` for keyed `StructDefinitions` was the comparison
between keys, which is misleading.
2026-03-04 14:58:02 +01:00
Alessandro Di Federico
a1f9bd2d16
Minor changes
2025-12-22 11:34:46 +01:00
Alessandro Di Federico
5820908675
Remove and ban \file
2025-12-16 17:41:55 +01:00
Ivan Krysak
f391392fe9
Use explicit separator strings
2025-07-23 11:38:52 +02:00
Ivan Krysak
2619406ea7
ABI: fix ABI.FloatsUseGPRs() misuse
2025-05-08 15:42:01 +02:00
Ivan Krysak
f070f1f1e1
Model: sunset double name system
2025-04-17 11:19:17 +03:00
Ivan Krysak
3edb6cbb9b
Minor improvements
2025-04-15 16:35:42 +03:00
Ivan Krysak
48b6ab7597
ABI: fix a rare crash on a misaligned argument
2025-03-05 08:57:35 +02:00
Ivan Krysak
705e4a5955
auto [...] -> auto &&[...]
2025-02-13 13:10:51 +02:00
Ivan Krysak
f494ae5f5f
Standardize comment formatting
...
Use `*something*` instead of `_something_` when adding emphasis.
2025-02-13 13:09:50 +02:00
Ivan Krysak
a93ffd3760
Rename UnusedStackArgumentBytes
...
Old name was `StackBytesAllocatedForRegisterArguments`.
2025-02-12 16:43:19 +02:00
Ivan Krysak
e4d9a022cd
ToCABI: factor alignment computation out
...
Alignment considerations all over the place where growing increasingly
verbose and complex, increasing the likelihood of getting them wrong.
This unifies all the alignment logic in one place.
2025-02-12 16:43:05 +02:00
Ivan Krysak
a5a2bead4f
ABI: fix success detection and trailing padding
...
There were issues with how trailing padding is processed which sometimes
led to it being discarded. That should not happen from now on.
As a size benefit this also strictens the exit condition and improves
wording on some of the comments.
2025-02-12 16:40:59 +02:00
Ivan Krysak
7ad6b52974
ABI: improve distributor safety
...
This makes sure we never try to use a distributor object after
discarding some of its outputs.
2025-02-12 16:36:20 +02:00
Ivan Krysak
ab535feb13
ABI: always use distributor for index selection
2025-02-12 16:36:20 +02:00
Ivan Krysak
8e85515969
ABI: fix mishandling of the top of the stack
...
Some ABI's (think mips) require a part of the stack to be reserved,
but before this patch we treated those fields as arguments.
Note that this analysis never inserts fields, so if there are no
sufficient field already inserted before-hand it's just going to fail
the conversion (for example, if the field at the *newly adjusted*
offset 0 is not present).
2025-02-12 16:36:20 +02:00
Ivan Krysak
566cbad8ae
ToCABI: switch argument verification pair
...
Before this, arguments were verified in a (current, next) pair,
this makes it so (previous, next) pair is used instead.
2025-02-12 16:36:20 +02:00
Ivan Krysak
c861e1c552
ToCABI: bundle argument-specific data together
2025-02-12 16:36:20 +02:00
Ivan Krysak
2521ffc1be
ABI: allow ValueDistributor reassignment
2025-02-12 16:36:20 +02:00
Ivan Krysak
850677115e
Minor improvements
2025-02-12 16:26:56 +02:00
Ivan Krysak
724f8bfb59
ABI: streamline terminology
...
"packed" is used instead of "unnaturally aligned".
2024-10-08 13:53:53 +02:00
Ivan Krysak
5150fbd8c8
ABI: Limit usage of the StackAlignment option
2024-10-08 13:53:53 +02:00
Ivan Krysak
659bd01974
ABI: make distribution carry alignment information
...
This allows argument distribution to change based on the previous
argument by only preserving alignment information.
2024-10-08 13:53:53 +02:00
Ivan Krysak
85474eb228
ABI: let last argument distribution differ
2024-10-08 13:53:52 +02:00
Ivan Krysak
7dfd669bde
ABI: introduce a new configuration option:
...
`StackArgumentsUseRegularStructAlignmentRules`.
2024-10-08 13:53:52 +02:00
Ivan Krysak
b378ac9b17
ABI: improve handling of padding arguments
2024-10-08 13:53:52 +02:00
Ivan Krysak
1289678457
ABI: fix AArch64 pointer-to-copy handling
2024-10-08 13:53:52 +02:00
Ivan Krysak
d314c6ca36
ABI: fix a bug related to argument splitting
2024-10-08 13:53:52 +02:00
Ivan Krysak
e4d8ead973
ABI: make MinimumStackArgumentSize explicit
2024-10-08 13:53:52 +02:00
Ivan Krysak
d6ca06b864
ABI: handle SPTAR return value register correctly
2024-10-08 13:53:51 +02:00
Alessandro Di Federico
2cdedc71f4
s/serialize/toString/
...
We keep serialize for method dealing with streams.
If it returns a `std::string`, let's use `toString`.
2024-09-27 12:07:17 +02:00
Ivan Krysak
336fac0a67
ABI: do not assert when offset is not aligned
...
Abort the conversion instead.
2024-08-06 10:26:34 +02:00
Ivan Krysak
4a2db0ba4f
UpcastablePointer: streamline empty behavior
2024-06-27 11:05:52 +02:00
Ivan Krysak
823e561806
TTG: rework polymorphic serialization
...
For now, the only serialization trait we were verifying
a polymorphic TTG type to have was the wrong (the one
that only printed base class's fields).
This commit explicitly disables said serializer and
ensures it's never used.
Here's an illustration of the impact of the changes:
```
model::UpcastableType MyType = getTypeFromSomewhere();
model::Type &View = *MyType;
model::PointerType &Pointer = MyType->asPointer();
serialize(MyType); // Good
serialize(Pointer); // Good
serialize(View); // new: explicit error
// old: only print base type's fields
```
2024-06-27 11:05:51 +02:00
Ivan Krysak
dfa7478685
Adopt reworked model::Type
2024-06-27 11:05:51 +02:00
Ivan Krysak
927e8006b9
Model: rename TypePath to DefinitionReference
2024-06-27 11:05:49 +02:00
Ivan Krysak
ac587cbb4f
Model: rename Type into TypeDefinition
2024-06-27 11:05:48 +02:00
Alessandro Di Federico
2925b11f6a
Model: adopt getConst where appropriate
2024-06-20 10:24:49 +02:00
Lauri Vasama
3e33a300d5
Introduce RawFunctionType::Architecture
2024-05-29 15:42:15 +02:00
Alessandro Di Federico
0459b9d084
Introduce RegisterUsageAnalyses
2024-04-19 18:33:00 +02:00
Ivan Krysak
dc16217f6d
Layout: introduce usedRegisters helper
2024-03-18 19:32:34 +01:00
Ivan Krysak
0d5c93ed36
Distributor: add nextPositionBasedIndex
2024-03-18 19:32:34 +01:00
Ivan Krysak
408c37caf2
Layout: introduce finalStackOffset helper
2024-03-18 19:32:34 +01:00
Ivan Krysak
58e5fffb14
Layout: rework dump
2024-03-18 19:32:34 +01:00