diff options
author | jeanPerier <jperier@nvidia.com> | 2024-10-10 15:37:19 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-10-10 15:37:19 +0200 |
commit | 480e7f0667794822f7f3a065bed73d9a2ecc2d58 (patch) | |
tree | 0139d6b9501bc26757f2dce682ceafe202526ddd /llvm/lib/CodeGen/MachineCopyPropagation.cpp | |
parent | 90149204bd08c07eb672cd5b19d782fed3d96ddc (diff) | |
download | llvm-480e7f0667794822f7f3a065bed73d9a2ecc2d58.zip llvm-480e7f0667794822f7f3a065bed73d9a2ecc2d58.tar.gz llvm-480e7f0667794822f7f3a065bed73d9a2ecc2d58.tar.bz2 |
[flang] correctly deal with bind(c) derived type result ABI (#111678)
Derived type results of BIND(C) function should be returned according
the the C ABI for returning the related C struct type.
This currently did not happen since the abstract-result pass was forcing
the Fortran ABI for all derived type results.
use the bind_c attribute that was added on call/func/dispatch in FIR to
prevent such rewrite in the abstract result pass, and update the
target-rewrite pass to deal with the struct return ABI.
So far, the target specific part of the target-rewrite is only
implemented for X86-64 according to the "System V Application Binary
Interface AMD64 v1", the other targets will hit a TODO, just like for
BIND(C), VALUE derived type arguments.
This intends to deal with
https://github.com/llvm/llvm-project/issues/102113.
Diffstat (limited to 'llvm/lib/CodeGen/MachineCopyPropagation.cpp')
0 files changed, 0 insertions, 0 deletions