summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
authorSean Eveson <eveson.sean@gmail.com>2015-10-30 11:13:07 +0000
committerSean Eveson <eveson.sean@gmail.com>2015-10-30 11:13:07 +0000
commit4c7b3bf6ba68a9826850ab85cd59587149a5a5a9 (patch)
treef73064d0f2ccf6b3c5ba194281b59d15790eb5c2 /clang/test
parent94b648d3ab76c6a642508da784e24ee54a920540 (diff)
downloadbcm5719-llvm-4c7b3bf6ba68a9826850ab85cd59587149a5a5a9.tar.gz
bcm5719-llvm-4c7b3bf6ba68a9826850ab85cd59587149a5a5a9.zip
Revert r251621 "[Analyzer] Widening loops which do not exit" (bot failure)
Seems to be causing clang-cmake-mips build bot to fail (timeout) http://lab.llvm.org:8011/builders/clang-cmake-mips/builds/10299 llvm-svn: 251697
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/Analysis/analyzer-config.c3
-rw-r--r--clang/test/Analysis/analyzer-config.cpp3
-rw-r--r--clang/test/Analysis/loop-widening.c190
3 files changed, 2 insertions, 194 deletions
diff --git a/clang/test/Analysis/analyzer-config.c b/clang/test/Analysis/analyzer-config.c
index 6faeeb3bf73..5fe53249d77 100644
--- a/clang/test/Analysis/analyzer-config.c
+++ b/clang/test/Analysis/analyzer-config.c
@@ -25,7 +25,6 @@ void foo() {
// CHECK-NEXT: min-cfg-size-treat-functions-as-large = 14
// CHECK-NEXT: mode = deep
// CHECK-NEXT: region-store-small-struct-limit = 2
-// CHECK-NEXT: widen-loops = false
// CHECK-NEXT: [stats]
-// CHECK-NEXT: num-entries = 15
+// CHECK-NEXT: num-entries = 14
diff --git a/clang/test/Analysis/analyzer-config.cpp b/clang/test/Analysis/analyzer-config.cpp
index 23f08286eb7..57913321f42 100644
--- a/clang/test/Analysis/analyzer-config.cpp
+++ b/clang/test/Analysis/analyzer-config.cpp
@@ -36,6 +36,5 @@ public:
// CHECK-NEXT: min-cfg-size-treat-functions-as-large = 14
// CHECK-NEXT: mode = deep
// CHECK-NEXT: region-store-small-struct-limit = 2
-// CHECK-NEXT: widen-loops = false
// CHECK-NEXT: [stats]
-// CHECK-NEXT: num-entries = 20
+// CHECK-NEXT: num-entries = 19
diff --git a/clang/test/Analysis/loop-widening.c b/clang/test/Analysis/loop-widening.c
deleted file mode 100644
index 0b9bf708087..00000000000
--- a/clang/test/Analysis/loop-widening.c
+++ /dev/null
@@ -1,190 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.Malloc,debug.ExprInspection -analyzer-max-loop 4 -analyzer-config widen-loops=true -verify %s
-
-void clang_analyzer_eval(int);
-void clang_analyzer_warnIfReached();
-
-typedef __typeof(sizeof(int)) size_t;
-void *malloc(size_t);
-void free(void *);
-
-void loop_which_iterates_limit_times_not_widened() {
- int i;
- int x = 1;
- // Check loop isn't widened by checking x isn't invalidated
- for (i = 0; i < 1; ++i) {}
- clang_analyzer_eval(x == 1); // expected-warning {{TRUE}}
- for (i = 0; i < 2; ++i) {}
- clang_analyzer_eval(x == 1); // expected-warning {{TRUE}}
- for (i = 0; i < 3; ++i) {}
- // FIXME loss of precision as a result of evaluating the widened loop body
- // *instead* of the last iteration.
- clang_analyzer_eval(x == 1); // expected-warning {{UNKNOWN}}
-}
-
-int a_global;
-
-void loop_evaluated_before_widening() {
- int i;
- a_global = 1;
- for (i = 0; i < 10; ++i) {
- if (i == 2) {
- // True before widening then unknown after.
- clang_analyzer_eval(a_global == 1); // expected-warning{{TRUE}} expected-warning{{UNKNOWN}}
- }
- }
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
-}
-
-void warnings_after_loop() {
- int i;
- for (i = 0; i < 10; ++i) {}
- char *m = (char*)malloc(12);
-} // expected-warning {{Potential leak of memory pointed to by 'm'}}
-
-void for_loop_exits() {
- int i;
- for (i = 0; i < 10; ++i) {}
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
-}
-
-void while_loop_exits() {
- int i = 0;
- while (i < 10) {++i;}
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
-}
-
-void do_while_loop_exits() {
- int i = 0;
- do {++i;} while (i < 10);
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
-}
-
-void loop_body_is_widened() {
- int i = 0;
- while (i < 100) {
- if (i > 10) {
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- }
- ++i;
- }
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
-}
-
-void invariably_infinite_loop() {
- int i = 0;
- while (1) { ++i; }
- clang_analyzer_warnIfReached(); // no-warning
-}
-
-void invariably_infinite_break_loop() {
- int i = 0;
- while (1) {
- ++i;
- int x = 1;
- if (!x) break;
- }
- clang_analyzer_warnIfReached(); // no-warning
-}
-
-void reachable_break_loop() {
- int i = 0;
- while (1) {
- ++i;
- if (i == 100) break;
- }
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
-}
-
-void condition_constrained_true_in_loop() {
- int i = 0;
- while (i < 50) {
- clang_analyzer_eval(i < 50); // expected-warning {{TRUE}}
- ++i;
- }
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
-}
-
-void condition_constrained_false_after_loop() {
- int i = 0;
- while (i < 50) {
- ++i;
- }
- clang_analyzer_eval(i >= 50); // expected-warning {{TRUE}}
- clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
-}
-
-void multiple_exit_test() {
- int x = 0;
- int i = 0;
- while (i < 50) {
- if (x) {
- i = 10;
- break;
- }
- ++i;
- }
- // Reachable by 'normal' exit
- if (i == 50) clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- // Reachable by break point
- if (i == 10) clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
- // Not reachable
- if (i < 10) clang_analyzer_warnIfReached(); // no-warning
- if (i > 10 && i < 50) clang_analyzer_warnIfReached(); // no-warning
-}
-
-void pointer_doesnt_leak_from_loop() {
- int *h_ptr = (int *) malloc(sizeof(int));
- for (int i = 0; i < 2; ++i) {}
- for (int i = 0; i < 10; ++i) {} // no-warning
- free(h_ptr);
-}
-
-int g_global;
-
-void unknown_after_loop(int s_arg) {
- g_global = 0;
- s_arg = 1;
- int s_local = 2;
- int *h_ptr = malloc(sizeof(int));
-
- for (int i = 0; i < 10; ++i) {}
-
- clang_analyzer_eval(g_global); // expected-warning {{UNKNOWN}}
- clang_analyzer_eval(s_arg); // expected-warning {{UNKNOWN}}
- clang_analyzer_eval(s_local); // expected-warning {{UNKNOWN}}
- clang_analyzer_eval(h_ptr == 0); // expected-warning {{UNKNOWN}}
- free(h_ptr);
-}
-
-void variable_bound_exiting_loops_widened(int x) {
- int i = 0;
- int t = 1;
- while (i < x) {
- ++i;
- }
- clang_analyzer_eval(t == 1); // expected-warning {{TRUE}} // expected-warning {{UNKNOWN}}
-}
-
-void nested_loop_outer_widen() {
- int i = 0, j = 0;
- for (i = 0; i < 10; i++) {
- clang_analyzer_eval(i < 10); // expected-warning {{TRUE}}
- for (j = 0; j < 2; j++) {
- clang_analyzer_eval(j < 2); // expected-warning {{TRUE}}
- }
- clang_analyzer_eval(j >= 2); // expected-warning {{TRUE}}
- }
- clang_analyzer_eval(i >= 10); // expected-warning {{TRUE}}
-}
-
-void nested_loop_inner_widen() {
- int i = 0, j = 0;
- for (i = 0; i < 2; i++) {
- clang_analyzer_eval(i < 2); // expected-warning {{TRUE}}
- for (j = 0; j < 10; j++) {
- clang_analyzer_eval(j < 10); // expected-warning {{TRUE}}
- }
- clang_analyzer_eval(j >= 10); // expected-warning {{TRUE}}
- }
- clang_analyzer_eval(i >= 2); // expected-warning {{TRUE}}
-}
OpenPOWER on IntegriCloud