diff options
author | Sean Eveson <eveson.sean@gmail.com> | 2015-10-30 11:13:07 +0000 |
---|---|---|
committer | Sean Eveson <eveson.sean@gmail.com> | 2015-10-30 11:13:07 +0000 |
commit | 4c7b3bf6ba68a9826850ab85cd59587149a5a5a9 (patch) | |
tree | f73064d0f2ccf6b3c5ba194281b59d15790eb5c2 /clang/test | |
parent | 94b648d3ab76c6a642508da784e24ee54a920540 (diff) | |
download | bcm5719-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.c | 3 | ||||
-rw-r--r-- | clang/test/Analysis/analyzer-config.cpp | 3 | ||||
-rw-r--r-- | clang/test/Analysis/loop-widening.c | 190 |
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}} -} |