165 lines · c
1// RUN: %check_clang_tidy %s bugprone-spuriously-wake-up-functions %t -- --2#define NULL 03 4struct Node1 {5 void *Node1;6 struct Node1 *next;7};8 9typedef struct mtx_t {10} mtx_t;11typedef struct cnd_t {12} cnd_t;13struct timespec {};14 15int cnd_wait(cnd_t *cond, mtx_t *mutex){ return 0; };16int cnd_timedwait(cnd_t *cond, mtx_t *mutex,17 const struct timespec *time_point){ return 0; };18 19struct Node1 list_c;20static mtx_t lock;21static cnd_t condition_c;22struct timespec ts;23 24void consume_list_element(void) {25 26 if (list_c.next == NULL) {27 if (0 != cnd_wait(&condition_c, &lock)) {28 // CHECK-MESSAGES: :[[@LINE-1]]:14: warning: 'cnd_wait' should be placed inside a while statement [bugprone-spuriously-wake-up-functions]29 }30 }31 if (list_c.next == NULL)32 if (0 != cnd_wait(&condition_c, &lock))33 // CHECK-MESSAGES: :[[@LINE-1]]:14: warning: 'cnd_wait' should be placed inside a while statement [bugprone-spuriously-wake-up-functions]34 ;35 if (list_c.next == NULL && 0 != cnd_wait(&condition_c, &lock))36 // CHECK-MESSAGES: :[[@LINE-1]]:35: warning: 'cnd_wait' should be placed inside a while statement [bugprone-spuriously-wake-up-functions]37 ;38 while (list_c.next == NULL) {39 if (0 != cnd_wait(&condition_c, &lock)) {40 }41 }42 while (list_c.next == NULL)43 if (0 != cnd_wait(&condition_c, &lock)) {44 }45 while (list_c.next == NULL)46 if (0 != cnd_wait(&condition_c, &lock))47 ;48 if (list_c.next == NULL) {49 cnd_wait(&condition_c, &lock);50 // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: 'cnd_wait' should be placed inside a while statement [bugprone-spuriously-wake-up-functions]51 }52 if (list_c.next == NULL)53 cnd_wait(&condition_c, &lock);54 // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: 'cnd_wait' should be placed inside a while statement [bugprone-spuriously-wake-up-functions]55 while (list_c.next == NULL) {56 cnd_wait(&condition_c, &lock);57 }58 while (list_c.next == NULL)59 cnd_wait(&condition_c, &lock);60 61 do {62 if (0 != cnd_wait(&condition_c, &lock)) {63 }64 } while (list_c.next == NULL);65 do66 if (0 != cnd_wait(&condition_c, &lock)) {67 }68 while (list_c.next == NULL);69 do70 if (0 != cnd_wait(&condition_c, &lock))71 ;72 while (list_c.next == NULL);73 do {74 cnd_wait(&condition_c, &lock);75 } while (list_c.next == NULL);76 do77 cnd_wait(&condition_c, &lock);78 while (list_c.next == NULL);79 for (;; list_c.next == NULL) {80 if (0 != cnd_wait(&condition_c, &lock)) {81 }82 }83 for (;; list_c.next == NULL)84 if (0 != cnd_wait(&condition_c, &lock)) {85 }86 for (;; list_c.next == NULL)87 if (0 != cnd_wait(&condition_c, &lock))88 ;89 for (;; list_c.next == NULL) {90 cnd_wait(&condition_c, &lock);91 }92 for (;; list_c.next == NULL)93 cnd_wait(&condition_c, &lock);94 95 if (list_c.next == NULL) {96 if (0 != cnd_timedwait(&condition_c, &lock, &ts)) {97 // CHECK-MESSAGES: :[[@LINE-1]]:14: warning: 'cnd_timedwait' should be placed inside a while statement [bugprone-spuriously-wake-up-functions]98 }99 }100 if (list_c.next == NULL)101 if (0 != cnd_timedwait(&condition_c, &lock, &ts))102 // CHECK-MESSAGES: :[[@LINE-1]]:14: warning: 'cnd_timedwait' should be placed inside a while statement [bugprone-spuriously-wake-up-functions]103 ;104 if (list_c.next == NULL && 0 != cnd_timedwait(&condition_c, &lock, &ts))105 // CHECK-MESSAGES: :[[@LINE-1]]:35: warning: 'cnd_timedwait' should be placed inside a while statement [bugprone-spuriously-wake-up-functions]106 ;107 while (list_c.next == NULL) {108 if (0 != cnd_timedwait(&condition_c, &lock, &ts)) {109 }110 }111 while (list_c.next == NULL)112 if (0 != cnd_timedwait(&condition_c, &lock, &ts)) {113 }114 while (list_c.next == NULL)115 if (0 != cnd_timedwait(&condition_c, &lock, &ts))116 ;117 if (list_c.next == NULL) {118 cnd_timedwait(&condition_c, &lock, &ts);119 // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: 'cnd_timedwait' should be placed inside a while statement [bugprone-spuriously-wake-up-functions]120 }121 if (list_c.next == NULL)122 cnd_timedwait(&condition_c, &lock, &ts);123 // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: 'cnd_timedwait' should be placed inside a while statement [bugprone-spuriously-wake-up-functions]124 while (list_c.next == NULL) {125 cnd_timedwait(&condition_c, &lock, &ts);126 }127 while (list_c.next == NULL)128 cnd_timedwait(&condition_c, &lock, &ts);129 130 do {131 if (0 != cnd_timedwait(&condition_c, &lock, &ts)) {132 }133 } while (list_c.next == NULL);134 do135 if (0 != cnd_timedwait(&condition_c, &lock, &ts)) {136 }137 while (list_c.next == NULL);138 do139 if (0 != cnd_timedwait(&condition_c, &lock, &ts))140 ;141 while (list_c.next == NULL);142 do {143 cnd_timedwait(&condition_c, &lock, &ts);144 } while (list_c.next == NULL);145 do146 cnd_timedwait(&condition_c, &lock, &ts);147 while (list_c.next == NULL);148 for (;; list_c.next == NULL) {149 if (0 != cnd_timedwait(&condition_c, &lock, &ts)) {150 }151 }152 for (;; list_c.next == NULL)153 if (0 != cnd_timedwait(&condition_c, &lock, &ts)) {154 }155 for (;; list_c.next == NULL)156 if (0 != cnd_timedwait(&condition_c, &lock, &ts))157 ;158 for (;; list_c.next == NULL) {159 cnd_timedwait(&condition_c, &lock, &ts);160 }161 for (;; list_c.next == NULL)162 cnd_timedwait(&condition_c, &lock, &ts);163}164int main(void) { return 0; }165