| // 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 |
| |
| // 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 |
| |
| #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; |
| } |