Author: Timm Baeder Date: 2025-08-22T19:14:48+02:00 New Revision: c11f91acbbc977ccf0162001fdc352f611a07054
URL: https://github.com/llvm/llvm-project/commit/c11f91acbbc977ccf0162001fdc352f611a07054 DIFF: https://github.com/llvm/llvm-project/commit/c11f91acbbc977ccf0162001fdc352f611a07054.diff LOG: [clang] Fix ignoring converted first arg of elementwise_fma (#154941) Fixes #154900 Added: Modified: clang/lib/Sema/SemaChecking.cpp clang/test/Sema/constant-builtins-vector.cpp Removed: ################################################################################ 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