Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / compiler-rt / test / msan / sigwait.cpp
blob80f3f21ffff3b002c75a2f3dc7996aad0e20f90f
1 // RUN: %clangxx_msan -std=c++11 -O0 -g %s -o %t && %run %t
2 // RUN: %clangxx_msan -DPOSITIVE -std=c++11 -O0 -g %s -o %t && not %run %t 2>&1 | FileCheck %s
4 #include <assert.h>
5 #include <signal.h>
6 #include <sys/time.h>
7 #include <sys/wait.h>
8 #include <unistd.h>
10 #include <sanitizer/msan_interface.h>
12 void test_sigwait() {
13 sigset_t s;
14 #ifndef POSITIVE
15 sigemptyset(&s);
16 sigaddset(&s, SIGUSR1);
17 #endif
18 sigprocmask(SIG_BLOCK, &s, 0);
19 // CHECK: MemorySanitizer: use-of-uninitialized-value
21 if (pid_t pid = fork()) {
22 kill(pid, SIGUSR1);
23 int child_stat;
24 wait(&child_stat);
25 _exit(!WIFEXITED(child_stat));
26 } else {
27 int sig;
28 int res = sigwait(&s, &sig);
29 assert(!res);
30 // The following checks that sig is initialized.
31 assert(sig == SIGUSR1);
35 int main(void) {
36 test_sigwait();
37 return 0;