aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/CodeGen/CodeGenModule.cpp
diff options
context:
space:
mode:
authorDanilaZhebryakov <d.zhebryakov@yandex.ru>2025-09-19 01:26:12 +0300
committerGitHub <noreply@github.com>2025-09-18 15:26:12 -0700
commit324511b8dcc797a49e4b250ae8563d5c53fe734e (patch)
treed24ae52ec848423308791956491f240d9e0e7d06 /clang/lib/CodeGen/CodeGenModule.cpp
parent04c4e9da133a5f206ded35c7eddd9e2ab34926c7 (diff)
downloadllvm-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.cpp3
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: