[clang-tools-extra] r372693 - [clang-tidy] New bugprone-infinite-loop check for detecting obvious infinite loops

Mikael Holmén via cfe-commits cfe-commits at lists.llvm.org
Tue Sep 24 01:55:37 PDT 2019


Hi Adam,

Is InfiniteLoopCheck.cpp missing?

I get

CMake Error at /data/repo/master/llvm/cmake/modules/AddLLVM.cmake:443
(add_library):
  Cannot find source file:

    InfiniteLoopCheck.cpp


/Mikael


On Tue, 2019-09-24 at 07:43 +0000, Adam Balogh via cfe-commits wrote:
> Author: baloghadamsoftware
> Date: Tue Sep 24 00:43:26 2019
> New Revision: 372693
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=372693&view=rev
> Log:
> [clang-tidy] New bugprone-infinite-loop check for detecting obvious
> infinite loops
> 
> Finding infinite loops is well-known to be impossible (halting
> problem).
> However, it is possible to detect some obvious infinite loops, for
> example,
> if the loop condition is not changed. Detecting such loops is
> beneficial
> since the tests will hang on programs containing infinite loops so
> testing-time detection may be costly in large systems. Obvious cases
> are
> where the programmer forgets to increment/decrement the counter or
> increments/decrements the wrong variable.
> 
> Differential Revision: https://reviews.llvm.org/D64736
> 
> 
> Modified:
>     clang-tools-extra/trunk/clang-
> tidy/bugprone/BugproneTidyModule.cpp
>     clang-tools-extra/trunk/clang-tidy/bugprone/CMakeLists.txt
>     clang-tools-extra/trunk/docs/ReleaseNotes.rst
>     clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst
> 
> Modified: clang-tools-extra/trunk/clang-
> tidy/bugprone/BugproneTidyModule.cpp
> URL: 
> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/bugprone/BugproneTidyModule.cpp?rev=372693&r1=372692&r2=372693&view=diff
> =====================================================================
> =========
> --- clang-tools-extra/trunk/clang-
> tidy/bugprone/BugproneTidyModule.cpp (original)
> +++ clang-tools-extra/trunk/clang-
> tidy/bugprone/BugproneTidyModule.cpp Tue Sep 24 00:43:26 2019
> @@ -23,6 +23,7 @@
>  #include "ForwardingReferenceOverloadCheck.h"
>  #include "InaccurateEraseCheck.h"
>  #include "IncorrectRoundingsCheck.h"
> +#include "InfiniteLoopCheck.h"
>  #include "IntegerDivisionCheck.h"
>  #include "LambdaFunctionNameCheck.h"
>  #include "MacroParenthesesCheck.h"
> @@ -88,6 +89,8 @@ public:
>          "bugprone-inaccurate-erase");
>      CheckFactories.registerCheck<IncorrectRoundingsCheck>(
>          "bugprone-incorrect-roundings");
> +    CheckFactories.registerCheck<InfiniteLoopCheck>(
> +        "bugprone-infinite-loop");
>      CheckFactories.registerCheck<IntegerDivisionCheck>(
>          "bugprone-integer-division");
>      CheckFactories.registerCheck<LambdaFunctionNameCheck>(
> 
> Modified: clang-tools-extra/trunk/clang-tidy/bugprone/CMakeLists.txt
> URL: 
> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/bugprone/CMakeLists.txt?rev=372693&r1=372692&r2=372693&view=diff
> =====================================================================
> =========
> --- clang-tools-extra/trunk/clang-tidy/bugprone/CMakeLists.txt
> (original)
> +++ clang-tools-extra/trunk/clang-tidy/bugprone/CMakeLists.txt Tue
> Sep 24 00:43:26 2019
> @@ -15,6 +15,7 @@ add_clang_library(clangTidyBugproneModul
>    ForwardingReferenceOverloadCheck.cpp
>    InaccurateEraseCheck.cpp
>    IncorrectRoundingsCheck.cpp
> +  InfiniteLoopCheck.cpp
>    IntegerDivisionCheck.cpp
>    LambdaFunctionNameCheck.cpp
>    MacroParenthesesCheck.cpp
> 
> Modified: clang-tools-extra/trunk/docs/ReleaseNotes.rst
> URL: 
> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/ReleaseNotes.rst?rev=372693&r1=372692&r2=372693&view=diff
> =====================================================================
> =========
> --- clang-tools-extra/trunk/docs/ReleaseNotes.rst (original)
> +++ clang-tools-extra/trunk/docs/ReleaseNotes.rst Tue Sep 24 00:43:26
> 2019
> @@ -70,6 +70,86 @@ Improvements to clang-tidy
>  - New :doc:`bugprone-dynamic-static-initializers
>    <clang-tidy/checks/bugprone-dynamic-static-initializers>` check.
>  
> +- New OpenMP module.
> +
> +  For checks specific to `OpenMP <
> https://protect2.fireeye.com/url?k=da8eb47f-860496b0-da8ef4e4-0cc47ad93ea4-0c1ed127bf5b3ffa&q=1&u=https%3A%2F%2Fwww.openmp.org%2F>`_
>  API.
> +
> +- New :doc:`abseil-duration-addition
> +  <clang-tidy/checks/abseil-duration-addition>` check.
> +
> +  Checks for cases where addition should be performed in the
> ``absl::Time``
> +  domain.
> +
> +- New :doc:`abseil-duration-conversion-cast
> +  <clang-tidy/checks/abseil-duration-conversion-cast>` check.
> +
> +  Checks for casts of ``absl::Duration`` conversion functions, and
> recommends
> +  the right conversion function instead.
> +
> +- New :doc:`abseil-duration-unnecessary-conversion
> +  <clang-tidy/checks/abseil-duration-unnecessary-conversion>` check.
> +
> +  Finds and fixes cases where ``absl::Duration`` values are being
> converted to
> +  numeric types and back again.
> +
> +- New :doc:`abseil-time-comparison
> +  <clang-tidy/checks/abseil-time-comparison>` check.
> +
> +  Prefer comparisons in the ``absl::Time`` domain instead of the
> integer
> +  domain.
> +
> +- New :doc:`abseil-time-subtraction
> +  <clang-tidy/checks/abseil-time-subtraction>` check.
> +
> +  Finds and fixes ``absl::Time`` subtraction expressions to do
> subtraction
> +  in the Time domain instead of the numeric domain.
> +
> +- New :doc:`android-cloexec-pipe
> +  <clang-tidy/checks/android-cloexec-pipe>` check.
> +
> +  This check detects usage of ``pipe()``.
> +
> +- New :doc:`android-cloexec-pipe2
> +  <clang-tidy/checks/android-cloexec-pipe2>` check.
> +
> +  This checks ensures that ``pipe2()`` is called with the O_CLOEXEC
> flag.
> +
> +- New :doc:`bugprone-infinite-loop
> +  <clang-tidy/checks/bugprone-infinite-loop>` check.
> +
> +  Finds obvious infinite loops (loops where the condition variable
> is not
> +  changed at all).
> +
> +- New :doc:`bugprone-unhandled-self-assignment
> +  <clang-tidy/checks/bugprone-unhandled-self-assignment>` check.
> +
> +  Finds user-defined copy assignment operators which do not protect
> the code
> +  against self-assignment either by checking self-assignment
> explicitly or
> +  using the copy-and-swap or the copy-and-move method.
> +
> +- New :doc:`bugprone-branch-clone
> +  <clang-tidy/checks/bugprone-branch-clone>` check.
> +
> +  Checks for repeated branches in ``if/else if/else`` chains,
> consecutive
> +  repeated branches in ``switch`` statements and indentical true and
> false
> +  branches in conditional operators.
> +
> +- New :doc:`bugprone-posix-return
> +  <clang-tidy/checks/bugprone-posix-return>` check.
> +
> +  Checks if any calls to POSIX functions (except ``posix_openpt``)
> expect negative
> +  return values.
> +
> +- New :doc:`fuchsia-default-arguments-calls
> +  <clang-tidy/checks/fuchsia-default-arguments-calls>` check.
> +
> +  Warns if a function or method is called with default arguments.
> +  This was previously done by `fuchsia-default-arguments check`,
> which has been
> +  removed.
> +
> +- New :doc:`fuchsia-default-arguments-calls
> +  <clang-tidy/checks/fuchsia-default-arguments-calls>` check.
> +
>    Finds instances where variables with static storage are
> initialized
>    dynamically in header files.
>  
> @@ -103,6 +183,10 @@ Improvements to clang-tidy
>    Now also checks if any calls to ``pthread_*`` functions expect
> negative return
>    values.
>  
> +- New :doc:`bugprone-infinite-loop <clang-tidy/checks/bugprone-
> infinite-loop>`
> +  check to detect obvious infinite loops (loops where the condition
> variable is
> +  not changed at all).
> +
>  Improvements to include-fixer
>  -----------------------------
>  
> 
> Modified: clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst
> URL: 
> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst?rev=372693&r1=372692&r2=372693&view=diff
> =====================================================================
> =========
> --- clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst
> (original)
> +++ clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst Tue Sep
> 24 00:43:26 2019
> @@ -51,6 +51,7 @@ Clang-Tidy Checks
>     bugprone-forwarding-reference-overload
>     bugprone-inaccurate-erase
>     bugprone-incorrect-roundings
> +   bugprone-infinite-loop
>     bugprone-integer-division
>     bugprone-lambda-function-name
>     bugprone-macro-parentheses
> 
> 
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


More information about the cfe-commits mailing list