Skip to content

Commit a8d5803

Browse files
committed
added div by zero tests
1 parent 7348db1 commit a8d5803

File tree

2 files changed

+76
-0
lines changed

2 files changed

+76
-0
lines changed
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// RUN: %clang_analyze_cc1 -Wno-strict-prototypes -Wno-error=implicit-int -verify %s \
2+
// RUN: -analyzer-checker=core \
3+
// RUN: -analyzer-checker=debug.ExprInspection -analyzer-config model-pthreads=true
4+
5+
#define NULL ((void*) 0)
6+
enum bool {
7+
false,
8+
true
9+
};
10+
11+
12+
typedef unsigned long int pthread_t;
13+
typedef struct __pthread_attr pthread_attr_t;
14+
15+
int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg);
16+
17+
int pthread_join(pthread_t thread, void **retval);
18+
void clang_analyzer_checkInlined(int);
19+
20+
void* worker(void *arg){
21+
clang_analyzer_checkInlined(true); // expected-warning{{TRUE}}
22+
int z = 0;
23+
if(z == 0){
24+
int c = 1 / z; // expected-warning{{Division by zero}}
25+
}
26+
return NULL;
27+
}
28+
29+
int fee(){
30+
pthread_t t;
31+
pthread_create(&t, NULL, worker, NULL);
32+
return 0;
33+
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
// RUN: %clang_analyze_cc1 -Wno-strict-prototypes -Wno-error=implicit-int -verify %s \
2+
// RUN: -analyzer-checker=core \
3+
// RUN: -analyzer-checker=debug.ExprInspection -analyzer-config model-pthreads=true
4+
5+
#define NULL ((void*) 0)
6+
enum bool {
7+
false,
8+
true
9+
};
10+
11+
12+
typedef unsigned long int pthread_t;
13+
typedef struct __pthread_attr pthread_attr_t;
14+
15+
int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg);
16+
17+
int pthread_join(pthread_t thread, void **retval);
18+
void clang_analyzer_checkInlined(int);
19+
20+
void* worker1(void *arg){
21+
clang_analyzer_checkInlined(true); // expected-warning{{TRUE}}
22+
int z = 0;
23+
if(z == 0){
24+
int c = 1 / z; // expected-warning{{Division by zero}}
25+
}
26+
return NULL;
27+
}
28+
29+
void* worker2(void *arg){
30+
clang_analyzer_checkInlined(true); // expected-warning{{TRUE}}
31+
int y = 0;
32+
if(y == 0){
33+
int d = 1 / y; // expected-warning{{Division by zero}}
34+
}
35+
return NULL;
36+
}
37+
38+
int fee(){
39+
pthread_t t1, t2;
40+
pthread_create(&t1, NULL, worker1, NULL);
41+
pthread_create(&t2, NULL, worker2, NULL);
42+
return 0;
43+
}

0 commit comments

Comments
 (0)