[all-commits] [llvm/llvm-project] 9af362: [SystemZ] Fix transparent_union calling convention
Ulrich Weigand via All-commits
all-commits at lists.llvm.org
Thu Jul 18 08:44:36 PDT 2024
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 9af3628ce7400a96205a4c4468867c3c11dd4b2f
https://github.com/llvm/llvm-project/commit/9af3628ce7400a96205a4c4468867c3c11dd4b2f
Author: Ulrich Weigand <ulrich.weigand at de.ibm.com>
Date: 2024-07-18 (Thu, 18 Jul 2024)
Changed paths:
M clang/lib/CodeGen/Targets/SystemZ.cpp
M clang/test/CodeGen/SystemZ/systemz-abi.c
Log Message:
-----------
[SystemZ] Fix transparent_union calling convention
The SystemZ ABI code was missing code to handle the transparent_union
extension. Arguments of such types are specified to be passed like
the first member of the union, instead of according to the usual
ABI calling convention for aggregates.
This did not make much difference in practice as the SystemZ ABI
already specifies that 1-, 2-, 4- or 8-byte aggregates are passed
in registers. However, there *is* a difference if the first member
of the transparent union is a scalar integer type smaller than word
size - if passed as a scalar, it needs to be zero- or sign-extended
to word size, while if passed as aggregate, it is not.
Fixed by adding code to handle transparent_union similar to what
is done on other targets.
To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications
More information about the All-commits
mailing list