[PATCH] D75638: [Hexagon] Support for Linux/Musl ABI.
Brian Cain via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Mar 9 12:58:11 PDT 2020
bcain added a comment.
In general, I recommend qualifying metric and threshold values with their associated units: bits, bytes, pages, etc. That way it's easy to see where the unit conversions are happening and easy to see whether the logic is correct without reasoning about how the value changes among lines.
Constants specified by the ABI should be designated with names and units [unless maybe this conflicts w/llvm project naming conventions?]
================
Comment at: clang/lib/CodeGen/TargetInfo.cpp:7592
+ uint64_t Size = getContext().getTypeSize(Ty);
+ if (Size <= 64)
+ HexagonAdjustRegsLeft(Size, RegsLeft);
----------------
This `64` should probably be named something like `HEXAGON_REGISTER_SIZE_BITS_MAX`?
================
Comment at: clang/lib/CodeGen/TargetInfo.cpp:7613
+ if (HexagonAdjustRegsLeft(Size, RegsLeft))
+ Align = Size <= 32 ? 32 : 64;
+ if (Size <= Align) {
----------------
`32` here should be `HEXAGON_REGISTER_SIZE_BITS_MIN` maybe?
================
Comment at: clang/lib/CodeGen/TargetInfo.cpp:7705
+ // Round up to the minimum stack alignment for varargs which is 4 bytes.
+ uint64_t Offset = llvm::alignTo(CGF.getContext().getTypeSize(Ty) / 8, 4);
+
----------------
I suggest:
```
uint64_t Offset = llvm::alignTo(CGF.getContext().getTypeSize(Ty) / CHAR_BIT, HEXAGON_MIN_STACK_ALIGN_BYTES);
```
================
Comment at: clang/lib/CodeGen/TargetInfo.cpp:7748
+ QualType Ty) const {
+ int ArgSize = CGF.getContext().getTypeSize(Ty) / 8;
+
----------------
```
int ArgSizeBytes = CGF.getContext().getTypeSize(Ty) / CHAR_BIT;
if (ArgSizeBytes > HEXAGON_VA_REGISTER_LIMIT_BYTES)
return EmitVAArgFromMemory(CGF, VAListAddr, Ty);
```
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D75638/new/
https://reviews.llvm.org/D75638
More information about the cfe-commits
mailing list