aboutsummaryrefslogtreecommitdiff
path: root/lib/Sema
AgeCommit message (Collapse)Author
2012-06-22Documentation cleanup:James Dennett
* Primarily fixed \param commands with names not matching any actual parameters of the documented functions. In many cases this consists just of fixing up the parameter name in the \param to match the code, in some it means deleting obsolete documentation and occasionally it means documenting the parameter that has replaced the older one that was documented, which sometimes means some simple reverse-engineering of the docs from the implementation; * Fixed \param ParamName [out] to the correct format with [out] before the parameter name; * Fixed some \brief summaries. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158980 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-22Documentation cleanup: turn "//" into "///" for a Doxygen comment.James Dennett
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158965 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-21Revert r158887. This fixes pr13168.Rafael Espindola
Revert "If an object (such as a std::string) with an appropriate c_str() member function" This reverts commit 7d96f6106bfbd85b1af06f34fdbf2834aad0e47e. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158949 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-21objective-c: If an ivar is (1) the first ivar in a root class and (2) named ↵Fariborz Jahanian
`isa`, then it should get the same warnings that id->isa gets. // rdar://11702488 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158938 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-21PR13165: False positive when initializing member data pointers with NULL.David Blaikie
This now correctly covers, I believe, all the pointer types: * 'any' pointers (both function and data normal pointers and ObjC object pointers) * member pointers (both function and data) * block pointers git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158931 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-21Pretend that enum constants have enum type when inferring a block return type.Jordan Rose
In C, enum constants have the type of the enum's underlying integer type, rather than the type of the enum. (This is not true in C++.) This leads to odd warnings when returning enum constants directly in blocks with inferred return types. The easiest way out of this is to pretend that, like C++, enum constants have enum type when being returned from a block. <rdar://problem/11662489> git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158899 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-21Don't warn for -Wstatic-in-inline if the used function is also inline.Jordan Rose
Also, don't warn if the used function is __attribute__((const)), in which case it's not supposed to use global variables anyway. The inline-in-inline thing is a heuristic, and one that's possibly incorrect fairly often because the function being inlined could definitely use global variables. However, even some C standard library functions are written using other (trivial) static-inline functions in the headers, and we definitely don't want to be warning on that (or on anything that /uses/ these trivial inline functions). So we're using "inlined" as a marker for "fairly trivial". (Note that __attribute__((pure)) does /not/ guarantee safety like ((const), because ((const)) does not guarantee that global variables are not being used, and the warning is about globals not being shared across TUs.) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158898 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-21Remove a goofy CMake hack and use the standard CMake facilities toChandler Carruth
express library-level dependencies within Clang. This is no more verbose really, and plays nicer with the rest of the CMake facilities. It should also have no change in functionality. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158888 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-21If an object (such as a std::string) with an appropriate c_str() member functionRichard Smith
is passed to a variadic function in a position where a format string indicates that c_str()'s return type is desired, provide a note suggesting that the user may have intended to call the c_str() member. Factor the non-POD-vararg checking out of DefaultVariadicArgumentPromotion and move it to SemaChecking in order to facilitate this. Factor the call checking out of function call checking and block call checking, and extend it to cover constructor calls too. Patch by Sam Panzer! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158887 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-20objc: tweak my last patch to warn if class extensionFariborz Jahanian
has not overridden the property. // rdar://11656982 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158871 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-20objective-c: Normally, a property cannot be both 'readonly' and having a Fariborz Jahanian
"write" attribute (copy/retain/etc.). But, property declaration in primary class and protcols are tentative as they may be overridden into a 'readwrite' property in class extensions. Postpone diagnosing such warnings until the class implementation is seen. // rdar://11656982 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158869 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-20Allow unqualified lookup of non-dependent member functionsNico Weber
in microsoft mode. Fixes PR12701. The code for this was already in 2 of the 3 branches of a conditional and missing in the 3rd branch, so lift it above the conditional. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158842 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-20Whitespace.Chad Rosier
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158837 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-20Remove -Winternal-linkage-in-inline in C++.Jordan Rose
It's very easy for anonymous external linkage to propagate in C++ through return types and parameter types. Likewise, it's possible that a template containing an inline function is only used with parameters that have internal linkage. Actually diagnosing where the internal linkage comes from is fairly difficult (both to locate and then to print nicely). Finally, since we only have one translation unit available, we can't even prove that any of this violates the ODR. This warning needs better-defined behavior in C++ before it can really go in. Rewording of the C warning (which /is/ specified by C99) coming shortly. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158836 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-20[ms-style asm] Change the fatal error to an extension warning. Apparently, thisChad Rosier
error was asserting on anything that included Windows.h. MS-style inline asm is still dropped, but at least now we're not completely silent about it. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158833 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-20objc: improved diagnostic when property autosynthesis may causeFariborz Jahanian
change in behavior. // rdar://11671080 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158828 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-20Fix a big layering violation introduced by r158771.Chandler Carruth
That commit added a new library just to hold the RawCommentList. I've started a discussion on the commit thread about whether that is really meritted -- it certainly doesn't seem necessary at this stage. However, the immediate problem is that the AST library has a hard dependency on the Comment library, but the dependencies were set up completely backward. In addition to the layering violation, this had an unfortunate effect if scattering the Comments library dependency throughout the build system, but inconsistently so -- several parts of the CMake dependencies were missing and only showed up due to transitive deps or the fact that the target wasn't being built by tho bots. It turns out that the Comments library can't (currently) be a well formed layer *below* the AST library either, as it has an API that accepts an ASTContext. That parameter is currently unused, so maybe that was a mistake? Anyways, it really seems like this is logically part of the AST -- that's the whole point of the ASTContext providing access to it as far as I can tell -- so I've merged it into the AST library to solve the immediate layering violation problems and remove some of the churn from our library dependencies. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158807 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-20Restructure how the driver communicates information about theJohn McCall
target Objective-C runtime down to the frontend: break this down into a single target runtime kind and version, and compute all the relevant information from that. This makes it relatively painless to add support for new runtimes to the compiler. Make the new -cc1 flag, -fobjc-runtime=blah-x.y.z, available at the driver level as a better and more general alternative to -fgnu-runtime and -fnext-runtime. This new concept of an Objective-C runtime also encompasses what we were previously separating out as the "Objective-C ABI", so fragile vs. non-fragile runtimes are now really modelled as different kinds of runtime, paving the way for better overall differentiation. As a sort of special case, continue to accept the -cc1 flag -fobjc-runtime-has-weak, as a sop to PLCompatibilityWeak. I won't go so far as to say "no functionality change", even ignoring the new driver flag, but subtle changes in driver semantics are almost certainly not intended. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158793 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-20Fix cmake build.Rafael Espindola
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158782 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-20Structured comment parsing, first step.Dmitri Gribenko
* Retain comments in the AST * Serialize/deserialize comments * Find comments attached to a certain Decl * Expose raw comment text and SourceRange via libclang git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158771 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-19Do a second lookup for type_info in the global namespace in microsoft mode. ↵Nico Weber
PR13153. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158768 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-19Reapply r158700 and fixup patches, minus one hunk that slipped through andSean Hunt
caused a crash in an obscure case. On the plus side, it caused me to catch another bug by inspection. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158767 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-19Thread Safety Analysis: Move some warnings on thread safetyDeLesley Hutchins
attributes into the ThreadSafetyAttributes group, where the other warnings currently live. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158761 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-19Extend the support for cl-std to include 1.2.Tanya Lattner
Add error checking for the static qualifier which is now allowed in certain situations for OpenCL 1.2. Use the CL version to turn on this feature. Added test case for 1.2 static storage class feature. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158759 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-19objective-c: warn when autosynthesizing a property which has sameFariborz Jahanian
name as an existing ivar since this is common source of error when people remove @synthesize to take advantage of autosynthesis. // rdar://11671080 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158756 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-19Reapplying the changes from r158717 as they were rolled back to avoid merge ↵Aaron Ballman
conflicts from a separate problematic patch. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158750 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-19Revert r158700 and dependent patches r158716, r158717, and r158731.Jakob Stoklund Olesen
The original r158700 caused crashes in the gcc test suite, g++.abi/vtable3a.C among others. It also caused failures in the libc++ test suite. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158749 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-19Fix -Wc++11-narrowing warnings for narrowing negative values to larger unsignedRichard Smith
types to actually includes the value, rather than saying <uninitialized>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158745 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-19Enable -Wnull-conversion for non-integral target types (eg: double).David Blaikie
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158744 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-19Documentation cleanup: escape "::", and other minor reformattingJames Dennett
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158741 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-19Remove some debugging code that snuck into r158691.Kaelyn Uhrain
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158733 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-19Improves parsing and semantic analysis for MS __declspec attributes. This ↵Aaron Ballman
includes support for the align (which fixes PR12631). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158717 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-19Improve the specification of spellings in Attr.td.Sean Hunt
Note that this is mostly a structural patch that handles the change from the old spelling style to the new one. One consequence of this is that all AT_foo_bar enum values have changed to not be based off of the first spelling, but rather off of the class name, so they are now AT_FooBar and the like (a straw poll on IRC showed support for this). Apologies for code churn. Most attributes have GNU spellings as a temporary solution until everything else is sorted out (such as a Keyword spelling, which I intend to add if someone else doesn't beat me to it). This is definitely a WIP. I've also killed BaseCheckAttr since it was unused, and I had to go through every attribute anyway. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158700 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-19Improve the error message when a function overload candidate is rejectedKaelyn Uhrain
because it expects a reference and receives a non-l-value. For example, given: int foo(int &); template<int x> void b() { foo(x); } clang will now print "expects an l-value for 1st argument" instead of "no known conversion from 'int' to 'int &' for 1st argument". The change in wording (and associated code to detect the case) was prompted by comment #5 in PR3104, and should be the last bit of work needed for the bug. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158691 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-18Change -Winternal-linkage-in-inline from ExtWarn to Warning in C++.Jordan Rose
Per post-commit review, it's not appropriate to use ExtWarn in C++, because we can't prove that the inline function will actually be defined in more than one place (and thus we can't prove that this violates the ODR). This removes the warning entirely from uses in the main source file in C++. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158689 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-18Support -Winternal-linkage-in-inline in C++ code.Jordan Rose
This includes treating anonymous namespaces like internal linkage, and allowing const variables to be used even if internal. The whole thing's been broken out into a separate function to avoid nested ifs. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158683 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-18Allow internal decls in inline functions if the function is in the main file.Jordan Rose
This handles the very common case of people writing inline functions in their main source files and not tagging them as inline. These cases should still behave as the user intended. (The diagnostic is still emitted as an extension.) I'm reworking this code anyway to account for C++'s equivalent restriction in [basic.def.odr]p6, but this should get some bots back to green. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158666 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-18fix PR13071 / rdar://problem/11634669 :Nuno Lopes
crash on invalid function decl with alloc_size attribute git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158663 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-18alloc_size attribute: there's nothing wrong with alloc_size(1,1). It just ↵Nuno Lopes
means the function allocates x^2 bytes. GCC also accepts this syntax git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158662 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-18Handle C++11 attribute namespaces automatically.Sean Hunt
Now, as long as the 'Namespaces' variable is correct inside Attr.td, the generated code will correctly admit a C++11 attribute only when it has the appropriate namespace(s). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158661 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-18[MSExtensions] Add support for __forceinline.Michael J. Spencer
__forceinline is a combination of the inline keyword and __attribute__((always_inline)) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158653 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-17Don't warn about address-to-member used as part of initialisation, ifJoerg Sonnenberger
the member expression is in parentheses. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158651 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-17Documentation cleanup: fix two typos, rief -> brief and Descripts -> DescribesJames Dennett
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158630 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-17Documentation cleanup: fixing a typo from my previous 'fix'.James Dennett
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158617 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-16Explicitly build __builtin_va_list.Meador Inge
The target specific __builtin_va_list types are now explicitly built instead of injecting strings into the preprocessor input. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158592 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-16Fix Sema and IRGen for atomic compound assignment so it has the right ↵Eli Friedman
semantics when promotions are involved. (As far as I can tell, this only affects some edge cases.) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158591 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-16[AST/libclang] Fix the selector locations that are reported for aArgyrios Kyrtzidis
method definition that has its '{' attached to the method name without a space. With a method like: -(id)meth{ ..... } the logic in ObjCMethodDecl that determined the selector locations got confused because it was initialized based on an end location for '{' but that end location changed to '}' after the method was finished. Fix this by having an immutable end location for the declarator and for getLocEnd() get the end location from the body itself. Fixes rdar://11659739. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158583 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-15Recover when correcting an unknown type name to a keyword like "struct".Kaelyn Uhrain
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158573 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-15Move isCXXSimpleTypeSpecifier from Parser to Sema and tweak it for wider use.Kaelyn Uhrain
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158572 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-15Documentation cleanup:James Dennett
* Escaped "::" and "<" as needed in Doxygen comments; * Marked up code examples with \code...\endcode; * Documented a \param that is current, instead of a few that aren't; * Fixed up some \file and \brief comments. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158562 91177308-0d34-0410-b5e6-96231b3b80d8