- Feb 16, 2009
-
-
Chris Lattner authored
dubious, but at least mark it as an invalid decl. llvm-svn: 64668
-
Chris Lattner authored
llvm-svn: 64667
-
Douglas Gregor authored
prototype, synthesize ParmVarDecls for prototype-less FunctionDecl. llvm-svn: 64666
-
Fariborz Jahanian authored
llvm-svn: 64660
-
Chris Lattner authored
whose declaration was declared as deprecated. llvm-svn: 64658
-
Fariborz Jahanian authored
the same. llvm-svn: 64657
-
Douglas Gregor authored
interface for ivars before assuming that this is an unresolved function name. Fixes <rdar://problem/6590445>. llvm-svn: 64653
-
Chris Lattner authored
llvm-svn: 64652
-
Chris Lattner authored
llvm-svn: 64651
-
Chris Lattner authored
property is deprecated, not the getter/setter if the attribute is on the property. llvm-svn: 64644
-
Chris Lattner authored
llvm-svn: 64643
-
Douglas Gregor authored
merge the prototype into the redeclaration (and make a note in the declaration). Fixes PR3588. llvm-svn: 64641
-
Douglas Gregor authored
- If a declaration is an invalid redeclaration of an existing name, complain about the invalid redeclaration then avoid adding it to the AST (we can still parse the definition or initializer, if any). - If the declaration is invalid but there is no prior declaration with that name, introduce the invalid declaration into the AST (for later error recovery). - If the declaration is an invalid redeclaration of a builtin that starts with __builtin_, we produce an error and drop the redeclaration. If it is an invalid redeclaration of a library builtin (e.g., malloc, printf), warn (don't error!) and drop the redeclaration. If a user attempts to define a builtin, produce an error and (if it's a library builtin like malloc) suggest -ffreestanding. This addresses <rdar://problem/6097585> and PR2892. However, PR3588 is still going to cause some problems when builtins are redeclared without a prototype. llvm-svn: 64639
-
Chris Lattner authored
llvm-svn: 64637
-
Chris Lattner authored
llvm-svn: 64634
-
Ben Laurie authored
llvm-svn: 64628
-
- Feb 15, 2009
-
-
Nate Begeman authored
llvm-svn: 64614
-
Chris Lattner authored
llvm-svn: 64613
-
Chris Lattner authored
DiagnoseUseOfDeprecatedDecl method. This ensures that they are treated consistently. This gets us 'unavailable' support on a few new types of decls, and makes sure we consistently silence deprecated when the caller is also deprecated. llvm-svn: 64612
-
Chris Lattner authored
This implements gcc/testsuite/objc.dg/method-attribute-1.m llvm-svn: 64581
-
Chris Lattner authored
llvm-svn: 64572
-
- Feb 14, 2009
-
-
Douglas Gregor authored
Warn that complex numbers are an extension in a freestanding C99 implementation. llvm-svn: 64568
-
Cedric Venet authored
Correct two files with inconsistent lines endings. llvm-svn: 64564
-
Anders Carlsson authored
llvm-svn: 64562
-
Douglas Gregor authored
about, whether they are builtins or not. Use this to add the appropriate "format" attribute to NSLog, NSLogv, asprintf, and vasprintf, and to translate builtin attributes (from Builtins.def) into actual attributes on the function declaration. Use the "printf" format attribute on function declarations to determine whether we should do format string checking, rather than looking at an ad hoc list of builtins and "known" function names. Be a bit more careful about when we consider a function a "builtin" in C++. llvm-svn: 64561
-
Anders Carlsson authored
llvm-svn: 64560
-
Chris Lattner authored
llvm-svn: 64548
-
Chris Lattner authored
We don't have "zero cost" exceptions for ObjC yet, so there is no codegen support required. llvm-svn: 64546
-
Chris Lattner authored
1) implement parser and sema support for reading and verifying attribute(warnunusedresult). 2) rename hasLocalSideEffect to isUnusedResultAWarning, inverting the sense of its result. 3) extend isUnusedResultAWarning to directly return the loc and range info that should be reported to the user. Make it substantially more precise in some cases than what was previously reported. 4) teach isUnusedResultAWarning about CallExpr to decls that are pure/const/warnunusedresult, fixing a fixme. 5) change warn_attribute_wrong_decl_type to not pass in english strings, instead, pass in integers and use %select. llvm-svn: 64543
-
Chris Lattner authored
llvm-svn: 64542
-
Douglas Gregor authored
we can define builtins such as fprintf, vfprintf, and __builtin___fprintf_chk. Give a nice error message when we need to implicitly declare a function like fprintf. llvm-svn: 64526
-
Douglas Gregor authored
printf-like functions, both builtin functions and those in the C library. The function-call checker now queries this attribute do determine if we have a printf-like function, rather than scanning through the list of "known functions IDs". However, there are 5 functions they are not yet "builtins", so the function-call checker handles them specifically still: - fprintf and vfprintf: the builtins mechanism cannot (yet) express FILE* arguments, so these can't be encoded. - NSLog: the builtins mechanism cannot (yet) express NSString* arguments, so this (and NSLogv) can't be encoded. - asprintf and vasprintf: these aren't part of the C99 standard library, so we really shouldn't be defining them as builtins in the general case (and we don't seem to have the machinery to make them builtins only on certain targets and depending on whether extensions are enabled). llvm-svn: 64512
-
Douglas Gregor authored
etc.) when we perform name lookup on them. This ensures that we produce the correct signature for these functions, which has two practical impacts: 1) When we're supporting the "implicit function declaration" feature of C99, these functions will be implicitly declared with the right signature rather than as a function returning "int" with no prototype. See PR3541 for the reason why this is important (hint: GCC always predeclares these functions). 2) If users attempt to redeclare one of these library functions with an incompatible signature, we produce a hard error. This patch does a little bit of work to give reasonable error messages. For example, when we hit case #1 we complain that we're implicitly declaring this function with a specific signature, and then we give a note that asks the user to include the appropriate header (e.g., "please include <stdlib.h> or explicitly declare 'malloc'"). In case #2, we show the type of the implicit builtin that was incorrectly declared, so the user can see the problem. We could do better here: for example, when displaying this latter error message we say something like: 'strcpy' was implicitly declared here with type 'char *(char *, char const *)' but we should really print out a fake code line showing the declaration, like this: 'strcpy' was implicitly declared here as: char *strcpy(char *, char const *) This would also be good for printing built-in candidates with C++ operator overloading. The set of C library functions supported by this patch includes all functions from the C99 specification's <stdlib.h> and <string.h> that (a) are predefined by GCC and (b) have signatures that could cause codegen issues if they are treated as functions with no prototype returning and int. Future work could extend this set of functions to other C library functions that we know about. llvm-svn: 64504
-
- Feb 13, 2009
-
-
Daniel Dunbar authored
__attribute__((used))". llvm-svn: 64499
-
Chris Lattner authored
just silently return an error to avoid bogus diagnostics. llvm-svn: 64491
-
Daniel Dunbar authored
llvm-svn: 64478
-
Douglas Gregor authored
by DeclContexts (always) rather than by statements. DeclContext currently goes out of its way to avoid destroying any Decls that might be owned by a DeclGroupOwningRef. However, in an error-recovery situation, a failure in a declaration statement can cause all of the decls in a DeclGroupOwningRef to be destroyed after they've already be added into the DeclContext. Hence, DeclContext is left with already-destroyed declarations, and bad things happen. This problem was causing failures that showed up as assertions on x86 Linux in test/Parser/objc-forcollection-neg-2.m. llvm-svn: 64474
-
Anders Carlsson authored
llvm-svn: 64447
-
Anders Carlsson authored
llvm-svn: 64446
-
Anders Carlsson authored
llvm-svn: 64445
-