[all-commits] [llvm/llvm-project] 011ba7: [flang] finish BIND(C) VALUE derived type passing ...
jeanPerier via All-commits
all-commits at lists.llvm.org
Fri Jan 12 00:33:00 PST 2024
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 011ba725070360341f5473e88ebb4c956574805f
https://github.com/llvm/llvm-project/commit/011ba725070360341f5473e88ebb4c956574805f
Author: jeanPerier <jperier at nvidia.com>
Date: 2024-01-12 (Fri, 12 Jan 2024)
Changed paths:
M flang/lib/Optimizer/CodeGen/Target.cpp
M flang/lib/Optimizer/CodeGen/TargetRewrite.cpp
A flang/test/Fir/struct-passing-x86-64-several-fields-inreg.fir
Log Message:
-----------
[flang] finish BIND(C) VALUE derived type passing ABI on X86-64 (#77742)
Derived type passed with VALUE in BIND(C) context must be passed like C
struct and LLVM is not implementing the ABI for this (it is up to the
frontends like clang).
Previous patch #75802 implemented the simple cases where the derived
type have one field, this patch implements the general case. Note that
the generated LLVM IR is compliant from a X86-64 C ABI point of view and
compatible with clang generated assembly, but that it is not guaranteed
to match the LLVM IR signatures generated by clang for the C equivalent
functions because several LLVM IR signatures may lead to the same X86-64
signature.
More information about the All-commits
mailing list