llvmbot wrote:

<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-clang-format

Author: Shivam Gupta (xgupta)

<details>
<summary>Changes</summary>

This is described in https://pvs-studio.com/en/blog/posts/cpp/1126/ so caught 
by the PVS Studio analyzer.

Warning message  -
The use of 'if (A) {...} else if (A) {...}' pattern was detected

There were two same 'if' conditions (Tok-&gt;is(tok::hash) but different 
execution blocks leading to unreachable code for the second 'if-else' condition.

---
Full diff: https://github.com/llvm/llvm-project/pull/95666.diff


1 Files Affected:

- (modified) clang/lib/Format/TokenAnnotator.cpp (+13-10) 


``````````diff
diff --git a/clang/lib/Format/TokenAnnotator.cpp 
b/clang/lib/Format/TokenAnnotator.cpp
index 1fe3b61a5a81f..5a7029bda65f3 100644
--- a/clang/lib/Format/TokenAnnotator.cpp
+++ b/clang/lib/Format/TokenAnnotator.cpp
@@ -3369,11 +3369,19 @@ class ExpressionParser {
       FormatToken *Next = Tok->getNextNonComment();
 
       if (Tok->is(tok::hash)) {
-        // Start of a macro expansion.
-        First = Tok;
-        Tok = Next;
-        if (Tok)
-          Tok = Tok->getNextNonComment();
+
+        if (Next && Next->is(tok::l_paren)) {
+          // Handle parameterized macro.
+          Next = Next->MatchingParen;
+          if (Next)
+            Tok = Next->getNextNonComment();
+        } else {
+          // Start of a macro expansion.
+          First = Tok;
+          Tok = Next;
+          if (Tok)
+            Tok = Tok->getNextNonComment();
+        }
       } else if (Tok->is(tok::hashhash)) {
         // Concatenation. Skip.
         Tok = Next;
@@ -3410,11 +3418,6 @@ class ExpressionParser {
         } else {
           break;
         }
-      } else if (Tok->is(tok::hash)) {
-        if (Next->is(tok::l_paren))
-          Next = Next->MatchingParen;
-        if (Next)
-          Tok = Next->getNextNonComment();
       } else {
         break;
       }

``````````

</details>


https://github.com/llvm/llvm-project/pull/95666
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to