aboutsummaryrefslogtreecommitdiff
path: root/lib/Sema
AgeCommit message (Collapse)Author
2011-12-09objc-arc: diagnose synthesis of a 'weak unavailable' property.Fariborz Jahanian
// rdar://10535245 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146272 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-09Provide a separate warning for weak vtables in explicit template ↵David Blaikie
instantiations. There's no (current) way to fix such templates to emit strong symbols/vtables, but perhaps users want to know about the cost being incurred anyway. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146265 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-09Make printf warnings refer to wint_t and wchar_t by nameHans Wennborg
in addition to underlying type. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146254 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-09Save category name loc in ObjCCategoryImplDecl, patch by Jason Haslam!Argyrios Kyrtzidis
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146213 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-08This patch extends thread safety analysis with support for the ↵DeLesley Hutchins
scoped_lockable attribute. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146174 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-08Decltype in non-pseudo (& non-dependent) dtor calls.David Blaikie
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146155 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-08Only do typo correction for implicit function decls whenHans Wennborg
they are treated as errors. Doing typo correction when these are just warnings slows down the compilation of source which deliberately uses implicit function declarations. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146153 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-07Make printf warnings refer to intmax_t et al. by nameHans Wennborg
in addition to underlying type. For example, the warning for printf("%zu", 42.0); changes from "conversion specifies type 'unsigned long'" to "conversion specifies type 'size_t' (aka 'unsigned long')" (This is a second attempt after r145697, which got reverted.) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146032 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-07When folding the size of a global scope VLA to a constant, require the arrayRichard Smith
bound to not have side effects(!). Add constant-folding support for expressions of void type, to ensure that we can still fold ((void)0, 1) as an array bound. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146000 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-07objc: issue deprecated/unavailable diagnostic whenFariborz Jahanian
methods with these attributes are sent to receivers of 'id' type too. // rdar://10459930 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145999 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-06Suggest typo corrections for implicit function declarations.Hans Wennborg
A mistyped function call becomes an inmplicit function declaration in C. Suggest typo correction when one can be found. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145930 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-06Extend warnings for missing '@end'.Erik Verbruggen
Fixes PR2709. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145928 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-06Switch a cast to a dyn_cast and check the pointer before using. Fixes a crashRichard Trieu
in the following code: void test4(bool (&x)(void)) { while (x); } git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145918 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-06Make sure we perform lvalue-to-rvalue conversions for enum initializers. ↵Eli Friedman
PR11484. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145874 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-06objc: put out more coherent warning when method definitionFariborz Jahanian
attributes don't match its declaration. // rdar://10529259. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145872 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-05Add a warning for implicit conversion from function literals (and staticLang Hames
methods) to bool. E.g. void foo() {} if (f) { ... // <- Warns here. } Only applies to non-weak functions, and does not apply if the function address is taken explicitly with the addr-of operator. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145849 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-04Support decltype in nested-name-specifiers.David Blaikie
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145785 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-03Move block return type inference diagnostic to a common place whereFariborz Jahanian
Function or array lvalue conversions happens. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145782 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-03Implement support for the __is_final type trait, to determine whetherDouglas Gregor
a class is marked 'final', from Alberto Ganesh Barbati! Fixes PR11462. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145775 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-03If block literal return type is not specified, return type of the block is Fariborz Jahanian
inferred from return types. All the return statements have to agree about the type. // rdar://10466373 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145774 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-03In Microsoft mode, don't perform typo correction in a template member ↵Francois Pichet
function dependent context because it interferes with the "lookup into dependent bases of class templates" feature. Basically typo correction will try to offer a correction instead of looking into type dependent base classes. I found this problem while parsing Microsoft ATL code with clang. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145772 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-03Implement overload resolution for reference-typed parameters supplied with ↵Sebastian Redl
initializer lists. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145769 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-02When we treat an #include or #import as a module import, create anDouglas Gregor
implicit ImportDecl in the translation unit to record the presence of the import. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145727 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-02Introduce a module import declaration, so that we properly represent, e.g.,Douglas Gregor
__import_module__ std.vector; in the AST. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145725 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-02Revert r145697 and dependent patch r145702. It added a dependency fromNick Lewycky
lib/Analysis to lib/Sema which is cyclical. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145724 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-02Make sure that name lookup in C checks whether a name is hidden.Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145700 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-02Make conversion specifier warning refer to typedef if possible.Hans Wennborg
For example, the warning for printf("%zu", 42.0); changes from "conversion specifies type 'unsigned long'" to "conversion specifies type 'size_t' (aka 'unsigned long')" git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145697 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-02Implementing parsing and resolution of module export declarationsDouglas Gregor
within module maps, which will (eventually) be used to re-export a module from another module. There are still some pieces missing, however. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145665 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-01Introduce the notion of name visibility into modules. For a givenDouglas Gregor
(sub)module, all of the names may be hidden, just the macro names may be exposed (for example, after the preprocessor has seen the import of the module but the parser has not), or all of the names may be exposed. Importing a module makes its names, and the names in any of its non-explicit submodules, visible to name lookup (transitively). This commit only introduces the notion of name visible and marks modules and submodules as visible when they are imported. The actual name-hiding logic in the AST reader will follow (along with test cases). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145586 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-01When typo-correction an Objective-C superclass name, don'tDouglas Gregor
typo-correct to ourselves. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145583 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-01When sending a message to a receiver that has "unknown any" type,Douglas Gregor
force the unknown any type to "id" so that the message send can be completed without requiring a case. Fixes <rdar://problem/10506646>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145552 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-01Specially whitelist the selector 'addOperationWithBlock:' for the ↵Ted Kremenek
retain-cycle checking in -Warc-retain-cycles. This commonly is hit by users using NSOperationQueue. Fixes <rdar://problem/10465721>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145548 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-01Further tweak -Wurneachable-code and templates by allowing the warning to run onTed Kremenek
explicit template specializations (which represent actual functions somebody wrote). Along the way, refactor some other code which similarly cares about whether or not they are looking at a template instantiation. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145547 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-30Promote ModuleMap::Module to a namespace-scope class in the BasicDouglas Gregor
library, since modules cut across all of the libraries. Rename serialization::Module to serialization::ModuleFile to side-step the annoying naming conflict. Prune a bunch of ModuleMap.h includes that are no longer needed (most files only needed the Module type). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145538 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-30Don't run -Wunreachable-code on template instantiations. Different ↵Ted Kremenek
instantiations may produce different unreachable code results, and it is very difficult for us to prove that ALL instantiations of a template have specific unreachable code. If we come up with a better solution, then we can revisit this, but this approach will at least greatly reduce the noise of this warning for code that makes use of templates. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145520 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-30Fix the instantiation of pseudo-object expressions. This is aJohn McCall
really bad way to go about this, but I'm not sure there's a better choice without substantial changes to TreeTransform --- most notably, preserving implicit semantic nodes instead of discarding and rebuilding them. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145480 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-30Switch the module-loading interfaces and parser from a simpleDouglas Gregor
top-level module name to a module path (e.g., std.vector). We're still missing a number of pieces for this actually to do something. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145462 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-29Revert r145244. It causes us to create broken ASTs with missing type informationRichard Smith
for some cast expressions. Original commit message: Removed useless ImplicitCast nodes in explicit cstyle and static casts git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145447 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-29Suppress -Warray-bounds for classes (not just structs) where the last field isMatt Beaumont-Gay
a 1-length character array. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145445 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-29Test isa<FunctionDecl> to exclude objective-C methods. This ensures the ↵Lang Hames
following cast will never fail. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145441 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-29Merge branch 'yo-dawg-i-herd-u-like-arrays'Matt Beaumont-Gay
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145421 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-29objc: warn if NSObject attribute appears other than in a typedef.Fariborz Jahanian
// rdar://10453342 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145358 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-28When synthesizing an implicitly-defined copy or move constructor, orDouglas Gregor
when computing the exception specification of a copy or move constructor, ignore non-static data member initializers. Fixes PR11418 / <rdar://problem/10478642>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145269 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-28Remove code made redundant by my previous patch.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145266 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-28pinpoint name/location of deprecated/unavailable enumeratorFariborz Jahanian
whose enum has been made deprecated/unavailable in the warning. // rdar://10201690 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145264 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-28objc: turn warning for property type mismatch in Fariborz Jahanian
primary and its continuation class into error. // rdar://10142679 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145255 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-28When checking a call to a builtin atomic operation, be sure toDouglas Gregor
consider the _<width> variants as well, which we'll see if we're performing the type checking in a template instantiation where the call expression itself was originally not type-dependent. Fixes PR11411. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145248 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-28Removed useless ImplicitCast nodes in explicit cstyle and static castsNicola Gigante
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145244 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-27In Sema::MaybeBindToTemporary, create a CXXBindTemporaryExpr for anPeter Collingbourne
array of objects with non-trivial destructors. PR11365. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145203 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-27Reference initialization with initializer lists.Sebastian Redl
This supports single-element initializer lists for references according to DR1288, as well as creating temporaries and binding to them for other initializer lists. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145186 91177308-0d34-0410-b5e6-96231b3b80d8