xref: /llvm-project/clang/test/Analysis/fuchsia_lock_impl.c (revision 1ea584377e7897f7df5302ed9cd378d17be14fbf)
1 // RUN: %clang_analyze_cc1 -analyzer-checker=alpha.fuchsia.Lock -verify %s
2 // expected-no-diagnostics
3 typedef int spin_lock_t;
4 
5 void spin_lock(spin_lock_t *lock);
6 int getCond(void);
spin_trylock(spin_lock_t * lock)7 int spin_trylock(spin_lock_t *lock) {
8     if (getCond())
9         return 0;
10     return -1;
11 }
12 void spin_unlock(spin_lock_t *lock);
13 
14 spin_lock_t mtx;
no_crash(void)15 void no_crash(void) {
16   if (spin_trylock(&mtx) == 0)
17     spin_unlock(&mtx);
18 }
19