187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection -verify %s
287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarvoid clang_analyzer_eval(int);
487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarvoid clang_analyzer_warnIfReached();
587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#define INT_MIN 0x80000000
787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#define INT_MAX 0x7fffffff
887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// PR16833: Analyzer consumes memory until killed by kernel OOM killer
1087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// while analyzing large case ranges.
1187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarvoid PR16833(unsigned op) {
1287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  switch (op) {
1387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  case 0x02 << 26 ... 0x03 << 26: // Analyzer should not hang here.
1487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    return;
1587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  }
1687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar}
1787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
1887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarvoid testAdjustment(int t) {
1987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  switch (t + 1) {
2087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  case 2:
2187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    clang_analyzer_eval(t == 1); // expected-warning{{TRUE}}
2287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    break;
2387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  case 3 ... 10:
2487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    clang_analyzer_eval(t > 1);        // expected-warning{{TRUE}}
2587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    clang_analyzer_eval(t + 2 <= 11);  // expected-warning{{TRUE}}
2687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    clang_analyzer_eval(t > 2);        // expected-warning{{UNKNOWN}}
2787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    clang_analyzer_eval(t + 1 == 3);   // expected-warning{{UNKNOWN}}
2887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    clang_analyzer_eval(t + 1 == 10);  // expected-warning{{UNKNOWN}}
2987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    break;
3087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  default:
3187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    clang_analyzer_warnIfReached();    // expected-warning{{REACHABLE}}
3287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  }
3387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar}
3487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
3587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarvoid testUnknownVal(int value, int mask) {
3687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  // Once ConstraintManager will process '&' and this test will require some changes.
3787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  switch (value & mask) {
3887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    case 1:
3987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
4087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      break;
4187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    case 3 ... 10:
4287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
4387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      break;
4487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    default:
4587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
4687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  }
4787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar}
4887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
4987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarvoid testSwitchCond(int arg) {
5087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  if (arg > 10) {
5187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    switch (arg) {
5287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    case INT_MIN ... 10:
5387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      clang_analyzer_warnIfReached(); // no-warning
5487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      break;
5587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    case 11 ... 20:
5687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
5787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      break;
5887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    default:
5987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
6087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    }
6187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
6287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    switch (arg) {
6387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    case INT_MIN ... 9:
6487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      clang_analyzer_warnIfReached();  // no-warning
6587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      break;
6687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    case 10 ... 20:
6787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      clang_analyzer_warnIfReached();  // expected-warning{{REACHABLE}}
6887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      clang_analyzer_eval(arg > 10);   // expected-warning{{TRUE}}
6987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      break;
7087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    default:
7187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      clang_analyzer_warnIfReached();  // expected-warning{{REACHABLE}}
7287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    }
7387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  } // arg > 10
7487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar}
7587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
7687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarvoid testDefaultUnreachable(int arg) {
7787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  if (arg > 10) {
7887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    switch (arg) {
7987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    case INT_MIN ... 9:
8087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      clang_analyzer_warnIfReached();   // no-warning
8187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      break;
8287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    case 10 ... INT_MAX:
8387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      clang_analyzer_warnIfReached();   // expected-warning{{REACHABLE}}
8487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      clang_analyzer_eval(arg > 10);    // expected-warning{{TRUE}}
8587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      break;
8687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    default:
8787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      clang_analyzer_warnIfReached();   // no-warning
8887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    }
8987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  }
9087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar}
9187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
9287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarvoid testBranchReachability(int arg) {
9387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  if (arg > 10 && arg < 20) {
9487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    switch (arg) {
9587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    case INT_MIN ... 4:
9687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      clang_analyzer_warnIfReached(); // no-warning
9787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      break;
9887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    case 5 ... 9:
9987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      clang_analyzer_warnIfReached(); // no-warning
10087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      break;
10187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    case 10 ... 15:
10287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      clang_analyzer_warnIfReached();              // expected-warning{{REACHABLE}}
10387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      clang_analyzer_eval(arg > 10 && arg <= 15);  // expected-warning{{TRUE}}
10487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      break;
10587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    default:
10687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      clang_analyzer_warnIfReached(); // no-warning
10787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      break;
10887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    case 17 ... 25:
10987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      clang_analyzer_warnIfReached();              // expected-warning{{REACHABLE}}
11087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      clang_analyzer_eval(arg >= 17 && arg < 20);  // expected-warning{{TRUE}}
11187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      break;
11287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    case 26 ... INT_MAX:
11387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      clang_analyzer_warnIfReached();   // no-warning
11487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      break;
11587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    case 16:
11687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      clang_analyzer_warnIfReached();   // expected-warning{{REACHABLE}}
11787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      clang_analyzer_eval(arg == 16);   // expected-warning{{TRUE}}
11887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      break;
11987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    }
12087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  }
12187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar}
12287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
12387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarvoid testDefaultBranchRange(int arg) {
12487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  switch (arg) {
12587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  case INT_MIN ... 9:
12687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    clang_analyzer_warnIfReached();  // expected-warning{{REACHABLE}}
12787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    break;
12887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  case 20 ... INT_MAX:
12987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    clang_analyzer_warnIfReached();  // expected-warning{{REACHABLE}}
13087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    clang_analyzer_eval(arg >= 20);  // expected-warning{{TRUE}}
13187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    break;
13287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  default:
13387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    clang_analyzer_warnIfReached();  // expected-warning{{REACHABLE}}
13487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    clang_analyzer_eval(arg == 16);  // expected-warning{{FALSE}}
13587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    clang_analyzer_eval(arg > 9);    // expected-warning{{TRUE}}
13687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    clang_analyzer_eval(arg <= 20);  // expected-warning{{TRUE}}
13787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
13887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  case 16:
13987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    clang_analyzer_warnIfReached();  // expected-warning{{REACHABLE}}
14087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  }
14187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar}
14287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
14387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarvoid testAllUnreachableButDefault(int arg) {
14487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  if (arg < 0) {
14587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    switch (arg) {
14687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    case 0 ... 9:
14787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      clang_analyzer_warnIfReached(); // no-warning
14887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      break;
14987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    case 20 ... INT_MAX:
15087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      clang_analyzer_warnIfReached(); // no-warning
15187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      break;
15287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    default:
15387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
15487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      break;
15587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    case 16:
15687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      clang_analyzer_warnIfReached(); // no-warning
15787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    }
15887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    clang_analyzer_warnIfReached();   // expected-warning{{REACHABLE}}
15987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  }
16087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar}
16187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
16287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarvoid testAllUnreachable(int arg) {
16387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  if (arg < 0) {
16487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    switch (arg) {
16587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    case 0 ... 9:
16687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      clang_analyzer_warnIfReached(); // no-warning
16787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      break;
16887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    case 20 ... INT_MAX:
16987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      clang_analyzer_warnIfReached(); // no-warning
17087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      break;
17187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    case 16:
17287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      clang_analyzer_warnIfReached(); // no-warning
17387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    }
17487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    clang_analyzer_warnIfReached();   // expected-warning{{REACHABLE}}
17587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  }
17687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar}
17787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
17887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarvoid testDifferentTypes(int arg) {
17987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  switch (arg) {
18087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  case -1U ... 400000000LL:
18187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
18287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      break;
18387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    default:
18487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
18587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      break;
18687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  }
18787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar}
18887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
18987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarvoid testDifferentTypes2(unsigned long arg) {
19087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  switch (arg) {
19187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  case 1UL ... 400000000UL:
19287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
19387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      break;
19487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    default:
19587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
19687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      break;
19787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  }
19887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar}
19987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
20087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarvoid testDifferentTypes3(int arg) {
20187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  switch (arg) {
20287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  case 1UL ... 400000000UL:
20387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
20487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      break;
20587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    default:
20687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
20787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar      break;
20887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  }
20987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar}
21087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
21187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarvoid testConstant() {
21287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  switch (3) {
21387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  case 1 ... 5:
21487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}
21587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    break;
21687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  default:
21787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    clang_analyzer_warnIfReached(); // no-warning
21887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar    break;
21987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  }
22087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar}
221