// RUN: %clang_analyze_cc1 -analyzer-output=text \ // RUN: -analyzer-checker=core -verify %s int assuming_unsigned_ge_0(unsigned arg) { // TODO This testcase demonstrates the current incorrect behavior of Clang // Static Analyzer: here 'arg' is unsigned, so "arg >= 0" is not a fresh // assumption, but it still appears in the diagnostics as if it's fresh: // expected-note@+2 {{Assuming 'arg' is >= 0}} // expected-note@+1 {{Taking false branch}} if (arg < 0) return 0; // expected-note@+2 {{Assuming 'arg' is <= 0}} // expected-note@+1 {{Taking false branch}} if (arg > 0) return 0; // expected-note@+2 {{Division by zero}} // expected-warning@+1 {{Division by zero}} return 100 / arg; }