2015-03-03 03:34:27 +08:00
|
|
|
// RUN: %clangxx_msan -DGETC -O0 -g -xc++ %s -o %t && %run %t
|
|
|
|
// RUN: %clangxx_msan -DGETC -O3 -g -xc++ %s -o %t && %run %t
|
|
|
|
// RUN: %clang_msan -DGETC -O0 -g %s -o %t && %run %t
|
|
|
|
// RUN: %clang_msan -DGETC -O3 -g %s -o %t && %run %t
|
2014-04-25 21:26:21 +08:00
|
|
|
|
2015-03-03 03:34:27 +08:00
|
|
|
// RUN: %clangxx_msan -DGETCHAR -O0 -g -xc++ %s -o %t && %run %t
|
|
|
|
// RUN: %clangxx_msan -DGETCHAR -O3 -g -xc++ %s -o %t && %run %t
|
|
|
|
// RUN: %clang_msan -DGETCHAR -O0 -g %s -o %t && %run %t
|
|
|
|
// RUN: %clang_msan -DGETCHAR -O3 -g %s -o %t && %run %t
|
2014-04-25 21:26:21 +08:00
|
|
|
|
|
|
|
#include <assert.h>
|
|
|
|
#include <stdio.h>
|
|
|
|
#include <unistd.h>
|
|
|
|
|
|
|
|
int main() {
|
|
|
|
FILE *stream = fopen("/dev/zero", "r");
|
|
|
|
flockfile (stream);
|
|
|
|
int c;
|
|
|
|
#if defined(GETCHAR)
|
|
|
|
int res = dup2(fileno(stream), 0);
|
|
|
|
assert(res == 0);
|
|
|
|
c = getchar_unlocked();
|
|
|
|
#elif defined(GETC)
|
|
|
|
c = getc_unlocked (stream);
|
|
|
|
#endif
|
|
|
|
funlockfile (stream);
|
|
|
|
if (c == EOF)
|
|
|
|
return 1;
|
|
|
|
printf("%c\n", (char)c);
|
|
|
|
fclose(stream);
|
|
|
|
return 0;
|
|
|
|
}
|