aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/MachineCopyPropagation.cpp
diff options
context:
space:
mode:
authorjeanPerier <jperier@nvidia.com>2024-10-10 15:37:19 +0200
committerGitHub <noreply@github.com>2024-10-10 15:37:19 +0200
commit480e7f0667794822f7f3a065bed73d9a2ecc2d58 (patch)
tree0139d6b9501bc26757f2dce682ceafe202526ddd /llvm/lib/CodeGen/MachineCopyPropagation.cpp
parent90149204bd08c07eb672cd5b19d782fed3d96ddc (diff)
downloadllvm-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