diff options
author | Douglas Gregor <dgregor@apple.com> | 2009-03-23 17:47:24 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2009-03-23 17:47:24 +0000 |
commit | 893c2c963a5db7abddfa4b37e9d69f89131aafbd (patch) | |
tree | 8f822cb67b4359d5e9e9f54e2d1f52c172686c6b /clang/test/Sema | |
parent | f477262e69ce9ed268c45272c8c2f0fdd59713fe (diff) | |
download | bcm5719-llvm-893c2c963a5db7abddfa4b37e9d69f89131aafbd.tar.gz bcm5719-llvm-893c2c963a5db7abddfa4b37e9d69f89131aafbd.zip |
Fix PR3855. When we encounter an incompatible redeclaration of a
library function, accept this declaration and pretend that we do not
know that this is a library function. autoconf depends on this
(broken) behavior.
llvm-svn: 67541
Diffstat (limited to 'clang/test/Sema')
-rw-r--r-- | clang/test/Sema/implicit-builtin-decl.c | 20 | ||||
-rw-r--r-- | clang/test/Sema/implicit-builtin-redecl.c | 2 |
2 files changed, 17 insertions, 5 deletions
diff --git a/clang/test/Sema/implicit-builtin-decl.c b/clang/test/Sema/implicit-builtin-decl.c index e1f24e35f3b..6477a5723ff 100644 --- a/clang/test/Sema/implicit-builtin-decl.c +++ b/clang/test/Sema/implicit-builtin-decl.c @@ -7,7 +7,7 @@ void f() { void *alloca(__SIZE_TYPE__); // redeclaration okay -int *calloc(__SIZE_TYPE__, __SIZE_TYPE__); // expected-warning{{incompatible redeclaration of library function 'calloc' will be ignored}} \ +int *calloc(__SIZE_TYPE__, __SIZE_TYPE__); // expected-warning{{incompatible redeclaration of library function 'calloc'}} \ // expected-note{{'calloc' is a builtin with type 'void *}} @@ -16,8 +16,8 @@ void g(int malloc) { // okay: these aren't functions } void h() { - int malloc(int); // expected-warning{{incompatible redeclaration of library function 'malloc' will be ignored}} - int strcpy(int); // expected-warning{{incompatible redeclaration of library function 'strcpy' will be ignored}} \ + int malloc(int); // expected-warning{{incompatible redeclaration of library function 'malloc'}} + int strcpy(int); // expected-warning{{incompatible redeclaration of library function 'strcpy'}} \ // expected-note{{'strcpy' is a builtin with type 'char *(char *, char const *)'}} } @@ -35,7 +35,19 @@ int f0() { return __builtin_object_size(&a); // expected-error {{too few arguments to function}} } -void * realloc(void *p, int size) { // expected-warning{{incompatible redeclaration of library function 'realloc' will be ignored}} \ +void * realloc(void *p, int size) { // expected-warning{{incompatible redeclaration of library function 'realloc'}} \ // expected-note{{'realloc' is a builtin with type 'void *(void *,}} return p; } + +// PR3855 +void snprintf(); // expected-warning{{incompatible redeclaration of library function 'snprintf'}} \ + // expected-note{{'snprintf' is a builtin with type 'int (char *, unsigned long, char const *, ...)'}} + +int +main(int argc, char *argv[]) +{ + snprintf(); +} + +void snprintf() { } diff --git a/clang/test/Sema/implicit-builtin-redecl.c b/clang/test/Sema/implicit-builtin-redecl.c index c9b38558b3e..2ad35185b25 100644 --- a/clang/test/Sema/implicit-builtin-redecl.c +++ b/clang/test/Sema/implicit-builtin-redecl.c @@ -10,5 +10,5 @@ void *calloc(int, int, int); // expected-warning{{incompatible redeclaration of // expected-note{{'calloc' is a builtin with type 'void *}} void f1(void) { - return calloc(0, 0, 0); // expected-error{{too many arguments to function call}} + calloc(0, 0, 0); } |