Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / libcxx / test / std / input.output / file.streams / c.files / cstdio.pass.cpp
blobd18af90fec1c3ac7156273ac79a641c3c8f14317
1 //===----------------------------------------------------------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
9 // test <cstdio>
11 #include <cstdio>
12 #include <type_traits>
14 #include "test_macros.h"
16 #ifndef BUFSIZ
17 #error BUFSIZ not defined
18 #endif
20 #ifndef EOF
21 #error EOF not defined
22 #endif
24 #ifndef FILENAME_MAX
25 #error FILENAME_MAX not defined
26 #endif
28 #ifndef FOPEN_MAX
29 #error FOPEN_MAX not defined
30 #endif
32 #ifndef L_tmpnam
33 #error L_tmpnam not defined
34 #endif
36 #ifndef NULL
37 #error NULL not defined
38 #endif
40 #ifndef SEEK_CUR
41 #error SEEK_CUR not defined
42 #endif
44 #ifndef SEEK_END
45 #error SEEK_END not defined
46 #endif
48 #ifndef SEEK_SET
49 #error SEEK_SET not defined
50 #endif
52 #ifndef TMP_MAX
53 #error TMP_MAX not defined
54 #endif
56 #ifndef _IOFBF
57 #error _IOFBF not defined
58 #endif
60 #ifndef _IOLBF
61 #error _IOLBF not defined
62 #endif
64 #ifndef _IONBF
65 #error _IONBF not defined
66 #endif
68 #ifndef stderr
69 #error stderr not defined
70 #endif
72 #ifndef stdin
73 #error stdin not defined
74 #endif
76 #ifndef stdout
77 #error stdout not defined
78 #endif
80 #include <cstdarg>
82 TEST_CLANG_DIAGNOSTIC_IGNORED("-Wformat-zero-length")
84 int main(int, char**)
86 std::FILE* fp = 0;
87 std::fpos_t fpos = std::fpos_t();
88 std::size_t s = 0;
89 char* cp = 0;
90 std::va_list va;
91 void const* vp = 0;
92 ((void)fp); // Prevent unused warning
93 ((void)fpos); // Prevent unused warning
94 ((void)s); // Prevent unused warning
95 ((void)cp); // Prevent unused warning
96 ((void)va); // Prevent unused warning
97 ((void)vp); // Prevent unused warning
98 static_assert((std::is_same<decltype(std::fclose(fp)), int>::value), "");
99 static_assert((std::is_same<decltype(std::fflush(fp)), int>::value), "");
100 static_assert((std::is_same<decltype(std::setbuf(fp,cp)), void>::value), "");
101 static_assert((std::is_same<decltype(std::vfprintf(fp," ",va)), int>::value), "");
102 static_assert((std::is_same<decltype(std::fprintf(fp," ")), int>::value), "");
103 static_assert((std::is_same<decltype(std::fscanf(fp," ")), int>::value), "");
104 static_assert((std::is_same<decltype(std::snprintf(cp,0," ")), int>::value), "");
105 TEST_DIAGNOSTIC_PUSH
106 TEST_CLANG_DIAGNOSTIC_IGNORED("-Wdeprecated-declarations")
107 TEST_GCC_DIAGNOSTIC_IGNORED("-Wdeprecated-declarations")
108 static_assert((std::is_same<decltype(std::sprintf(cp," ")), int>::value), "");
109 TEST_DIAGNOSTIC_POP
110 static_assert((std::is_same<decltype(std::sscanf(""," ")), int>::value), "");
111 static_assert((std::is_same<decltype(std::vfprintf(fp," ",va)), int>::value), "");
112 static_assert((std::is_same<decltype(std::vfscanf(fp," ",va)), int>::value), "");
113 static_assert((std::is_same<decltype(std::vsnprintf(cp,0," ",va)), int>::value), "");
114 TEST_DIAGNOSTIC_PUSH
115 TEST_CLANG_DIAGNOSTIC_IGNORED("-Wdeprecated-declarations")
116 TEST_GCC_DIAGNOSTIC_IGNORED("-Wdeprecated-declarations")
117 static_assert((std::is_same<decltype(std::vsprintf(cp," ",va)), int>::value), "");
118 TEST_DIAGNOSTIC_POP
119 static_assert((std::is_same<decltype(std::vsscanf(""," ",va)), int>::value), "");
120 static_assert((std::is_same<decltype(std::fgetc(fp)), int>::value), "");
121 static_assert((std::is_same<decltype(std::fgets(cp,0,fp)), char*>::value), "");
122 static_assert((std::is_same<decltype(std::fputc(0,fp)), int>::value), "");
123 static_assert((std::is_same<decltype(std::fputs("",fp)), int>::value), "");
124 static_assert((std::is_same<decltype(std::getc(fp)), int>::value), "");
125 static_assert((std::is_same<decltype(std::putc(0,fp)), int>::value), "");
126 static_assert((std::is_same<decltype(std::ungetc(0,fp)), int>::value), "");
127 static_assert((std::is_same<decltype(std::fread((void*)0,0,0,fp)), std::size_t>::value), "");
128 static_assert((std::is_same<decltype(std::fwrite(vp,0,0,fp)), std::size_t>::value), "");
129 #ifndef TEST_HAS_NO_FGETPOS_FSETPOS
130 static_assert((std::is_same<decltype(std::fgetpos(fp, &fpos)), int>::value), "");
131 #endif
132 static_assert((std::is_same<decltype(std::fseek(fp, 0,0)), int>::value), "");
133 #ifndef TEST_HAS_NO_FGETPOS_FSETPOS
134 static_assert((std::is_same<decltype(std::fsetpos(fp, &fpos)), int>::value), "");
135 #endif
136 static_assert((std::is_same<decltype(std::ftell(fp)), long>::value), "");
137 static_assert((std::is_same<decltype(std::rewind(fp)), void>::value), "");
138 static_assert((std::is_same<decltype(std::clearerr(fp)), void>::value), "");
139 static_assert((std::is_same<decltype(std::feof(fp)), int>::value), "");
140 static_assert((std::is_same<decltype(std::ferror(fp)), int>::value), "");
141 static_assert((std::is_same<decltype(std::perror("")), void>::value), "");
143 static_assert((std::is_same<decltype(std::fopen("", "")), std::FILE*>::value), "");
144 static_assert((std::is_same<decltype(std::freopen("", "", fp)), std::FILE*>::value), "");
145 static_assert((std::is_same<decltype(std::remove("")), int>::value), "");
146 static_assert((std::is_same<decltype(std::rename("","")), int>::value), "");
147 static_assert((std::is_same<decltype(std::tmpfile()), std::FILE*>::value), "");
149 TEST_DIAGNOSTIC_PUSH
150 TEST_CLANG_DIAGNOSTIC_IGNORED("-Wdeprecated-declarations")
151 TEST_GCC_DIAGNOSTIC_IGNORED("-Wdeprecated-declarations")
152 static_assert((std::is_same<decltype(std::tmpnam(cp)), char*>::value), "");
153 TEST_DIAGNOSTIC_POP
155 static_assert((std::is_same<decltype(std::getchar()), int>::value), "");
156 #if TEST_STD_VER <= 11
157 TEST_DIAGNOSTIC_PUSH
158 TEST_CLANG_DIAGNOSTIC_IGNORED("-Wdeprecated-declarations")
159 TEST_GCC_DIAGNOSTIC_IGNORED("-Wdeprecated-declarations")
160 static_assert((std::is_same<decltype(std::gets(cp)), char*>::value), "");
161 TEST_DIAGNOSTIC_POP
162 #endif
163 static_assert((std::is_same<decltype(std::scanf(" ")), int>::value), "");
164 static_assert((std::is_same<decltype(std::vscanf(" ",va)), int>::value), "");
166 static_assert((std::is_same<decltype(std::printf(" ")), int>::value), "");
167 static_assert((std::is_same<decltype(std::putchar(0)), int>::value), "");
168 static_assert((std::is_same<decltype(std::puts("")), int>::value), "");
169 static_assert((std::is_same<decltype(std::vprintf(" ",va)), int>::value), "");
171 return 0;