1*73c120a9SValeriy Savchenko // RUN: %clang_analyze_cc1 -analyzer-checker=core -verify %s
2*73c120a9SValeriy Savchenko 
3*73c120a9SValeriy Savchenko // expected-no-diagnostics
4*73c120a9SValeriy Savchenko 
5*73c120a9SValeriy Savchenko void halt() __attribute__((__noreturn__));
assert(int b)6*73c120a9SValeriy Savchenko void assert(int b) {
7*73c120a9SValeriy Savchenko   if (!b)
8*73c120a9SValeriy Savchenko     halt();
9*73c120a9SValeriy Savchenko }
10*73c120a9SValeriy Savchenko 
decode(unsigned width)11*73c120a9SValeriy Savchenko void decode(unsigned width) {
12*73c120a9SValeriy Savchenko   assert(width > 0);
13*73c120a9SValeriy Savchenko 
14*73c120a9SValeriy Savchenko   int base;
15*73c120a9SValeriy Savchenko   bool inited = false;
16*73c120a9SValeriy Savchenko 
17*73c120a9SValeriy Savchenko   int i = 0;
18*73c120a9SValeriy Savchenko 
19*73c120a9SValeriy Savchenko   if (i % width == 0) {
20*73c120a9SValeriy Savchenko     base = 512;
21*73c120a9SValeriy Savchenko     inited = true;
22*73c120a9SValeriy Savchenko   }
23*73c120a9SValeriy Savchenko 
24*73c120a9SValeriy Savchenko   base += 1; // no-warning
25*73c120a9SValeriy Savchenko 
26*73c120a9SValeriy Savchenko   if (base >> 10)
27*73c120a9SValeriy Savchenko     assert(false);
28*73c120a9SValeriy Savchenko }
29