brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.6 KiB · 8ef76e9 Raw
126 lines · c
1// RUN: rm -fR %t2// RUN: split-file %s %t3// RUN: %clang_cc1 -fsyntax-only -verify -Werror=implicit-function-declaration -std=c89 %t/stdargneeds0.c4// RUN: %clang_cc1 -fsyntax-only -verify=expected-modules -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -Werror=implicit-function-declaration -std=c89 %t/stdargneeds0.c5// RUN: %clang_cc1 -fsyntax-only -verify -Werror=implicit-function-declaration -std=c89 %t/stdargneeds1.c6// RUN: %clang_cc1 -fsyntax-only -verify=expected-modules -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -Werror=implicit-function-declaration -std=c89 %t/stdargneeds1.c7// RUN: %clang_cc1 -fsyntax-only -verify -Werror=implicit-function-declaration -std=c89 %t/stdargneeds2.c8// RUN: %clang_cc1 -fsyntax-only -verify=expected-modules -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -Werror=implicit-function-declaration -std=c89 %t/stdargneeds2.c9// RUN: %clang_cc1 -fsyntax-only -verify -Werror=implicit-function-declaration -std=c89 %t/stdargneeds3.c10// RUN: %clang_cc1 -fsyntax-only -verify=expected-modules -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -Werror=implicit-function-declaration -std=c89 %t/stdargneeds3.c11// RUN: %clang_cc1 -fsyntax-only -verify -Werror=implicit-function-declaration -std=c89 %t/stdargneeds4.c12// RUN: %clang_cc1 -fsyntax-only -verify=expected-modules -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -Werror=implicit-function-declaration -std=c89 %t/stdargneeds4.c13// RUN: %clang_cc1 -fsyntax-only -verify -Werror=implicit-function-declaration -std=c89 %t/stdargneeds5.c14// RUN: %clang_cc1 -fsyntax-only -verify=expected-modules -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -Werror=implicit-function-declaration -std=c89 %t/stdargneeds5.c15 16// Split the file so that the "implicitly declaring library function" errors get repeated.17// Use C89 to verify that __need_ can be used to get types that wouldn't normally be available.18 19//--- stdargneeds0.c20static void f(int p, ...) {21    __gnuc_va_list g; // expected-error{{undeclared identifier '__gnuc_va_list'}} expected-modules-error{{undeclared identifier}}22    va_list v; // expected-error{{undeclared identifier 'va_list'}} expected-modules-error{{undeclared identifier}}23    va_start(v, p); // expected-error{{implicitly declaring library function 'va_start'}} expected-note{{include the header <stdarg.h> or explicitly provide a declaration for 'va_start'}} expected-error{{undeclared identifier 'v'}} \24                       expected-modules-error{{implicitly declaring library function}} expected-modules-note{{provide a declaration}} expected-modules-error{{undeclared identifier}}25    int i = va_arg(v, int); // expected-error{{implicit declaration of function 'va_arg'}} expected-error{{expected expression}} expected-error{{use of undeclared identifier 'v'}} \26                               expected-modules-error{{implicit declaration of function}} expected-modules-error{{expected expression}} expected-modules-error{{undeclared identifier}}27    va_end(v); // expected-error{{implicitly declaring library function 'va_end'}} expected-note{{include the header <stdarg.h> or explicitly provide a declaration for 'va_end'}} expected-error{{undeclared identifier 'v'}} \28                  expected-modules-error{{implicitly declaring library function}} expected-modules-note{{provide a declaration}} expected-modules-error{{undeclared identifier}}29    __va_copy(g, v); // expected-error{{implicit declaration of function '__va_copy'}} expected-error{{use of undeclared identifier 'g'}} expected-error{{use of undeclared identifier 'v'}} \30                        expected-modules-error{{implicit declaration of function}} expected-modules-error{{undeclared identifier}} expected-modules-error{{undeclared identifier}}31    va_copy(g, v); // expected-error{{implicitly declaring library function 'va_copy'}} expected-note{{include the header <stdarg.h> or explicitly provide a declaration for 'va_copy'}} expected-error{{use of undeclared identifier 'g'}} expected-error{{use of undeclared identifier 'v'}} \32                      expected-modules-error{{implicitly declaring library function}} expected-modules-note{{provide a declaration}} expected-modules-error{{undeclared identifier}} expected-modules-error{{undeclared identifier}}33}34 35//--- stdargneeds1.c36#define __need___va_list37#include <stdarg.h>38static void f(int p, ...) {39    __gnuc_va_list g;40    va_list v; // expected-error{{undeclared identifier}} \41                  expected-modules-error{{'va_list' must be declared before it is used}} expected-modules-note@__stdarg_va_list.h:*{{declaration here is not visible}}42    va_start(v, p); // expected-error{{implicitly declaring library function}} expected-note{{provide a declaration}} expected-error{{undeclared identifier}} \43                       expected-modules-error{{implicitly declaring library function}} expected-modules-note{{provide a declaration}}44    int i = va_arg(v, int); // expected-error{{implicit declaration of function}} expected-error{{expected expression}} expected-error{{undeclared identifier}} \45                               expected-modules-error{{implicit declaration of function}} expected-modules-error{{expected expression}}46    va_end(v); // expected-error{{implicitly declaring library function}} expected-note{{provide a declaration}} expected-error{{undeclared identifier}} \47                  expected-modules-error{{implicitly declaring library function}} expected-modules-note{{provide a declaration}}48    __va_copy(g, v); // expected-error{{implicit declaration of function}} expected-error{{undeclared identifier}} \49                        expected-modules-error{{implicit declaration of function}}50    va_copy(g, v); // expected-error{{implicitly declaring library function}} expected-note{{provide a declaration}} expected-error{{undeclared identifier}} \51                      expected-modules-error{{implicitly declaring library function}} expected-modules-note{{provide a declaration}}52}53 54//--- stdargneeds2.c55#define __need_va_list56#include <stdarg.h>57static void f(int p, ...) {58    __gnuc_va_list g; // expected-error{{undeclared identifier}} \59                         expected-modules-error{{'__gnuc_va_list' must be declared before it is used}} expected-modules-note@__stdarg___gnuc_va_list.h:*{{declaration here is not visible}}60    va_list v;61    va_start(v, p); // expected-error{{implicitly declaring library function}} expected-note{{provide a declaration}} \62                       expected-modules-error{{implicitly declaring library function}} expected-modules-note{{provide a declaration}}63    int i = va_arg(v, int); // expected-error{{implicit declaration of function}} expected-error{{expected expression}} \64                               expected-modules-error{{implicit declaration of function}} expected-modules-error{{expected expression}}65    va_end(v); // expected-error{{implicitly declaring library function}} expected-note{{provide a declaration}} \66                  expected-modules-error{{implicitly declaring library function}} expected-modules-note{{provide a declaration}}67    __va_copy(g, v); // expected-error{{implicit declaration of function}} expected-error{{undeclared identifier}} \68                        expected-modules-error{{implicit declaration of function}}69    va_copy(g, v); // expected-error{{implicitly declaring library function}} expected-note{{provide a declaration}} expected-error{{undeclared identifier}} \70                      expected-modules-error{{implicitly declaring library function}} expected-modules-note{{provide a declaration}}71}72 73//--- stdargneeds3.c74#define __need_va_list75#define __need_va_arg76#include <stdarg.h>77static void f(int p, ...) {78    __gnuc_va_list g; // expected-error{{undeclared identifier}} \79                         expected-modules-error{{'__gnuc_va_list' must be declared before it is used}} expected-modules-note@__stdarg___gnuc_va_list.h:*{{declaration here is not visible}}80    va_list v;81    va_start(v, p);82    int i = va_arg(v, int);83    va_end(v);84    __va_copy(g, v); // expected-error{{implicit declaration of function}} expected-error{{undeclared identifier}} \85                        expected-modules-error{{implicit declaration of function}}86    va_copy(g, v); // expected-error{{implicitly declaring library function}} expected-note{{provide a declaration}} expected-error{{undeclared identifier}} \87                      expected-modules-error{{implicitly declaring library function}} expected-modules-note{{provide a declaration}}88}89 90//--- stdargneeds4.c91#define __need___va_list92#define __need_va_list93#define __need___va_copy94#include <stdarg.h>95static void f(int p, ...) {96    __gnuc_va_list g;97    va_list v;98    va_start(v, p); // expected-error{{implicitly declaring library function}} expected-note{{provide a declaration}} \99                       expected-modules-error{{implicitly declaring library function}} expected-modules-note{{provide a declaration}}100    int i = va_arg(v, int); // expected-error{{implicit declaration of function}} expected-error{{expected expression}} \101                               expected-modules-error{{implicit declaration of function}} expected-modules-error{{expected expression}}102    va_end(v); // expected-error{{implicitly declaring library function}} expected-note{{provide a declaration}} \103                  expected-modules-error{{implicitly declaring library function}} expected-modules-note{{provide a declaration}}104    __va_copy(g, v);105    va_copy(g, v); // expected-error{{implicitly declaring library function}} expected-note{{provide a declaration}} \106                      expected-modules-error{{implicitly declaring library function}} expected-modules-note{{provide a declaration}}107}108 109//--- stdargneeds5.c110#define __need___va_list111#define __need_va_list112#define __need_va_copy113#include <stdarg.h>114static void f(int p, ...) {115    __gnuc_va_list g;116    va_list v;117    va_start(v, p); // expected-error{{implicitly declaring library function}} expected-note{{provide a declaration}} \118                       expected-modules-error{{implicitly declaring library function}} expected-modules-note{{provide a declaration}}119    int i = va_arg(v, int); // expected-error{{implicit declaration of function}} expected-error{{expected expression}} \120                               expected-modules-error{{implicit declaration of function}} expected-modules-error{{expected expression}}121    va_end(v); // expected-error{{implicitly declaring library function}} expected-note{{provide a declaration}} \122                  expected-modules-error{{implicitly declaring library function}} expected-modules-note{{provide a declaration}}123    __va_copy(g, v); // expected-error{{implicit declaration of function}} expected-modules-error{{implicit declaration of function}}124    va_copy(g, v);125}126