summaryrefslogtreecommitdiffstats
path: root/clang/test/Analysis/loop-unrolling.cpp
diff options
context:
space:
mode:
authorPeter Szecsi <szepet95@gmail.com>2017-10-28 12:19:08 +0000
committerPeter Szecsi <szepet95@gmail.com>2017-10-28 12:19:08 +0000
commit1496d188a07124f09589cdba0bd8cb8c58ade8be (patch)
treea831629e57a44aef3db021c62b429614ac526fd9 /clang/test/Analysis/loop-unrolling.cpp
parent39cfdc664dde0e9a2284b57493def6f05efc1c1b (diff)
downloadbcm5719-llvm-1496d188a07124f09589cdba0bd8cb8c58ade8be.tar.gz
bcm5719-llvm-1496d188a07124f09589cdba0bd8cb8c58ade8be.zip
[analyzer] LoopUnrolling: check the bitwidth of the used numbers (pr34943)
The loop unrolling feature aims to track the maximum possible steps a loop can make. In order to implement this, it investigates the initial value of the counter variable and the bound number. (It has to be known.) These numbers are used as llvm::APInts, however, it was not checked if their bitwidths are the same which lead to some crashes. This revision solves this problem by extending the "shorter" one (to the length of the "longer" one). For the detailed bug report, see: https://bugs.llvm.org/show_bug.cgi?id=34943 Differential Revision: https://reviews.llvm.org/D38922 llvm-svn: 316830
Diffstat (limited to 'clang/test/Analysis/loop-unrolling.cpp')
-rw-r--r--clang/test/Analysis/loop-unrolling.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/clang/test/Analysis/loop-unrolling.cpp b/clang/test/Analysis/loop-unrolling.cpp
index 8ea5b82aadb..844d1f18ea5 100644
--- a/clang/test/Analysis/loop-unrolling.cpp
+++ b/clang/test/Analysis/loop-unrolling.cpp
@@ -373,3 +373,9 @@ int num_steps_over_limit3() {
return 0;
}
+
+void pr34943() {
+ for (int i = 0; i < 6L; ++i) {
+ clang_analyzer_numTimesReached(); // expected-warning {{6}}
+ }
+}
OpenPOWER on IntegriCloud