fuchsia_lock_impl.c 399 Bytes
// RUN: %clang_analyze_cc1 -analyzer-checker=alpha.fuchsia.Lock -verify %s
// expected-no-diagnostics
typedef int spin_lock_t;

void spin_lock(spin_lock_t *lock);
int getCond();
int spin_trylock(spin_lock_t *lock) {
    if (getCond())
        return 0;
    return -1;
}
void spin_unlock(spin_lock_t *lock);

spin_lock_t mtx;
void no_crash() {
  if (spin_trylock(&mtx) == 0)
    spin_unlock(&mtx);
}