diff options
author | DanilaZhebryakov <d.zhebryakov@yandex.ru> | 2025-09-19 01:26:12 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-09-18 15:26:12 -0700 |
commit | 324511b8dcc797a49e4b250ae8563d5c53fe734e (patch) | |
tree | d24ae52ec848423308791956491f240d9e0e7d06 /clang/lib/CodeGen/CodeGenModule.cpp | |
parent | 04c4e9da133a5f206ded35c7eddd9e2ab34926c7 (diff) | |
download | llvm-324511b8dcc797a49e4b250ae8563d5c53fe734e.zip llvm-324511b8dcc797a49e4b250ae8563d5c53fe734e.tar.gz llvm-324511b8dcc797a49e4b250ae8563d5c53fe734e.tar.bz2 |
[PowerPC] fix float ABI selection on ppcle (#154773)
soft float ABI selection was not taking effect on little-endian powerPC
with embedded vectors (e.g. e500v2) leading to errors.
(embedded vectors use "extended" GPRs to store floating-point values,
and this caused issues with variadic arguments assuming dedicated
floating-point registers with hard-float ABI)
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.cpp')
-rw-r--r-- | clang/lib/CodeGen/CodeGenModule.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp index 0b660e3..d05092a 100644 --- a/clang/lib/CodeGen/CodeGenModule.cpp +++ b/clang/lib/CodeGen/CodeGenModule.cpp @@ -188,7 +188,8 @@ createTargetCodeGenInfo(CodeGenModule &CGM) { return createPPC32TargetCodeGenInfo(CGM, IsSoftFloat); } case llvm::Triple::ppcle: { - bool IsSoftFloat = CodeGenOpts.FloatABI == "soft"; + bool IsSoftFloat = + CodeGenOpts.FloatABI == "soft" || Target.hasFeature("spe"); return createPPC32TargetCodeGenInfo(CGM, IsSoftFloat); } case llvm::Triple::ppc64: |