forked from llvm-mirror/clang
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[analyzer] Fix pthread lock tests so that the API comes from a system…
… header. ...and verify that a global mutex in user code can be used without warnings. Patch by Aleksei Sidorin! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@217515 91177308-0d34-0410-b5e6-96231b3b80d8
- Loading branch information
1 parent
c661f60
commit c279e01
Showing
2 changed files
with
45 additions
and
23 deletions.
There are no files selected for viewing
28 changes: 28 additions & 0 deletions
28
test/Analysis/Inputs/system-header-simulator-for-pthread-lock.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
// Like the compiler, the static analyzer treats some functions differently if | ||
// they come from a system header -- for example, pthread_mutex* functions | ||
// should not invalidate regions of their arguments. | ||
#pragma clang system_header | ||
|
||
typedef struct { | ||
void *foo; | ||
} pthread_mutex_t; | ||
|
||
typedef struct { | ||
void *foo; | ||
} pthread_mutexattr_t; | ||
|
||
typedef struct { | ||
void *foo; | ||
} lck_grp_t; | ||
|
||
typedef pthread_mutex_t lck_mtx_t; | ||
|
||
extern int pthread_mutex_lock(pthread_mutex_t *); | ||
extern int pthread_mutex_unlock(pthread_mutex_t *); | ||
extern int pthread_mutex_trylock(pthread_mutex_t *); | ||
extern int pthread_mutex_destroy(pthread_mutex_t *); | ||
extern int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *mutexattr); | ||
extern int lck_mtx_lock(lck_mtx_t *); | ||
extern int lck_mtx_unlock(lck_mtx_t *); | ||
extern int lck_mtx_try_lock(lck_mtx_t *); | ||
extern void lck_mtx_destroy(lck_mtx_t *lck, lck_grp_t *grp); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters