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

Reply via email to