https://github.com/vbvictor created 
https://github.com/llvm/llvm-project/pull/151859

Reverts llvm/llvm-project#139474 due to lit failures on `arm` platforms.

>From 858e6ae29b80ee992d60cfba199938934db2ea5f Mon Sep 17 00:00:00 2001
From: Baranov Victor <[email protected]>
Date: Sun, 3 Aug 2025 13:57:11 +0300
Subject: [PATCH] =?UTF-8?q?Revert=20"[clang-tidy]=20fix=20`bugprone-narrow?=
 =?UTF-8?q?ing-conversions`=20false=20positive=20for=20=E2=80=A6"?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This reverts commit c3902e46b748cd808fbffeea25489bb41b15a6b2.
---
 .../bugprone/NarrowingConversionsCheck.cpp    | 15 ++++---------
 .../bugprone/NarrowingConversionsCheck.h      |  2 --
 clang-tools-extra/docs/ReleaseNotes.rst       |  4 ----
 ...wing-conversions-conditional-expressions.c | 21 -------------------
 ...ng-conversions-conditional-expressions.cpp | 21 -------------------
 5 files changed, 4 insertions(+), 59 deletions(-)
 delete mode 100644 
clang-tools-extra/test/clang-tidy/checkers/bugprone/narrowing-conversions-conditional-expressions.c
 delete mode 100644 
clang-tools-extra/test/clang-tidy/checkers/bugprone/narrowing-conversions-conditional-expressions.cpp

diff --git 
a/clang-tools-extra/clang-tidy/bugprone/NarrowingConversionsCheck.cpp 
b/clang-tools-extra/clang-tidy/bugprone/NarrowingConversionsCheck.cpp
index 249c77ca0c432..53782231b6421 100644
--- a/clang-tools-extra/clang-tidy/bugprone/NarrowingConversionsCheck.cpp
+++ b/clang-tools-extra/clang-tidy/bugprone/NarrowingConversionsCheck.cpp
@@ -555,22 +555,15 @@ bool NarrowingConversionsCheck::handleConditionalOperator(
     // We have an expression like so: `output = cond ? lhs : rhs`
     // From the point of view of narrowing conversion we treat it as two
     // expressions `output = lhs` and `output = rhs`.
-    handleConditionalOperatorArgument(Context, Lhs, CO->getLHS());
-    handleConditionalOperatorArgument(Context, Lhs, CO->getRHS());
+    handleBinaryOperator(Context, CO->getLHS()->getExprLoc(), Lhs,
+                         *CO->getLHS());
+    handleBinaryOperator(Context, CO->getRHS()->getExprLoc(), Lhs,
+                         *CO->getRHS());
     return true;
   }
   return false;
 }
 
-void NarrowingConversionsCheck::handleConditionalOperatorArgument(
-    const ASTContext &Context, const Expr &Lhs, const Expr *Arg) {
-  if (const auto *ICE = llvm::dyn_cast<ImplicitCastExpr>(Arg))
-    if (!Arg->getIntegerConstantExpr(Context))
-      Arg = ICE->getSubExpr();
-
-  handleBinaryOperator(Context, Arg->getExprLoc(), Lhs, *Arg);
-}
-
 void NarrowingConversionsCheck::handleImplicitCast(
     const ASTContext &Context, const ImplicitCastExpr &Cast) {
   if (Cast.getExprLoc().isMacroID())
diff --git a/clang-tools-extra/clang-tidy/bugprone/NarrowingConversionsCheck.h 
b/clang-tools-extra/clang-tidy/bugprone/NarrowingConversionsCheck.h
index 116a8cba8d321..20403f920b925 100644
--- a/clang-tools-extra/clang-tidy/bugprone/NarrowingConversionsCheck.h
+++ b/clang-tools-extra/clang-tidy/bugprone/NarrowingConversionsCheck.h
@@ -85,8 +85,6 @@ class NarrowingConversionsCheck : public ClangTidyCheck {
   bool handleConditionalOperator(const ASTContext &Context, const Expr &Lhs,
                                  const Expr &Rhs);
 
-  void handleConditionalOperatorArgument(const ASTContext &Context,
-                                         const Expr &Lhs, const Expr *Arg);
   void handleImplicitCast(const ASTContext &Context,
                           const ImplicitCastExpr &Cast);
 
diff --git a/clang-tools-extra/docs/ReleaseNotes.rst 
b/clang-tools-extra/docs/ReleaseNotes.rst
index b9261f61c8789..ef0e804962927 100644
--- a/clang-tools-extra/docs/ReleaseNotes.rst
+++ b/clang-tools-extra/docs/ReleaseNotes.rst
@@ -134,10 +134,6 @@ Changes in existing checks
   <clang-tidy/checks/bugprone/infinite-loop>` check by adding detection for
   variables introduced by structured bindings.
 
-- Improved :doc:`bugprone-narrowing-conversions
-  <clang-tidy/checks/bugprone/narrowing-conversions>` check by fixing
-  false positive from analysis of a conditional expression in C.
-
 - Improved :doc:`bugprone-reserved-identifier
   <clang-tidy/checks/bugprone/reserved-identifier>` check by ignoring
   declarations in system headers.
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/bugprone/narrowing-conversions-conditional-expressions.c
 
b/clang-tools-extra/test/clang-tidy/checkers/bugprone/narrowing-conversions-conditional-expressions.c
deleted file mode 100644
index 0ea83bc8559af..0000000000000
--- 
a/clang-tools-extra/test/clang-tidy/checkers/bugprone/narrowing-conversions-conditional-expressions.c
+++ /dev/null
@@ -1,21 +0,0 @@
-// RUN: %check_clang_tidy %s bugprone-narrowing-conversions %t -- --
-
-char test_char(int cond, char c) {
-       char ret = cond > 0 ? ':' : c;
-       return ret;
-}
-
-short test_short(int cond, short s) {
-       short ret = cond > 0 ? ':' : s;
-       return ret;
-}
-
-int test_int(int cond, int i) {
-       int ret = cond > 0 ? ':' : i;
-       return ret;
-}
-
-void test(int cond, int i) {
-  char x = cond > 0 ? ':' : i;
-  // CHECK-MESSAGES: :[[@LINE-1]]:29: warning: narrowing conversion from 'int' 
to signed type 'char' is implementation-defined [bugprone-narrowing-conversions]
-}
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/bugprone/narrowing-conversions-conditional-expressions.cpp
 
b/clang-tools-extra/test/clang-tidy/checkers/bugprone/narrowing-conversions-conditional-expressions.cpp
deleted file mode 100644
index 0ea83bc8559af..0000000000000
--- 
a/clang-tools-extra/test/clang-tidy/checkers/bugprone/narrowing-conversions-conditional-expressions.cpp
+++ /dev/null
@@ -1,21 +0,0 @@
-// RUN: %check_clang_tidy %s bugprone-narrowing-conversions %t -- --
-
-char test_char(int cond, char c) {
-       char ret = cond > 0 ? ':' : c;
-       return ret;
-}
-
-short test_short(int cond, short s) {
-       short ret = cond > 0 ? ':' : s;
-       return ret;
-}
-
-int test_int(int cond, int i) {
-       int ret = cond > 0 ? ':' : i;
-       return ret;
-}
-
-void test(int cond, int i) {
-  char x = cond > 0 ? ':' : i;
-  // CHECK-MESSAGES: :[[@LINE-1]]:29: warning: narrowing conversion from 'int' 
to signed type 'char' is implementation-defined [bugprone-narrowing-conversions]
-}

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to