// RUN: %clang %s -fsyntax-only -Xclang -verify -fblocks -Wunreachable-code-aggressive -Wno-unused-value -Wno-covered-switch-default

// This previously triggered a warning from -Wunreachable-code because of
// a busted CFG.
typedef signed char BOOL;
BOOL radar10989084() {
  @autoreleasepool {  // no-warning
    return __objc_yes;
  }
}

// Test the warning works.
void test_unreachable() {
  return;
  return; // expected-warning {{will never be executed}}
}

#define NO __objc_no
#define YES __objc_yes
#define CONFIG NO

// Test that 'NO' and 'YES' are not treated as configuration macros.
int test_NO() {
  if (NO)
    return 1; // expected-warning {{will never be executed}}
  else
    return 0;
}

int test_YES() {
  if (YES)
    return 1;
  else
    return 0; // expected-warning {{will never be executed}}
}

int test_CONFIG() {
  if (CONFIG)
    return 1;
  else
    return 0;
}

// FIXME: This should at some point report a warning
// that the loop increment is unreachable.
void test_loop_increment(id container) {
  for (id x in container) { // no-warning
    break;
  }
}

void calledFun() {}

// Test "silencing" with parentheses.
void test_with_paren_silencing(int x) {
  if (NO) calledFun(); // expected-warning {{will never be executed}} expected-note {{silence by adding parentheses to mark code as explicitly dead}}
  if ((NO)) calledFun(); // no-warning

  if (YES) // expected-note {{silence by adding parentheses to mark code as explicitly dead}}
    calledFun();
  else
    calledFun(); // expected-warning {{will never be executed}}

  if ((YES))
    calledFun();
  else
    calledFun(); // no-warning
  
  if (!YES) // expected-note {{silence by adding parentheses to mark code as explicitly dead}}
    calledFun(); // expected-warning {{code will never be executed}}
  else
    calledFun();
  
  if ((!YES))
    calledFun(); // no-warning
  else
    calledFun();
  
  if (!(YES))
    calledFun(); // no-warning
  else
    calledFun();
}

