https://github.com/tbaederr updated https://github.com/llvm/llvm-project/pull/154941
>From 34246f04879e3763025d712ba50be64fa0c743be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timm=20B=C3=A4der?= <tbae...@redhat.com> Date: Fri, 22 Aug 2025 15:10:46 +0200 Subject: [PATCH] [clang] Fix ignoring converted first arg of elementwise_fma Fixes #154900 --- clang/lib/Sema/SemaChecking.cpp | 1 + clang/test/Sema/constant-builtins-vector.cpp | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp index 1d3cd58c77dc5..6e777fb9aec8e 100644 --- a/clang/lib/Sema/SemaChecking.cpp +++ b/clang/lib/Sema/SemaChecking.cpp @@ -15955,6 +15955,7 @@ bool Sema::BuiltinElementwiseTernaryMath( return true; } + TheCall->setArg(0, Args[0]); for (int I = 1; I < 3; ++I) { if (Args[0]->getType().getCanonicalType() != Args[I]->getType().getCanonicalType()) { diff --git a/clang/test/Sema/constant-builtins-vector.cpp b/clang/test/Sema/constant-builtins-vector.cpp index 9c52a2ab20c7e..17fa95871740d 100644 --- a/clang/test/Sema/constant-builtins-vector.cpp +++ b/clang/test/Sema/constant-builtins-vector.cpp @@ -957,3 +957,7 @@ static_assert(fmaDouble1[0] == 5.0); static_assert(fmaDouble1[1] == 10.0); static_assert(fmaDouble1[2] == 17.0); static_assert(fmaDouble1[3] == 26.0); + +constexpr float fmaArray[] = {2.0f, 2.0f, 2.0f, 2.0f}; +constexpr float fmaResult = __builtin_elementwise_fma(fmaArray[1], fmaArray[2], fmaArray[3]); +static_assert(fmaResult == 6.0f, ""); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits