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

Reply via email to