https://github.com/vabridgers updated 
https://github.com/llvm/llvm-project/pull/119543

>From 952b30598c7583f3f5508e5fda59d91d64d5d163 Mon Sep 17 00:00:00 2001
From: Vince Bridgers <vince.a.bridg...@gmail.com>
Date: Wed, 11 Dec 2024 12:11:31 +0100
Subject: [PATCH 1/3] [analyzer] Split alpha core Identical Expression tests

Split the remnant test from PR #114715, "Remove alpha.core.IdenticalExpr
Checker" into seperate tests for misc-redundant-expression and
bugprone-branch-clone per review comment requests.
---
 .../bugprone/bugprone-branch-clone.cpp        | 772 ++++++++++++++++++
 .../misc-redundant-expression.cpp}            | 416 ----------
 2 files changed, 772 insertions(+), 416 deletions(-)
 create mode 100644 
clang-tools-extra/test/clang-tidy/checkers/bugprone/bugprone-branch-clone.cpp
 rename 
clang-tools-extra/test/clang-tidy/checkers/{bugprone/alpha-core-identicalexpr.cpp
 => misc/misc-redundant-expression.cpp} (69%)

diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/bugprone/bugprone-branch-clone.cpp 
b/clang-tools-extra/test/clang-tidy/checkers/bugprone/bugprone-branch-clone.cpp
new file mode 100644
index 00000000000000..fa19037cc437e3
--- /dev/null
+++ 
b/clang-tools-extra/test/clang-tidy/checkers/bugprone/bugprone-branch-clone.cpp
@@ -0,0 +1,772 @@
+// RUN: clang-tidy %s -checks="-*,bugprone-branch-clone" -- 2>&1 | FileCheck 
%s --check-prefix=CHECK-MESSAGES-BUGPRONEBRANCH
+
+/* Only one expected warning per function allowed at the very end. */
+
+int func(void)
+{
+  return 0;
+}
+
+int func2(void)
+{
+  return 0;
+}
+
+int funcParam(int a)
+{
+  return 0;
+}
+
+/* '!=' operator*/
+
+
+/* '!=' with int pointer */
+
+int checkNotEqualIntPointerLiteralCompare1(void) {
+  int* p = 0;
+  return (p != 0); // no warning
+}
+
+int checkNotEqualIntPointerLiteralCompare2(void) {
+  return (6 != 7); // no warning
+}
+
+int checkNotEqualIntPointerDeclCompare1(void) {
+  int k = 3;
+  int* f = &k;
+  int* g = &k;
+  return (f != g); // no warning
+}
+
+int checkNotEqualCastIntPointerDeclCompare11(void) {
+  int k = 7;
+  int* f = &k;
+  return ((int*)f != (int*)f);
+// CHECK-MESSAGES-IDENTEXPR: :[[@LINE-1]]:19: warning: both sides of operator 
are equivalent [misc-redundant-expression]
+}
+int checkNotEqualCastIntPointerDeclCompare12(void) {
+  int k = 7;
+  int* f = &k;
+  return ((int*)((char*)f) != (int*)f); // no warning
+}
+int checkNotEqualBinaryOpIntPointerCompare1(void) {
+  int k = 7;
+  int res;
+  int* f= &k;
+  res = (f + 4 != f + 4);
+// CHECK-MESSAGES-IDENTEXPR: :[[@LINE-1]]:16: warning: both sides of operator 
are equivalent [misc-redundant-expression]
+  return (0);
+}
+int checkNotEqualBinaryOpIntPointerCompare2(void) {
+  int k = 7;
+  int* f = &k;
+  int* g = &k;
+  return (f + 4 != g + 4); // no warning
+}
+
+
+int checkNotEqualBinaryOpIntPointerCompare3(void) {
+  int k = 7;
+  int res;
+  int* f= &k;
+  res = ((int*)f + 4 != (int*)f + 4);
+// CHECK-MESSAGES-IDENTEXPR: :[[@LINE-1]]:22: warning: both sides of operator 
are equivalent [misc-redundant-expression]
+  return (0);
+}
+int checkNotEqualBinaryOpIntPointerCompare4(void) {
+  int k = 7;
+  int res;
+  int* f= &k;
+  res = ((int*)f + 4 != (int*)((char*)f) + 4);  // no warning
+  return (0);
+}
+
+int checkNotEqualNestedBinaryOpIntPointerCompare1(void) {
+  int res;
+  int k = 7;
+  int t= 1;
+  int* u= &k+2;
+  int* f= &k+3;
+  res = ((f + (3)*t) != (f + (3)*t));
+// CHECK-MESSAGES-IDENTEXPR: :[[@LINE-1]]:22: warning: both sides of operator 
are equivalent [misc-redundant-expression]
+  return (0);
+}
+
+int checkNotEqualNestedBinaryOpIntPointerCompare2(void) {
+  int res;
+  int k = 7;
+  int t= 1;
+  int* u= &k+2;
+  int* f= &k+3;
+  res = (((3)*t + f) != (f + (3)*t));  // no warning
+  return (0);
+}
+/*   end '!=' int*          */
+
+/* '!=' with function*/
+
+int checkNotEqualSameFunction() {
+  unsigned a = 0;
+  unsigned b = 1;
+  int res = (a+func() != a+func());  // no warning
+  return (0);
+}
+
+int checkNotEqualDifferentFunction() {
+  unsigned a = 0;
+  unsigned b = 1;
+  int res = (a+func() != a+func2());  // no warning
+  return (0);
+}
+
+int checkNotEqualSameFunctionSameParam() {
+  unsigned a = 0;
+  unsigned b = 1;
+  int res = (a+funcParam(a) != a+funcParam(a));  // no warning
+  return (0);
+}
+
+int checkNotEqualSameFunctionDifferentParam() {
+  unsigned a = 0;
+  unsigned b = 1;
+  int res = (a+funcParam(a) != a+funcParam(b));  // no warning
+  return (0);
+}
+
+/*   end '!=' with function*/
+
+/*   end '!=' */
+
+
+/* Checking use of identical expressions in conditional operator*/
+
+unsigned test_unsigned(unsigned a) {
+  unsigned b = 1;
+  a = a > 5 ? b : b;
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:13: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
+  return a;
+}
+
+void test_signed() {
+  int a = 0;
+  a = a > 5 ? a : a;
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:13: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
+}
+
+void test_bool(bool a) {
+  a = a > 0 ? a : a;
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:13: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
+}
+
+void test_float() {
+  float a = 0;
+  float b = 0;
+  a = a > 5 ? a : a;
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:13: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
+}
+
+const char *test_string() {
+  float a = 0;
+  return a > 5 ? "abc" : "abc";
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:16: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
+}
+
+void test_unsigned_expr() {
+  unsigned a = 0;
+  unsigned b = 0;
+  a = a > 5 ? a+b : a+b;
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:13: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
+}
+
+void test_signed_expr() {
+  int a = 0;
+  int b = 1;
+  a = a > 5 ? a+b : a+b;
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:13: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
+}
+
+void test_bool_expr(bool a) {
+  bool b = 0;
+  a = a > 0 ? a&&b : a&&b;
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:13: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
+}
+
+void test_unsigned_expr_negative() {
+  unsigned a = 0;
+  unsigned b = 0;
+  a = a > 5 ? a+b : b+a; // no warning
+}
+
+void test_signed_expr_negative() {
+  int a = 0;
+  int b = 1;
+  a = a > 5 ? b+a : a+b; // no warning
+}
+
+void test_bool_expr_negative(bool a) {
+  bool b = 0;
+  a = a > 0 ? a&&b : b&&a; // no warning
+}
+
+void test_float_expr_positive() {
+  float a = 0;
+  float b = 0;
+  a = a > 5 ? a+b : a+b;
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:13: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
+}
+
+void test_expr_positive_func() {
+  unsigned a = 0;
+  unsigned b = 1;
+  a = a > 5 ? a+func() : a+func();
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:13: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
+}
+
+void test_expr_negative_func() {
+  unsigned a = 0;
+  unsigned b = 1;
+  a = a > 5 ? a+func() : a+func2(); // no warning
+}
+
+void test_expr_positive_funcParam() {
+  unsigned a = 0;
+  unsigned b = 1;
+  a = a > 5 ? a+funcParam(b) : a+funcParam(b);
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:13: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
+}
+
+void test_expr_negative_funcParam() {
+  unsigned a = 0;
+  unsigned b = 1;
+  a = a > 5 ? a+funcParam(a) : a+funcParam(b); // no warning
+}
+
+void test_expr_positive_inc() {
+  unsigned a = 0;
+  unsigned b = 1;
+  a = a > 5 ? a++ : a++;
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:13: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
+}
+
+void test_expr_negative_inc() {
+  unsigned a = 0;
+  unsigned b = 1;
+  a = a > 5 ? a++ : b++; // no warning
+}
+
+void test_expr_positive_assign() {
+  unsigned a = 0;
+  unsigned b = 1;
+  a = a > 5 ? a=1 : a=1;
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:13: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
+}
+
+void test_expr_negative_assign() {
+  unsigned a = 0;
+  unsigned b = 1;
+  a = a > 5 ? a=1 : a=2; // no warning
+}
+
+void test_signed_nested_expr() {
+  int a = 0;
+  int b = 1;
+  int c = 3;
+  a = a > 5 ? a+b+(c+a)*(a + b*(c+a)) : a+b+(c+a)*(a + b*(c+a));
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:13: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
+}
+
+void test_signed_nested_expr_negative() {
+  int a = 0;
+  int b = 1;
+  int c = 3;
+  a = a > 5 ? a+b+(c+a)*(a + b*(c+a)) : a+b+(c+a)*(a + b*(a+c)); // no warning
+}
+
+void test_signed_nested_cond_expr_negative() {
+  int a = 0;
+  int b = 1;
+  int c = 3;
+  a = a > 5 ? (b > 5 ? 1 : 4) : (b > 5 ? 2 : 4); // no warning
+}
+
+void test_signed_nested_cond_expr() {
+  int a = 0;
+  int b = 1;
+  int c = 3;
+  a = a > 5 ? (b > 5 ? 1 : 4) : (b > 5 ? 4 : 4);
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:40: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
+}
+
+void test_identical_branches1(bool b) {
+  int i = 0;
+  if (b) {
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:3: warning: if with identical 
then and else branches [bugprone-branch-clone]
+    ++i;
+  } else {
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: else branch starts here
+    ++i;
+  }
+}
+
+void test_identical_branches2(bool b) {
+  int i = 0;
+  if (b) {
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:3: warning: if with identical 
then and else branches [bugprone-branch-clone]
+    ++i;
+  } else
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: else branch starts here
+    ++i;
+}
+
+void test_identical_branches3(bool b) {
+  int i = 0;
+  if (b) { // no warning
+    ++i;
+  } else {
+    i++;
+  }
+}
+
+void test_identical_branches4(bool b) {
+  int i = 0;
+  if (b) {
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:3: warning: if with identical 
then and else branches [bugprone-branch-clone]
+  } else {
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: else branch starts here
+  }
+}
+
+void test_identical_branches_break(bool b) {
+  while (true) {
+    if (b)
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: warning: if with identical 
then and else branches [bugprone-branch-clone]
+      break;
+    else
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: else branch starts here
+      break;
+  }
+}
+
+void test_identical_branches_continue(bool b) {
+  while (true) {
+    if (b)
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: warning: if with identical 
then and else branches [bugprone-branch-clone]
+      continue;
+    else
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: else branch starts here
+      continue;
+  }
+}
+
+void test_identical_branches_func(bool b) {
+  if (b)
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:3: warning: if with identical 
then and else branches [bugprone-branch-clone]
+    func();
+  else
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:3: note: else branch starts here
+    func();
+}
+
+void test_identical_branches_func_arguments(bool b) {
+  if (b) // no-warning
+    funcParam(1);
+  else
+    funcParam(2);
+}
+
+void test_identical_branches_cast1(bool b) {
+  long v = -7;
+  if (b) // no-warning
+    v = (signed int) v;
+  else
+    v = (unsigned int) v;
+}
+
+void test_identical_branches_cast2(bool b) {
+  long v = -7;
+  if (b)
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:3: warning: if with identical 
then and else branches [bugprone-branch-clone]
+    v = (signed int) v;
+  else
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:3: note: else branch starts here
+    v = (signed int) v;
+}
+
+int test_identical_branches_return_int(bool b) {
+  int i = 0;
+  if (b) {
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:3: warning: if with identical 
then and else branches [bugprone-branch-clone]
+    i++;
+    return i;
+  } else {
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: else branch starts here
+    i++;
+    return i;
+  }
+}
+
+int test_identical_branches_return_func(bool b) {
+  if (b) {
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:3: warning: if with identical 
then and else branches [bugprone-branch-clone]
+    return func();
+  } else {
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: else branch starts here
+    return func();
+  }
+}
+
+void test_identical_branches_for(bool b) {
+  int i;
+  int j;
+  if (b) {
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:3: warning: if with identical 
then and else branches [bugprone-branch-clone]
+    for (i = 0, j = 0; i < 10; i++)
+      j += 4;
+  } else {
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: else branch starts here
+    for (i = 0, j = 0; i < 10; i++)
+      j += 4;
+  }
+}
+
+void test_identical_branches_while(bool b) {
+  int i = 10;
+  if (b) {
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:3: warning: if with identical 
then and else branches [bugprone-branch-clone]
+    while (func())
+      i--;
+  } else {
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: else branch starts here
+    while (func())
+      i--;
+  }
+}
+
+void test_identical_branches_while_2(bool b) {
+  int i = 10;
+  if (b) { // no-warning
+    while (func())
+      i--;
+  } else {
+    while (func())
+      i++;
+  }
+}
+
+void test_identical_branches_do_while(bool b) {
+  int i = 10;
+  if (b) {
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:3: warning: if with identical 
then and else branches [bugprone-branch-clone]
+    do {
+      i--;
+    } while (func());
+  } else {
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: else branch starts here
+    do {
+      i--;
+    } while (func());
+  }
+}
+
+void test_identical_branches_if(bool b, int i) {
+  if (b) {
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:3: warning: if with identical 
then and else branches [bugprone-branch-clone]
+    if (i < 5)
+      i += 10;
+  } else {
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: else branch starts here
+    if (i < 5)
+      i += 10;
+  }
+}
+
+void test_identical_bitwise1() {
+  int a = 5 | 5; // no-warning
+}
+
+void test_identical_bitwise2() {
+  int a = 5;
+  int b = a | a; // no-warning
+}
+
+void test_identical_bitwise3() {
+  int a = 5;
+  int b = (a | a); // no-warning
+}
+
+void test_identical_bitwise4() {
+  int a = 4;
+  int b = a | 4; // no-warning
+}
+
+void test_identical_bitwise5() {
+  int a = 4;
+  int b = 4;
+  int c = a | b; // no-warning
+}
+
+void test_identical_bitwise6() {
+  int a = 5;
+  int b = a | 4 | a;
+}
+
+void test_identical_bitwise7() {
+  int a = 5;
+  int b = func() | func();
+}
+
+void test_identical_logical1(int a) {
+  if (a == 4 && a == 4)
+    ;
+}
+
+void test_identical_logical2(int a) {
+  if (a == 4 || a == 5 || a == 4)
+    ;
+}
+
+void test_identical_logical3(int a) {
+  if (a == 4 || a == 5 || a == 6) // no-warning
+    ;
+}
+
+void test_identical_logical4(int a) {
+  if (a == func() || a == func()) // no-warning
+    ;
+}
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wlogical-op-parentheses"
+void test_identical_logical5(int x, int y) {
+  if (x == 4 && y == 5 || x == 4 && y == 6) // no-warning
+    ;
+}
+
+void test_identical_logical6(int x, int y) {
+  if (x == 4 && y == 5 || x == 4 && y == 5)
+    ;
+}
+
+void test_identical_logical7(int x, int y) {
+  // FIXME: We should warn here
+  if (x == 4 && y == 5 || x == 4)
+    ;
+}
+
+void test_identical_logical8(int x, int y) {
+  // FIXME: We should warn here
+  if (x == 4 || y == 5 && x == 4)
+    ;
+}
+
+void test_identical_logical9(int x, int y) {
+  // FIXME: We should warn here
+  if (x == 4 || x == 4 && y == 5)
+    ;
+}
+#pragma clang diagnostic pop
+
+void test_warn_chained_if_stmts_1(int x) {
+  if (x == 1)
+    ;
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: warning: repeated branch 
body in conditional chain [bugprone-branch-clone]
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-2]]:6: note: end of the original
+  else if (x == 1)
+    ;
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 1 starts here
+}
+
+void test_warn_chained_if_stmts_2(int x) {
+  if (x == 1)
+    ;
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: warning: repeated branch 
body in conditional chain [bugprone-branch-clone]
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-2]]:6: note: end of the original
+  else if (x == 1)
+    ;
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 1 starts here
+  else if (x == 1)
+    ;
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 2 starts here
+}
+
+void test_warn_chained_if_stmts_3(int x) {
+  if (x == 1)
+    ;
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: warning: repeated branch 
body in conditional chain [bugprone-branch-clone]
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-2]]:6: note: end of the original
+  else if (x == 2)
+    ;
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 1 starts here
+  else if (x == 1)
+    ;
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 2 starts here
+}
+
+void test_warn_chained_if_stmts_4(int x) {
+  if (x == 1)
+    ;
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: warning: repeated branch 
body in conditional chain [bugprone-branch-clone]
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-2]]:6: note: end of the original
+  else if (func())
+    ;
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 1 starts here
+  else if (x == 1)
+    ;
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 2 starts here
+}
+
+void test_warn_chained_if_stmts_5(int x) {
+  if (x & 1)
+    ;
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: warning: repeated branch 
body in conditional chain [bugprone-branch-clone]
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-2]]:6: note: end of the original
+  else if (x & 1)
+    ;
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 1 starts here
+}
+
+void test_warn_chained_if_stmts_6(int x) {
+  if (x == 1)
+    ;
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: warning: repeated branch 
body in conditional chain [bugprone-branch-clone]
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-2]]:6: note: end of the original
+  else if (x == 2)
+    ;
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 1 starts here
+  else if (x == 2)
+    ;
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 2 starts here
+  else if (x == 3)
+    ;
+}
+
+void test_warn_chained_if_stmts_7(int x) {
+  if (x == 1)
+    ;
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: warning: repeated branch 
body in conditional chain [bugprone-branch-clone]
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-2]]:6: note: end of the original
+  else if (x == 2)
+    ;
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 1 starts here
+  else if (x == 3)
+    ;
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 2 starts here
+  else if (x == 2)
+    ;
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 3 starts here
+  else if (x == 5)
+    ;
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 4 starts here
+}
+
+void test_warn_chained_if_stmts_8(int x) {
+  if (x == 1)
+    ;
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: warning: repeated branch 
body in conditional chain [bugprone-branch-clone]
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-2]]:6: note: end of the original
+  else if (x == 2)
+    ;
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 1 starts here
+  else if (x == 3)
+    ;
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 2 starts here
+  else if (x == 2)
+    ;
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 3 starts here
+  else if (x == 5)
+    ;
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 4 starts here
+  else if (x == 3)
+    ;
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 5 starts here
+  else if (x == 7)
+    ;
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 6 starts here
+}
+
+void test_nowarn_chained_if_stmts_1(int x) {
+  if (func())
+    ;
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: warning: repeated branch 
body in conditional chain [bugprone-branch-clone]
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-2]]:6: note: end of the original
+  else if (func())
+    ;
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 1 starts here
+}
+
+void test_nowarn_chained_if_stmts_2(int x) {
+  if (func())
+    ;
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: warning: repeated branch 
body in conditional chain [bugprone-branch-clone]
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-2]]:6: note: end of the original
+  else if (x == 1)
+    ;
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 1 starts here
+  else if (func())
+    ;
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 2 starts here
+}
+
+void test_nowarn_chained_if_stmts_3(int x) {
+  if (x++)
+    ;
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: warning: repeated branch 
body in conditional chain [bugprone-branch-clone]
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-2]]:6: note: end of the original
+  else if (x++)
+    ;
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 1 starts here
+}
+
+void test_warn_wchar() {
+  const wchar_t * a = 0 ? L"Warning" : L"Warning";
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:25: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
+}
+void test_nowarn_wchar() {
+  const wchar_t * a = 0 ? L"No" : L"Warning";
+}
+
+void test_nowarn_long() {
+  int a = 0, b = 0;
+  long c;
+  if (0) {
+    b -= a;
+    c = 0;
+  } else {
+    b -= a;
+    c = 0LL;
+  }
+}
+
+// Identical inner conditions
+
+void test_warn_inner_if_1(int x) {
+  if (x == 1) {
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:3: warning: if with identical 
inner if statement [bugprone-branch-clone]
+    if (x == 1)
+// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: inner if starts here
+      ;
+  }
+
+  // FIXME: Should warn here. The warning is currently not emitted because 
there
+  // is code between the conditions.
+  if (x == 1) {
+    int y = x;
+    if (x == 1)
+      ;
+  }
+}
+
+void test_nowarn_inner_if_1(int x) {
+  // Don't warn when condition has side effects.
+  if (x++ == 1) {
+    if (x++ == 1)
+      ;
+  }
+
+  // Don't warn when x is changed before inner condition.
+  if (x < 10) {
+    x++;
+    if (x < 10)
+      ;
+  }
+}
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/bugprone/alpha-core-identicalexpr.cpp
 b/clang-tools-extra/test/clang-tidy/checkers/misc/misc-redundant-expression.cpp
similarity index 69%
rename from 
clang-tools-extra/test/clang-tidy/checkers/bugprone/alpha-core-identicalexpr.cpp
rename to 
clang-tools-extra/test/clang-tidy/checkers/misc/misc-redundant-expression.cpp
index 8eff3ebc948dea..db07118c8c9cfa 100644
--- 
a/clang-tools-extra/test/clang-tidy/checkers/bugprone/alpha-core-identicalexpr.cpp
+++ 
b/clang-tools-extra/test/clang-tidy/checkers/misc/misc-redundant-expression.cpp
@@ -1,5 +1,4 @@
 // RUN: clang-tidy %s -checks="-*,misc-redundant-expression" -- 2>&1 | 
FileCheck %s --check-prefix=CHECK-MESSAGES-IDENTEXPR
-// RUN: clang-tidy %s -checks="-*,bugprone-branch-clone" -- 2>&1 | FileCheck 
%s --check-prefix=CHECK-MESSAGES-BUGPRONEBRANCH
 
 /* Only one expected warning per function allowed at the very end. */
 
@@ -1066,7 +1065,6 @@ unsigned test_unsigned(unsigned a) {
   unsigned b = 1;
   a = a > 5 ? b : b;
 // CHECK-MESSAGES-IDENTEXPR: :[[@LINE-1]]:17: warning: 'true' and 'false' 
expressions are equivalent [misc-redundant-expression]
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-2]]:13: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
   return a;
 }
 
@@ -1074,13 +1072,11 @@ void test_signed() {
   int a = 0;
   a = a > 5 ? a : a;
 // CHECK-MESSAGES-IDENTEXPR: :[[@LINE-1]]:17: warning: 'true' and 'false' 
expressions are equivalent [misc-redundant-expression]
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-2]]:13: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
 }
 
 void test_bool(bool a) {
   a = a > 0 ? a : a;
 // CHECK-MESSAGES-IDENTEXPR: :[[@LINE-1]]:17: warning: 'true' and 'false' 
expressions are equivalent [misc-redundant-expression]
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-2]]:13: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
 }
 
 void test_float() {
@@ -1088,14 +1084,12 @@ void test_float() {
   float b = 0;
   a = a > 5 ? a : a;
 // CHECK-MESSAGES-IDENTEXPR: :[[@LINE-1]]:17: warning: 'true' and 'false' 
expressions are equivalent [misc-redundant-expression]
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-2]]:13: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
 }
 
 const char *test_string() {
   float a = 0;
   return a > 5 ? "abc" : "abc";
 // CHECK-MESSAGES-IDENTEXPR: :[[@LINE-1]]:24: warning: 'true' and 'false' 
expressions are equivalent [misc-redundant-expression]
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-2]]:16: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
 }
 
 void test_unsigned_expr() {
@@ -1103,7 +1097,6 @@ void test_unsigned_expr() {
   unsigned b = 0;
   a = a > 5 ? a+b : a+b;
 // CHECK-MESSAGES-IDENTEXPR: :[[@LINE-1]]:19: warning: 'true' and 'false' 
expressions are equivalent [misc-redundant-expression]
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-2]]:13: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
 }
 
 void test_signed_expr() {
@@ -1111,14 +1104,12 @@ void test_signed_expr() {
   int b = 1;
   a = a > 5 ? a+b : a+b;
 // CHECK-MESSAGES-IDENTEXPR: :[[@LINE-1]]:19: warning: 'true' and 'false' 
expressions are equivalent [misc-redundant-expression]
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-2]]:13: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
 }
 
 void test_bool_expr(bool a) {
   bool b = 0;
   a = a > 0 ? a&&b : a&&b;
 // CHECK-MESSAGES-IDENTEXPR: :[[@LINE-1]]:20: warning: 'true' and 'false' 
expressions are equivalent [misc-redundant-expression]
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-2]]:13: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
 }
 
 void test_unsigned_expr_negative() {
@@ -1143,7 +1134,6 @@ void test_float_expr_positive() {
   float b = 0;
   a = a > 5 ? a+b : a+b;
 // CHECK-MESSAGES-IDENTEXPR: :[[@LINE-1]]:19: warning: 'true' and 'false' 
expressions are equivalent [misc-redundant-expression]
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-2]]:13: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
 }
 
 void test_expr_positive_func() {
@@ -1151,7 +1141,6 @@ void test_expr_positive_func() {
   unsigned b = 1;
   a = a > 5 ? a+func() : a+func();
 // CHECK-MESSAGES-IDENTEXPR: :[[@LINE-1]]:24: warning: 'true' and 'false' 
expressions are equivalent [misc-redundant-expression]
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-2]]:13: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
 }
 
 void test_expr_negative_func() {
@@ -1165,7 +1154,6 @@ void test_expr_positive_funcParam() {
   unsigned b = 1;
   a = a > 5 ? a+funcParam(b) : a+funcParam(b);
 // CHECK-MESSAGES-IDENTEXPR: :[[@LINE-1]]:30: warning: 'true' and 'false' 
expressions are equivalent [misc-redundant-expression]
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-2]]:13: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
 }
 
 void test_expr_negative_funcParam() {
@@ -1174,26 +1162,12 @@ void test_expr_negative_funcParam() {
   a = a > 5 ? a+funcParam(a) : a+funcParam(b); // no warning
 }
 
-void test_expr_positive_inc() {
-  unsigned a = 0;
-  unsigned b = 1;
-  a = a > 5 ? a++ : a++;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:13: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
-}
-
 void test_expr_negative_inc() {
   unsigned a = 0;
   unsigned b = 1;
   a = a > 5 ? a++ : b++; // no warning
 }
 
-void test_expr_positive_assign() {
-  unsigned a = 0;
-  unsigned b = 1;
-  a = a > 5 ? a=1 : a=1;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:13: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
-}
-
 void test_expr_negative_assign() {
   unsigned a = 0;
   unsigned b = 1;
@@ -1206,7 +1180,6 @@ void test_signed_nested_expr() {
   int c = 3;
   a = a > 5 ? a+b+(c+a)*(a + b*(c+a)) : a+b+(c+a)*(a + b*(c+a));
 // CHECK-MESSAGES-IDENTEXPR: :[[@LINE-1]]:39: warning: 'true' and 'false' 
expressions are equivalent [misc-redundant-expression]
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-2]]:13: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
 }
 
 void test_signed_nested_expr_negative() {
@@ -1229,190 +1202,6 @@ void test_signed_nested_cond_expr() {
   int c = 3;
   a = a > 5 ? (b > 5 ? 1 : 4) : (b > 5 ? 4 : 4);
 // CHECK-MESSAGES-IDENTEXPR: :[[@LINE-1]]:44: warning: 'true' and 'false' 
expressions are equivalent [misc-redundant-expression]
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-2]]:40: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
-}
-
-void test_identical_branches1(bool b) {
-  int i = 0;
-  if (b) {
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:3: warning: if with identical 
then and else branches [bugprone-branch-clone]
-    ++i;
-  } else {
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: else branch starts here
-    ++i;
-  }
-}
-
-void test_identical_branches2(bool b) {
-  int i = 0;
-  if (b) {
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:3: warning: if with identical 
then and else branches [bugprone-branch-clone]
-    ++i;
-  } else
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: else branch starts here
-    ++i;
-}
-
-void test_identical_branches3(bool b) {
-  int i = 0;
-  if (b) { // no warning
-    ++i;
-  } else {
-    i++;
-  }
-}
-
-void test_identical_branches4(bool b) {
-  int i = 0;
-  if (b) {
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:3: warning: if with identical 
then and else branches [bugprone-branch-clone]
-  } else {
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: else branch starts here
-  }
-}
-
-void test_identical_branches_break(bool b) {
-  while (true) {
-    if (b)
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: warning: if with identical 
then and else branches [bugprone-branch-clone]
-      break;
-    else
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: else branch starts here
-      break;
-  }
-}
-
-void test_identical_branches_continue(bool b) {
-  while (true) {
-    if (b)
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: warning: if with identical 
then and else branches [bugprone-branch-clone]
-      continue;
-    else
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: else branch starts here
-      continue;
-  }
-}
-
-void test_identical_branches_func(bool b) {
-  if (b)
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:3: warning: if with identical 
then and else branches [bugprone-branch-clone]
-    func();
-  else
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:3: note: else branch starts here
-    func();
-}
-
-void test_identical_branches_func_arguments(bool b) {
-  if (b) // no-warning
-    funcParam(1);
-  else
-    funcParam(2);
-}
-
-void test_identical_branches_cast1(bool b) {
-  long v = -7;
-  if (b) // no-warning
-    v = (signed int) v;
-  else
-    v = (unsigned int) v;
-}
-
-void test_identical_branches_cast2(bool b) {
-  long v = -7;
-  if (b)
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:3: warning: if with identical 
then and else branches [bugprone-branch-clone]
-    v = (signed int) v;
-  else
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:3: note: else branch starts here
-    v = (signed int) v;
-}
-
-int test_identical_branches_return_int(bool b) {
-  int i = 0;
-  if (b) {
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:3: warning: if with identical 
then and else branches [bugprone-branch-clone]
-    i++;
-    return i;
-  } else {
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: else branch starts here
-    i++;
-    return i;
-  }
-}
-
-int test_identical_branches_return_func(bool b) {
-  if (b) {
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:3: warning: if with identical 
then and else branches [bugprone-branch-clone]
-    return func();
-  } else {
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: else branch starts here
-    return func();
-  }
-}
-
-void test_identical_branches_for(bool b) {
-  int i;
-  int j;
-  if (b) {
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:3: warning: if with identical 
then and else branches [bugprone-branch-clone]
-    for (i = 0, j = 0; i < 10; i++)
-      j += 4;
-  } else {
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: else branch starts here
-    for (i = 0, j = 0; i < 10; i++)
-      j += 4;
-  }
-}
-
-void test_identical_branches_while(bool b) {
-  int i = 10;
-  if (b) {
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:3: warning: if with identical 
then and else branches [bugprone-branch-clone]
-    while (func())
-      i--;
-  } else {
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: else branch starts here
-    while (func())
-      i--;
-  }
-}
-
-void test_identical_branches_while_2(bool b) {
-  int i = 10;
-  if (b) { // no-warning
-    while (func())
-      i--;
-  } else {
-    while (func())
-      i++;
-  }
-}
-
-void test_identical_branches_do_while(bool b) {
-  int i = 10;
-  if (b) {
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:3: warning: if with identical 
then and else branches [bugprone-branch-clone]
-    do {
-      i--;
-    } while (func());
-  } else {
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: else branch starts here
-    do {
-      i--;
-    } while (func());
-  }
-}
-
-void test_identical_branches_if(bool b, int i) {
-  if (b) {
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:3: warning: if with identical 
then and else branches [bugprone-branch-clone]
-    if (i < 5)
-      i += 10;
-  } else {
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: else branch starts here
-    if (i < 5)
-      i += 10;
-  }
 }
 
 void test_identical_bitwise1() {
@@ -1508,208 +1297,3 @@ void test_identical_logical9(int x, int y) {
     ;
 }
 #pragma clang diagnostic pop
-
-void test_warn_chained_if_stmts_1(int x) {
-  if (x == 1)
-    ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: warning: repeated branch 
body in conditional chain [bugprone-branch-clone]
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-2]]:6: note: end of the original
-  else if (x == 1)
-    ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 1 starts here
-}
-
-void test_warn_chained_if_stmts_2(int x) {
-  if (x == 1)
-    ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: warning: repeated branch 
body in conditional chain [bugprone-branch-clone]
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-2]]:6: note: end of the original
-  else if (x == 1)
-    ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 1 starts here
-  else if (x == 1)
-    ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 2 starts here
-}
-
-void test_warn_chained_if_stmts_3(int x) {
-  if (x == 1)
-    ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: warning: repeated branch 
body in conditional chain [bugprone-branch-clone]
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-2]]:6: note: end of the original
-  else if (x == 2)
-    ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 1 starts here
-  else if (x == 1)
-    ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 2 starts here
-}
-
-void test_warn_chained_if_stmts_4(int x) {
-  if (x == 1)
-    ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: warning: repeated branch 
body in conditional chain [bugprone-branch-clone]
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-2]]:6: note: end of the original
-  else if (func())
-    ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 1 starts here
-  else if (x == 1)
-    ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 2 starts here
-}
-
-void test_warn_chained_if_stmts_5(int x) {
-  if (x & 1)
-    ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: warning: repeated branch 
body in conditional chain [bugprone-branch-clone]
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-2]]:6: note: end of the original
-  else if (x & 1)
-    ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 1 starts here
-}
-
-void test_warn_chained_if_stmts_6(int x) {
-  if (x == 1)
-    ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: warning: repeated branch 
body in conditional chain [bugprone-branch-clone]
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-2]]:6: note: end of the original
-  else if (x == 2)
-    ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 1 starts here
-  else if (x == 2)
-    ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 2 starts here
-  else if (x == 3)
-    ;
-}
-
-void test_warn_chained_if_stmts_7(int x) {
-  if (x == 1)
-    ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: warning: repeated branch 
body in conditional chain [bugprone-branch-clone]
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-2]]:6: note: end of the original
-  else if (x == 2)
-    ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 1 starts here
-  else if (x == 3)
-    ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 2 starts here
-  else if (x == 2)
-    ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 3 starts here
-  else if (x == 5)
-    ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 4 starts here
-}
-
-void test_warn_chained_if_stmts_8(int x) {
-  if (x == 1)
-    ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: warning: repeated branch 
body in conditional chain [bugprone-branch-clone]
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-2]]:6: note: end of the original
-  else if (x == 2)
-    ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 1 starts here
-  else if (x == 3)
-    ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 2 starts here
-  else if (x == 2)
-    ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 3 starts here
-  else if (x == 5)
-    ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 4 starts here
-  else if (x == 3)
-    ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 5 starts here
-  else if (x == 7)
-    ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 6 starts here
-}
-
-void test_nowarn_chained_if_stmts_1(int x) {
-  if (func())
-    ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: warning: repeated branch 
body in conditional chain [bugprone-branch-clone]
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-2]]:6: note: end of the original
-  else if (func())
-    ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 1 starts here
-}
-
-void test_nowarn_chained_if_stmts_2(int x) {
-  if (func())
-    ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: warning: repeated branch 
body in conditional chain [bugprone-branch-clone]
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-2]]:6: note: end of the original
-  else if (x == 1)
-    ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 1 starts here
-  else if (func())
-    ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 2 starts here
-}
-
-void test_nowarn_chained_if_stmts_3(int x) {
-  if (x++)
-    ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: warning: repeated branch 
body in conditional chain [bugprone-branch-clone]
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-2]]:6: note: end of the original
-  else if (x++)
-    ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 1 starts here
-}
-
-void test_warn_wchar() {
-  const wchar_t * a = 0 ? L"Warning" : L"Warning";
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:25: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
-}
-void test_nowarn_wchar() {
-  const wchar_t * a = 0 ? L"No" : L"Warning";
-}
-
-void test_nowarn_long() {
-  int a = 0, b = 0;
-  long c;
-  if (0) {
-    b -= a;
-    c = 0;
-  } else {
-    b -= a;
-    c = 0LL;
-  }
-}
-
-// Identical inner conditions
-
-void test_warn_inner_if_1(int x) {
-  if (x == 1) {
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:3: warning: if with identical 
inner if statement [bugprone-branch-clone]
-    if (x == 1)
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: inner if starts here
-      ;
-  }
-
-  // FIXME: Should warn here. The warning is currently not emitted because 
there
-  // is code between the conditions.
-  if (x == 1) {
-    int y = x;
-    if (x == 1)
-      ;
-  }
-}
-
-void test_nowarn_inner_if_1(int x) {
-  // Don't warn when condition has side effects.
-  if (x++ == 1) {
-    if (x++ == 1)
-      ;
-  }
-
-  // Don't warn when x is changed before inner condition.
-  if (x < 10) {
-    x++;
-    if (x < 10)
-      ;
-  }
-}

>From 2baa1b90623a7d2a94b3e054fa999cb7e62fd64f Mon Sep 17 00:00:00 2001
From: einvbri <vince.a.bridg...@ericsson.com>
Date: Thu, 12 Dec 2024 01:45:58 +0100
Subject: [PATCH 2/3] [analyzer] Split alpha core Identical Expression tests

* change the run lines to use check_clang_tidy
* remove BUGPRONEBRANCH suffix
* add needed check message lines
---
 .../bugprone/bugprone-branch-clone.cpp        | 186 +++++++++---------
 .../misc/misc-redundant-expression.cpp        |  59 +++---
 2 files changed, 127 insertions(+), 118 deletions(-)

diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/bugprone/bugprone-branch-clone.cpp 
b/clang-tools-extra/test/clang-tidy/checkers/bugprone/bugprone-branch-clone.cpp
index fa19037cc437e3..b91ac6a550c5a7 100644
--- 
a/clang-tools-extra/test/clang-tidy/checkers/bugprone/bugprone-branch-clone.cpp
+++ 
b/clang-tools-extra/test/clang-tidy/checkers/bugprone/bugprone-branch-clone.cpp
@@ -1,4 +1,4 @@
-// RUN: clang-tidy %s -checks="-*,bugprone-branch-clone" -- 2>&1 | FileCheck 
%s --check-prefix=CHECK-MESSAGES-BUGPRONEBRANCH
+// RUN: %check_clang_tidy %s bugprone-branch-clone %t --
 
 /* Only one expected warning per function allowed at the very end. */
 
@@ -42,7 +42,6 @@ int checkNotEqualCastIntPointerDeclCompare11(void) {
   int k = 7;
   int* f = &k;
   return ((int*)f != (int*)f);
-// CHECK-MESSAGES-IDENTEXPR: :[[@LINE-1]]:19: warning: both sides of operator 
are equivalent [misc-redundant-expression]
 }
 int checkNotEqualCastIntPointerDeclCompare12(void) {
   int k = 7;
@@ -54,7 +53,6 @@ int checkNotEqualBinaryOpIntPointerCompare1(void) {
   int res;
   int* f= &k;
   res = (f + 4 != f + 4);
-// CHECK-MESSAGES-IDENTEXPR: :[[@LINE-1]]:16: warning: both sides of operator 
are equivalent [misc-redundant-expression]
   return (0);
 }
 int checkNotEqualBinaryOpIntPointerCompare2(void) {
@@ -70,7 +68,6 @@ int checkNotEqualBinaryOpIntPointerCompare3(void) {
   int res;
   int* f= &k;
   res = ((int*)f + 4 != (int*)f + 4);
-// CHECK-MESSAGES-IDENTEXPR: :[[@LINE-1]]:22: warning: both sides of operator 
are equivalent [misc-redundant-expression]
   return (0);
 }
 int checkNotEqualBinaryOpIntPointerCompare4(void) {
@@ -88,7 +85,6 @@ int checkNotEqualNestedBinaryOpIntPointerCompare1(void) {
   int* u= &k+2;
   int* f= &k+3;
   res = ((f + (3)*t) != (f + (3)*t));
-// CHECK-MESSAGES-IDENTEXPR: :[[@LINE-1]]:22: warning: both sides of operator 
are equivalent [misc-redundant-expression]
   return (0);
 }
 
@@ -143,52 +139,52 @@ int checkNotEqualSameFunctionDifferentParam() {
 unsigned test_unsigned(unsigned a) {
   unsigned b = 1;
   a = a > 5 ? b : b;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:13: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
+// CHECK-MESSAGES: :[[@LINE-1]]:13: warning: conditional operator with 
identical true and false expressions [bugprone-branch-clone]
   return a;
 }
 
 void test_signed() {
   int a = 0;
   a = a > 5 ? a : a;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:13: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
+// CHECK-MESSAGES: :[[@LINE-1]]:13: warning: conditional operator with 
identical true and false expressions [bugprone-branch-clone]
 }
 
 void test_bool(bool a) {
   a = a > 0 ? a : a;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:13: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
+// CHECK-MESSAGES: :[[@LINE-1]]:13: warning: conditional operator with 
identical true and false expressions [bugprone-branch-clone]
 }
 
 void test_float() {
   float a = 0;
   float b = 0;
   a = a > 5 ? a : a;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:13: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
+// CHECK-MESSAGES: :[[@LINE-1]]:13: warning: conditional operator with 
identical true and false expressions [bugprone-branch-clone]
 }
 
 const char *test_string() {
   float a = 0;
   return a > 5 ? "abc" : "abc";
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:16: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
+// CHECK-MESSAGES: :[[@LINE-1]]:16: warning: conditional operator with 
identical true and false expressions [bugprone-branch-clone]
 }
 
 void test_unsigned_expr() {
   unsigned a = 0;
   unsigned b = 0;
   a = a > 5 ? a+b : a+b;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:13: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
+// CHECK-MESSAGES: :[[@LINE-1]]:13: warning: conditional operator with 
identical true and false expressions [bugprone-branch-clone]
 }
 
 void test_signed_expr() {
   int a = 0;
   int b = 1;
   a = a > 5 ? a+b : a+b;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:13: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
+// CHECK-MESSAGES: :[[@LINE-1]]:13: warning: conditional operator with 
identical true and false expressions [bugprone-branch-clone]
 }
 
 void test_bool_expr(bool a) {
   bool b = 0;
   a = a > 0 ? a&&b : a&&b;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:13: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
+// CHECK-MESSAGES: :[[@LINE-1]]:13: warning: conditional operator with 
identical true and false expressions [bugprone-branch-clone]
 }
 
 void test_unsigned_expr_negative() {
@@ -212,14 +208,14 @@ void test_float_expr_positive() {
   float a = 0;
   float b = 0;
   a = a > 5 ? a+b : a+b;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:13: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
+// CHECK-MESSAGES: :[[@LINE-1]]:13: warning: conditional operator with 
identical true and false expressions [bugprone-branch-clone]
 }
 
 void test_expr_positive_func() {
   unsigned a = 0;
   unsigned b = 1;
   a = a > 5 ? a+func() : a+func();
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:13: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
+// CHECK-MESSAGES: :[[@LINE-1]]:13: warning: conditional operator with 
identical true and false expressions [bugprone-branch-clone]
 }
 
 void test_expr_negative_func() {
@@ -232,7 +228,7 @@ void test_expr_positive_funcParam() {
   unsigned a = 0;
   unsigned b = 1;
   a = a > 5 ? a+funcParam(b) : a+funcParam(b);
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:13: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
+// CHECK-MESSAGES: :[[@LINE-1]]:13: warning: conditional operator with 
identical true and false expressions [bugprone-branch-clone]
 }
 
 void test_expr_negative_funcParam() {
@@ -245,7 +241,7 @@ void test_expr_positive_inc() {
   unsigned a = 0;
   unsigned b = 1;
   a = a > 5 ? a++ : a++;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:13: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
+// CHECK-MESSAGES: :[[@LINE-1]]:13: warning: conditional operator with 
identical true and false expressions [bugprone-branch-clone]
 }
 
 void test_expr_negative_inc() {
@@ -258,7 +254,7 @@ void test_expr_positive_assign() {
   unsigned a = 0;
   unsigned b = 1;
   a = a > 5 ? a=1 : a=1;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:13: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
+// CHECK-MESSAGES: :[[@LINE-1]]:13: warning: conditional operator with 
identical true and false expressions [bugprone-branch-clone]
 }
 
 void test_expr_negative_assign() {
@@ -272,7 +268,7 @@ void test_signed_nested_expr() {
   int b = 1;
   int c = 3;
   a = a > 5 ? a+b+(c+a)*(a + b*(c+a)) : a+b+(c+a)*(a + b*(c+a));
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:13: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
+// CHECK-MESSAGES: :[[@LINE-1]]:13: warning: conditional operator with 
identical true and false expressions [bugprone-branch-clone]
 }
 
 void test_signed_nested_expr_negative() {
@@ -294,16 +290,16 @@ void test_signed_nested_cond_expr() {
   int b = 1;
   int c = 3;
   a = a > 5 ? (b > 5 ? 1 : 4) : (b > 5 ? 4 : 4);
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:40: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
+// CHECK-MESSAGES: :[[@LINE-1]]:40: warning: conditional operator with 
identical true and false expressions [bugprone-branch-clone]
 }
 
 void test_identical_branches1(bool b) {
   int i = 0;
   if (b) {
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:3: warning: if with identical 
then and else branches [bugprone-branch-clone]
+// CHECK-MESSAGES: :[[@LINE-1]]:3: warning: if with identical then and else 
branches [bugprone-branch-clone]
     ++i;
   } else {
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: else branch starts here
+// CHECK-MESSAGES: :[[@LINE-1]]:5: note: else branch starts here
     ++i;
   }
 }
@@ -311,10 +307,10 @@ void test_identical_branches1(bool b) {
 void test_identical_branches2(bool b) {
   int i = 0;
   if (b) {
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:3: warning: if with identical 
then and else branches [bugprone-branch-clone]
+// CHECK-MESSAGES: :[[@LINE-1]]:3: warning: if with identical then and else 
branches [bugprone-branch-clone]
     ++i;
   } else
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: else branch starts here
+// CHECK-MESSAGES: :[[@LINE-1]]:5: note: else branch starts here
     ++i;
 }
 
@@ -330,19 +326,19 @@ void test_identical_branches3(bool b) {
 void test_identical_branches4(bool b) {
   int i = 0;
   if (b) {
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:3: warning: if with identical 
then and else branches [bugprone-branch-clone]
+// CHECK-MESSAGES: :[[@LINE-1]]:3: warning: if with identical then and else 
branches [bugprone-branch-clone]
   } else {
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: else branch starts here
+// CHECK-MESSAGES: :[[@LINE-1]]:5: note: else branch starts here
   }
 }
 
 void test_identical_branches_break(bool b) {
   while (true) {
     if (b)
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: warning: if with identical 
then and else branches [bugprone-branch-clone]
+// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: if with identical then and else 
branches [bugprone-branch-clone]
       break;
     else
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: else branch starts here
+// CHECK-MESSAGES: :[[@LINE-1]]:5: note: else branch starts here
       break;
   }
 }
@@ -350,20 +346,20 @@ void test_identical_branches_break(bool b) {
 void test_identical_branches_continue(bool b) {
   while (true) {
     if (b)
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: warning: if with identical 
then and else branches [bugprone-branch-clone]
+// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: if with identical then and else 
branches [bugprone-branch-clone]
       continue;
     else
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: else branch starts here
+// CHECK-MESSAGES: :[[@LINE-1]]:5: note: else branch starts here
       continue;
   }
 }
 
 void test_identical_branches_func(bool b) {
   if (b)
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:3: warning: if with identical 
then and else branches [bugprone-branch-clone]
+// CHECK-MESSAGES: :[[@LINE-1]]:3: warning: if with identical then and else 
branches [bugprone-branch-clone]
     func();
   else
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:3: note: else branch starts here
+// CHECK-MESSAGES: :[[@LINE-1]]:3: note: else branch starts here
     func();
 }
 
@@ -385,21 +381,21 @@ void test_identical_branches_cast1(bool b) {
 void test_identical_branches_cast2(bool b) {
   long v = -7;
   if (b)
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:3: warning: if with identical 
then and else branches [bugprone-branch-clone]
+// CHECK-MESSAGES: :[[@LINE-1]]:3: warning: if with identical then and else 
branches [bugprone-branch-clone]
     v = (signed int) v;
   else
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:3: note: else branch starts here
+// CHECK-MESSAGES: :[[@LINE-1]]:3: note: else branch starts here
     v = (signed int) v;
 }
 
 int test_identical_branches_return_int(bool b) {
   int i = 0;
   if (b) {
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:3: warning: if with identical 
then and else branches [bugprone-branch-clone]
+// CHECK-MESSAGES: :[[@LINE-1]]:3: warning: if with identical then and else 
branches [bugprone-branch-clone]
     i++;
     return i;
   } else {
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: else branch starts here
+// CHECK-MESSAGES: :[[@LINE-1]]:5: note: else branch starts here
     i++;
     return i;
   }
@@ -407,10 +403,10 @@ int test_identical_branches_return_int(bool b) {
 
 int test_identical_branches_return_func(bool b) {
   if (b) {
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:3: warning: if with identical 
then and else branches [bugprone-branch-clone]
+// CHECK-MESSAGES: :[[@LINE-1]]:3: warning: if with identical then and else 
branches [bugprone-branch-clone]
     return func();
   } else {
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: else branch starts here
+// CHECK-MESSAGES: :[[@LINE-1]]:5: note: else branch starts here
     return func();
   }
 }
@@ -419,11 +415,11 @@ void test_identical_branches_for(bool b) {
   int i;
   int j;
   if (b) {
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:3: warning: if with identical 
then and else branches [bugprone-branch-clone]
+// CHECK-MESSAGES: :[[@LINE-1]]:3: warning: if with identical then and else 
branches [bugprone-branch-clone]
     for (i = 0, j = 0; i < 10; i++)
       j += 4;
   } else {
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: else branch starts here
+// CHECK-MESSAGES: :[[@LINE-1]]:5: note: else branch starts here
     for (i = 0, j = 0; i < 10; i++)
       j += 4;
   }
@@ -432,11 +428,11 @@ void test_identical_branches_for(bool b) {
 void test_identical_branches_while(bool b) {
   int i = 10;
   if (b) {
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:3: warning: if with identical 
then and else branches [bugprone-branch-clone]
+// CHECK-MESSAGES: :[[@LINE-1]]:3: warning: if with identical then and else 
branches [bugprone-branch-clone]
     while (func())
       i--;
   } else {
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: else branch starts here
+// CHECK-MESSAGES: :[[@LINE-1]]:5: note: else branch starts here
     while (func())
       i--;
   }
@@ -456,12 +452,12 @@ void test_identical_branches_while_2(bool b) {
 void test_identical_branches_do_while(bool b) {
   int i = 10;
   if (b) {
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:3: warning: if with identical 
then and else branches [bugprone-branch-clone]
+// CHECK-MESSAGES: :[[@LINE-1]]:3: warning: if with identical then and else 
branches [bugprone-branch-clone]
     do {
       i--;
     } while (func());
   } else {
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: else branch starts here
+// CHECK-MESSAGES: :[[@LINE-1]]:5: note: else branch starts here
     do {
       i--;
     } while (func());
@@ -470,11 +466,11 @@ void test_identical_branches_do_while(bool b) {
 
 void test_identical_branches_if(bool b, int i) {
   if (b) {
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:3: warning: if with identical 
then and else branches [bugprone-branch-clone]
+// CHECK-MESSAGES: :[[@LINE-1]]:3: warning: if with identical then and else 
branches [bugprone-branch-clone]
     if (i < 5)
       i += 10;
   } else {
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: else branch starts here
+// CHECK-MESSAGES: :[[@LINE-1]]:5: note: else branch starts here
     if (i < 5)
       i += 10;
   }
@@ -569,73 +565,73 @@ void test_identical_logical9(int x, int y) {
 void test_warn_chained_if_stmts_1(int x) {
   if (x == 1)
     ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: warning: repeated branch 
body in conditional chain [bugprone-branch-clone]
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-2]]:6: note: end of the original
+// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: repeated branch body in 
conditional chain [bugprone-branch-clone]
+// CHECK-MESSAGES: :[[@LINE-2]]:6: note: end of the original
   else if (x == 1)
     ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 1 starts here
+// CHECK-MESSAGES: :[[@LINE-1]]:5: note: clone 1 starts here
 }
 
 void test_warn_chained_if_stmts_2(int x) {
   if (x == 1)
     ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: warning: repeated branch 
body in conditional chain [bugprone-branch-clone]
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-2]]:6: note: end of the original
+// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: repeated branch body in 
conditional chain [bugprone-branch-clone]
+// CHECK-MESSAGES: :[[@LINE-2]]:6: note: end of the original
   else if (x == 1)
     ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 1 starts here
+// CHECK-MESSAGES: :[[@LINE-1]]:5: note: clone 1 starts here
   else if (x == 1)
     ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 2 starts here
+// CHECK-MESSAGES: :[[@LINE-1]]:5: note: clone 2 starts here
 }
 
 void test_warn_chained_if_stmts_3(int x) {
   if (x == 1)
     ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: warning: repeated branch 
body in conditional chain [bugprone-branch-clone]
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-2]]:6: note: end of the original
+// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: repeated branch body in 
conditional chain [bugprone-branch-clone]
+// CHECK-MESSAGES: :[[@LINE-2]]:6: note: end of the original
   else if (x == 2)
     ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 1 starts here
+// CHECK-MESSAGES: :[[@LINE-1]]:5: note: clone 1 starts here
   else if (x == 1)
     ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 2 starts here
+// CHECK-MESSAGES: :[[@LINE-1]]:5: note: clone 2 starts here
 }
 
 void test_warn_chained_if_stmts_4(int x) {
   if (x == 1)
     ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: warning: repeated branch 
body in conditional chain [bugprone-branch-clone]
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-2]]:6: note: end of the original
+// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: repeated branch body in 
conditional chain [bugprone-branch-clone]
+// CHECK-MESSAGES: :[[@LINE-2]]:6: note: end of the original
   else if (func())
     ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 1 starts here
+// CHECK-MESSAGES: :[[@LINE-1]]:5: note: clone 1 starts here
   else if (x == 1)
     ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 2 starts here
+// CHECK-MESSAGES: :[[@LINE-1]]:5: note: clone 2 starts here
 }
 
 void test_warn_chained_if_stmts_5(int x) {
   if (x & 1)
     ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: warning: repeated branch 
body in conditional chain [bugprone-branch-clone]
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-2]]:6: note: end of the original
+// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: repeated branch body in 
conditional chain [bugprone-branch-clone]
+// CHECK-MESSAGES: :[[@LINE-2]]:6: note: end of the original
   else if (x & 1)
     ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 1 starts here
+// CHECK-MESSAGES: :[[@LINE-1]]:5: note: clone 1 starts here
 }
 
 void test_warn_chained_if_stmts_6(int x) {
   if (x == 1)
     ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: warning: repeated branch 
body in conditional chain [bugprone-branch-clone]
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-2]]:6: note: end of the original
+// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: repeated branch body in 
conditional chain [bugprone-branch-clone]
+// CHECK-MESSAGES: :[[@LINE-2]]:6: note: end of the original
   else if (x == 2)
     ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 1 starts here
+// CHECK-MESSAGES: :[[@LINE-1]]:5: note: clone 1 starts here
   else if (x == 2)
     ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 2 starts here
+// CHECK-MESSAGES: :[[@LINE-1]]:5: note: clone 2 starts here
   else if (x == 3)
     ;
 }
@@ -643,83 +639,83 @@ void test_warn_chained_if_stmts_6(int x) {
 void test_warn_chained_if_stmts_7(int x) {
   if (x == 1)
     ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: warning: repeated branch 
body in conditional chain [bugprone-branch-clone]
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-2]]:6: note: end of the original
+// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: repeated branch body in 
conditional chain [bugprone-branch-clone]
+// CHECK-MESSAGES: :[[@LINE-2]]:6: note: end of the original
   else if (x == 2)
     ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 1 starts here
+// CHECK-MESSAGES: :[[@LINE-1]]:5: note: clone 1 starts here
   else if (x == 3)
     ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 2 starts here
+// CHECK-MESSAGES: :[[@LINE-1]]:5: note: clone 2 starts here
   else if (x == 2)
     ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 3 starts here
+// CHECK-MESSAGES: :[[@LINE-1]]:5: note: clone 3 starts here
   else if (x == 5)
     ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 4 starts here
+// CHECK-MESSAGES: :[[@LINE-1]]:5: note: clone 4 starts here
 }
 
 void test_warn_chained_if_stmts_8(int x) {
   if (x == 1)
     ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: warning: repeated branch 
body in conditional chain [bugprone-branch-clone]
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-2]]:6: note: end of the original
+// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: repeated branch body in 
conditional chain [bugprone-branch-clone]
+// CHECK-MESSAGES: :[[@LINE-2]]:6: note: end of the original
   else if (x == 2)
     ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 1 starts here
+// CHECK-MESSAGES: :[[@LINE-1]]:5: note: clone 1 starts here
   else if (x == 3)
     ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 2 starts here
+// CHECK-MESSAGES: :[[@LINE-1]]:5: note: clone 2 starts here
   else if (x == 2)
     ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 3 starts here
+// CHECK-MESSAGES: :[[@LINE-1]]:5: note: clone 3 starts here
   else if (x == 5)
     ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 4 starts here
+// CHECK-MESSAGES: :[[@LINE-1]]:5: note: clone 4 starts here
   else if (x == 3)
     ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 5 starts here
+// CHECK-MESSAGES: :[[@LINE-1]]:5: note: clone 5 starts here
   else if (x == 7)
     ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 6 starts here
+// CHECK-MESSAGES: :[[@LINE-1]]:5: note: clone 6 starts here
 }
 
 void test_nowarn_chained_if_stmts_1(int x) {
   if (func())
     ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: warning: repeated branch 
body in conditional chain [bugprone-branch-clone]
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-2]]:6: note: end of the original
+// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: repeated branch body in 
conditional chain [bugprone-branch-clone]
+// CHECK-MESSAGES: :[[@LINE-2]]:6: note: end of the original
   else if (func())
     ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 1 starts here
+// CHECK-MESSAGES: :[[@LINE-1]]:5: note: clone 1 starts here
 }
 
 void test_nowarn_chained_if_stmts_2(int x) {
   if (func())
     ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: warning: repeated branch 
body in conditional chain [bugprone-branch-clone]
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-2]]:6: note: end of the original
+// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: repeated branch body in 
conditional chain [bugprone-branch-clone]
+// CHECK-MESSAGES: :[[@LINE-2]]:6: note: end of the original
   else if (x == 1)
     ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 1 starts here
+// CHECK-MESSAGES: :[[@LINE-1]]:5: note: clone 1 starts here
   else if (func())
     ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 2 starts here
+// CHECK-MESSAGES: :[[@LINE-1]]:5: note: clone 2 starts here
 }
 
 void test_nowarn_chained_if_stmts_3(int x) {
   if (x++)
     ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: warning: repeated branch 
body in conditional chain [bugprone-branch-clone]
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-2]]:6: note: end of the original
+// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: repeated branch body in 
conditional chain [bugprone-branch-clone]
+// CHECK-MESSAGES: :[[@LINE-2]]:6: note: end of the original
   else if (x++)
     ;
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: clone 1 starts here
+// CHECK-MESSAGES: :[[@LINE-1]]:5: note: clone 1 starts here
 }
 
 void test_warn_wchar() {
   const wchar_t * a = 0 ? L"Warning" : L"Warning";
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:25: warning: conditional 
operator with identical true and false expressions [bugprone-branch-clone]
+// CHECK-MESSAGES: :[[@LINE-1]]:25: warning: conditional operator with 
identical true and false expressions [bugprone-branch-clone]
 }
 void test_nowarn_wchar() {
   const wchar_t * a = 0 ? L"No" : L"Warning";
@@ -741,9 +737,9 @@ void test_nowarn_long() {
 
 void test_warn_inner_if_1(int x) {
   if (x == 1) {
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:3: warning: if with identical 
inner if statement [bugprone-branch-clone]
+// CHECK-MESSAGES: :[[@LINE-1]]:3: warning: if with identical inner if 
statement [bugprone-branch-clone]
     if (x == 1)
-// CHECK-MESSAGES-BUGPRONEBRANCH: :[[@LINE-1]]:5: note: inner if starts here
+// CHECK-MESSAGES: :[[@LINE-1]]:5: note: inner if starts here
       ;
   }
 
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/misc/misc-redundant-expression.cpp 
b/clang-tools-extra/test/clang-tidy/checkers/misc/misc-redundant-expression.cpp
index db07118c8c9cfa..8dcef30a4e7544 100644
--- 
a/clang-tools-extra/test/clang-tidy/checkers/misc/misc-redundant-expression.cpp
+++ 
b/clang-tools-extra/test/clang-tidy/checkers/misc/misc-redundant-expression.cpp
@@ -1,4 +1,4 @@
-// RUN: clang-tidy %s -checks="-*,misc-redundant-expression" -- 2>&1 | 
FileCheck %s --check-prefix=CHECK-MESSAGES-IDENTEXPR
+// RUN: %check_clang_tidy %s misc-redundant-expression -check-suffix=IDENTEXPR 
%t
 
 /* Only one expected warning per function allowed at the very end. */
 
@@ -76,6 +76,7 @@ int checkNotEqualBinaryOpFloatCompare1(void) {
   int res;
   float f= 3.14F;
   res = (f + 3.14F != f + 3.14F);  // no warning
+// CHECK-MESSAGES-IDENTEXPR: :[[@LINE-1]]:20: warning: both sides of operator 
are equivalent [misc-redundant-expression]
   return (0);
 }
 int checkNotEqualBinaryOpFloatCompare2(void) {
@@ -87,6 +88,7 @@ int checkNotEqualBinaryOpFloatCompare3(void) {
   int res;
   float f= 3.14F;
   res = ((int)f + 3.14F != (int)f + 3.14F);  // no warning
+// CHECK-MESSAGES-IDENTEXPR: :[[@LINE-1]]:25: warning: both sides of operator 
are equivalent [misc-redundant-expression]
   return (0);
 }
 int checkNotEqualBinaryOpFloatCompare4(void) {
@@ -102,6 +104,7 @@ int checkNotEqualNestedBinaryOpFloatCompare1(void) {
   int u= 2;
   float f= 3.14F;
   res = (((int)f + (3.14F - u)*t) != ((int)f + (3.14F - u)*t));  // no warning
+// CHECK-MESSAGES-IDENTEXPR: :[[@LINE-1]]:35: warning: both sides of operator 
are equivalent [misc-redundant-expression]
   return (0);
 }
 
@@ -120,12 +123,11 @@ int checkNotEqualNestedBinaryOpFloatCompare3(void) {
   int u= 2;
   float f= 3.14F;
   res = (((int)f + (u - 3.14F)*t) != ((int)f + (3.14F - u)*(f + t != f + t))); 
 // no warning
+// CHECK-MESSAGES-IDENTEXPR: :[[@LINE-1]]:67: warning: both sides of operator 
are equivalent [misc-redundant-expression]
   return (0);
 }
 
 
-
-
 /* end '!=' with float*/
 
 /* '!=' with int*/
@@ -237,8 +239,6 @@ int checkNotEqualNestedBinaryOpIntCompare3(void) {
 
 /*   end '!=' int          */
 
-
-
 /* '!=' with int pointer */
 
 int checkNotEqualIntPointerLiteralCompare1(void) {
@@ -328,6 +328,7 @@ int checkNotEqualSameFunction() {
   unsigned a = 0;
   unsigned b = 1;
   int res = (a+func() != a+func());  // no warning
+// CHECK-MESSAGES-IDENTEXPR: :[[@LINE-1]]:23: warning: both sides of operator 
are equivalent [misc-redundant-expression]
   return (0);
 }
 
@@ -342,6 +343,7 @@ int checkNotEqualSameFunctionSameParam() {
   unsigned a = 0;
   unsigned b = 1;
   int res = (a+funcParam(a) != a+funcParam(a));  // no warning
+// CHECK-MESSAGES-IDENTEXPR: :[[@LINE-1]]:29: warning: both sides of operator 
are equivalent [misc-redundant-expression]
   return (0);
 }
 
@@ -433,7 +435,8 @@ int checkEqualCastFloatDeclCompare12(void) {
 int checkEqualBinaryOpFloatCompare1(void) {
   int res;
   float f= 3.14F;
-  res = (f + 3.14F == f + 3.14F);  // no warning
+  res = (f + 3.14F == f + 3.14F);
+// CHECK-MESSAGES-IDENTEXPR: :[[@LINE-1]]:20: warning: both sides of operator 
are equivalent [misc-redundant-expression]
   return (0);
 }
 int checkEqualBinaryOpFloatCompare2(void) {
@@ -444,7 +447,8 @@ int checkEqualBinaryOpFloatCompare2(void) {
 int checkEqualBinaryOpFloatCompare3(void) {
   int res;
   float f= 3.14F;
-  res = ((int)f + 3.14F == (int)f + 3.14F);  // no warning
+  res = ((int)f + 3.14F == (int)f + 3.14F);
+// CHECK-MESSAGES-IDENTEXPR: :[[@LINE-1]]:25: warning: both sides of operator 
are equivalent [misc-redundant-expression]
   return (0);
 }
 int checkEqualBinaryOpFloatCompare4(void) {
@@ -459,7 +463,8 @@ int checkEqualNestedBinaryOpFloatCompare1(void) {
   int t= 1;
   int u= 2;
   float f= 3.14F;
-  res = (((int)f + (3.14F - u)*t) == ((int)f + (3.14F - u)*t));  // no warning
+  res = (((int)f + (3.14F - u)*t) == ((int)f + (3.14F - u)*t));
+// CHECK-MESSAGES-IDENTEXPR: :[[@LINE-1]]:35: warning: both sides of operator 
are equivalent [misc-redundant-expression]
   return (0);
 }
 
@@ -477,14 +482,11 @@ int checkEqualNestedBinaryOpFloatCompare3(void) {
   int t= 1;
   int u= 2;
   float f= 3.14F;
-  res = (((int)f + (u - 3.14F)*t) == ((int)f + (3.14F - u)*(f + t == f + t))); 
 // no warning
+  res = (((int)f + (u - 3.14F)*t) == ((int)f + (3.14F - u)*(f + t == f + t)));
+// CHECK-MESSAGES-IDENTEXPR: :[[@LINE-1]]:67: warning: both sides of operator 
are equivalent [misc-redundant-expression]
   return (0);
 }
 
-
-
-
-
 /* Equal with int*/
 
 int checkEqualIntLiteralCompare1(void) {
@@ -599,7 +601,8 @@ int checkEqualNestedBinaryOpIntCompare3(void) {
 int checkEqualSameFunction() {
   unsigned a = 0;
   unsigned b = 1;
-  int res = (a+func() == a+func());  // no warning
+  int res = (a+func() == a+func());
+// CHECK-MESSAGES-IDENTEXPR: :[[@LINE-1]]:23: warning: both sides of operator 
are equivalent [misc-redundant-expression]
   return (0);
 }
 
@@ -613,7 +616,8 @@ int checkEqualDifferentFunction() {
 int checkEqualSameFunctionSameParam() {
   unsigned a = 0;
   unsigned b = 1;
-  int res = (a+funcParam(a) == a+funcParam(a));  // no warning
+  int res = (a+funcParam(a) == a+funcParam(a));
+// CHECK-MESSAGES-IDENTEXPR: :[[@LINE-1]]:29: warning: both sides of operator 
are equivalent [misc-redundant-expression]
   return (0);
 }
 
@@ -691,7 +695,8 @@ int checkLessThanCastFloatDeclCompare12(void) {
 int checkLessThanBinaryOpFloatCompare1(void) {
   int res;
   float f= 3.14F;
-  res = (f + 3.14F < f + 3.14F);  // no warning
+  res = (f + 3.14F < f + 3.14F);
+// CHECK-MESSAGES-IDENTEXPR: :[[@LINE-1]]:20: warning: both sides of operator 
are equivalent [misc-redundant-expression]
   return (0);
 }
 int checkLessThanBinaryOpFloatCompare2(void) {
@@ -702,7 +707,8 @@ int checkLessThanBinaryOpFloatCompare2(void) {
 int checkLessThanBinaryOpFloatCompare3(void) {
   int res;
   float f= 3.14F;
-  res = ((int)f + 3.14F < (int)f + 3.14F);  // no warning
+  res = ((int)f + 3.14F < (int)f + 3.14F);
+// CHECK-MESSAGES-IDENTEXPR: :[[@LINE-1]]:25: warning: both sides of operator 
are equivalent [misc-redundant-expression]
   return (0);
 }
 int checkLessThanBinaryOpFloatCompare4(void) {
@@ -717,7 +723,8 @@ int checkLessThanNestedBinaryOpFloatCompare1(void) {
   int t= 1;
   int u= 2;
   float f= 3.14F;
-  res = (((int)f + (3.14F - u)*t) < ((int)f + (3.14F - u)*t));  // no warning
+  res = (((int)f + (3.14F - u)*t) < ((int)f + (3.14F - u)*t));
+// CHECK-MESSAGES-IDENTEXPR: :[[@LINE-1]]:35: warning: both sides of operator 
are equivalent [misc-redundant-expression]
   return (0);
 }
 
@@ -735,7 +742,8 @@ int checkLessThanNestedBinaryOpFloatCompare3(void) {
   int t= 1;
   int u= 2;
   float f= 3.14F;
-  res = (((int)f + (u - 3.14F)*t) < ((int)f + (3.14F - u)*(f + t < f + t)));  
// no warning
+  res = (((int)f + (u - 3.14F)*t) < ((int)f + (3.14F - u)*(f + t < f + t)));
+// CHECK-MESSAGES-IDENTEXPR: :[[@LINE-1]]:66: warning: both sides of operator 
are equivalent [misc-redundant-expression]
   return (0);
 }
 
@@ -911,7 +919,8 @@ int checkGreaterThanCastFloatDeclCompare12(void) {
 int checkGreaterThanBinaryOpFloatCompare1(void) {
   int res;
   float f= 3.14F;
-  res = (f + 3.14F > f + 3.14F);  // no warning
+  res = (f + 3.14F > f + 3.14F);
+// CHECK-MESSAGES-IDENTEXPR: :[[@LINE-1]]:20: warning: both sides of operator 
are equivalent [misc-redundant-expression]
   return (0);
 }
 int checkGreaterThanBinaryOpFloatCompare2(void) {
@@ -922,7 +931,8 @@ int checkGreaterThanBinaryOpFloatCompare2(void) {
 int checkGreaterThanBinaryOpFloatCompare3(void) {
   int res;
   float f= 3.14F;
-  res = ((int)f + 3.14F > (int)f + 3.14F);  // no warning
+  res = ((int)f + 3.14F > (int)f + 3.14F);
+// CHECK-MESSAGES-IDENTEXPR: :[[@LINE-1]]:25: warning: both sides of operator 
are equivalent [misc-redundant-expression]
   return (0);
 }
 int checkGreaterThanBinaryOpFloatCompare4(void) {
@@ -937,7 +947,8 @@ int checkGreaterThanNestedBinaryOpFloatCompare1(void) {
   int t= 1;
   int u= 2;
   float f= 3.14F;
-  res = (((int)f + (3.14F - u)*t) > ((int)f + (3.14F - u)*t));  // no warning
+  res = (((int)f + (3.14F - u)*t) > ((int)f + (3.14F - u)*t));
+// CHECK-MESSAGES-IDENTEXPR: :[[@LINE-1]]:35: warning: both sides of operator 
are equivalent [misc-redundant-expression]
   return (0);
 }
 
@@ -956,6 +967,7 @@ int checkGreaterThanNestedBinaryOpFloatCompare3(void) {
   int u= 2;
   float f= 3.14F;
   res = (((int)f + (u - 3.14F)*t) > ((int)f + (3.14F - u)*(f + t > f + t)));  
// no warning
+// CHECK-MESSAGES-IDENTEXPR: :[[@LINE-1]]:66: warning: both sides of operator 
are equivalent [misc-redundant-expression]
   return (0);
 }
 
@@ -1262,7 +1274,8 @@ void test_identical_logical3(int a) {
 }
 
 void test_identical_logical4(int a) {
-  if (a == func() || a == func()) // no-warning
+  if (a == func() || a == func())
+// CHECK-MESSAGES-IDENTEXPR: :[[@LINE-1]]:19: warning: both sides of operator 
are equivalent [misc-redundant-expression]
     ;
 }
 

>From 476e09556f3a7984de31fc14df02cec6afc66fab Mon Sep 17 00:00:00 2001
From: einvbri <vince.a.bridg...@ericsson.com>
Date: Fri, 20 Dec 2024 01:51:18 +0100
Subject: [PATCH 3/3] [analyzer] Split alpha core Identical Expression tests

* Change new test filenames to <checker-name>-2.cpp per comments
* Checker names need to follow naming convention
* Additional checks should not result in too large test case
---
 .../bugprone/{bugprone-branch-clone.cpp => branch-clone-2.cpp}    | 0
 .../{misc-redundant-expression.cpp => redundant-expression-2.cpp} | 0
 2 files changed, 0 insertions(+), 0 deletions(-)
 rename 
clang-tools-extra/test/clang-tidy/checkers/bugprone/{bugprone-branch-clone.cpp 
=> branch-clone-2.cpp} (100%)
 rename 
clang-tools-extra/test/clang-tidy/checkers/misc/{misc-redundant-expression.cpp 
=> redundant-expression-2.cpp} (100%)

diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/bugprone/bugprone-branch-clone.cpp 
b/clang-tools-extra/test/clang-tidy/checkers/bugprone/branch-clone-2.cpp
similarity index 100%
rename from 
clang-tools-extra/test/clang-tidy/checkers/bugprone/bugprone-branch-clone.cpp
rename to clang-tools-extra/test/clang-tidy/checkers/bugprone/branch-clone-2.cpp
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/misc/misc-redundant-expression.cpp 
b/clang-tools-extra/test/clang-tidy/checkers/misc/redundant-expression-2.cpp
similarity index 100%
rename from 
clang-tools-extra/test/clang-tidy/checkers/misc/misc-redundant-expression.cpp
rename to 
clang-tools-extra/test/clang-tidy/checkers/misc/redundant-expression-2.cpp

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to