aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2012-06-21Revert r158423 corresponding to r158796, "test/Driver/warning-options.cpp: ↵NAKAMURA Takumi
Mark as XFAIL:cygming. -pedantic is passed with gcc-as driver. PR12920" git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158915 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-21Clang side of a refactoring of the CMake unit test build strategy.Chandler Carruth
The fundamental change is to put a CMakeLists.txt file in the unittest directory, with a single test binary produced from it. This has several advantages. Among other fundamental advantages, we start to get the checking logic for when a file is missing from the CMake build, and this caught one missing file already! More fun details in the LLVM commit corresponding to this one. Note that the LLVM commit and this one most both be applied, or neither. Sorry for any skew issues. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158910 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-21Make the RecursiveASTVisitor visit the body of a range-based for loopDaniel Jasper
again. This was broken in r158395. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158907 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-21Improve support for -g options accepted by Clang:Alexey Samsonov
1. Accept flags -g[0-3], -ggdb[0-3], -gdwarf-[2-4] and collapse them to simple -g (except -g0/-ggdb0). 2. Produce driver error on unsupported formats (-gcoff, -gstabs, -gvms) and options (-gtoggle). 3. Recognize and ignore flags -g[no-]strict-dwarf, -g[no-]record-gcc-switches. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158906 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-21Switch Clang to re-use the the newly factored common LLVMChandler Carruth
implementation. Yay for '-' lines in CMake! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158897 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-21MS: Mangle rvalue references and nullptr_t, and produce back-references whenRichard Smith
appropriate. Patch by João Matos! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158895 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-21Simplify the Clang unittest function in the CMake build, and make itChandler Carruth
match the LLVM implemenation. This also simplifies the name management and splits the custom library management out from the unittest specific management. It finally drops the dependency on parsing cmake arguments. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158894 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-21Remove an unused feature of the clang unittest macro.Chandler Carruth
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158884 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-21Do not complain about junk on the end of a #endif in a skipped block. Such junkRichard Smith
is permitted by all relevant language standards. Patch by Andy Gibbs! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158883 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-21RawCommentList::addComment: fix the assertion so it actually checks that new ↵Dmitri Gribenko
comment is after the last one (change Comments[0] to Comments.back()), and handle the case of two consecutive comments, e.g. /** *//* */. There is already a testcase for that (but it didn't trigger the assert because the assert itself was wrong). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158882 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-20[analyzer] Malloc leak false positive: Allow xpc context to escape.Anna Zaks
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158875 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-20objective-c: place quotes around named items in a diagnostic.Fariborz Jahanian
// rdar://11671080 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158874 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-20Documentation cleanup: escape a < character in a Doxygen commentJames Dennett
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158861 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-20Introduce ObjCRuntime::hasWeakClassImport() and use it in the appropriateJohn McCall
places. I've turned this off for the GNU runtimes --- I don't know if they support weak class import, but it's easy enough for them to opt in. Also tweak a comment per review by Jordan. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158860 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-20Documentation cleanup:James Dennett
* Escape < characters in Doxygen comments as needed; * Add \code...\endcode around code examples; * Remove an incorrect use of Doxygen's \arg command. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158859 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-20Added test with sizeof conditions (relies on to-be-implemented functionality ↵Alexander Kornienko
of CFG, discussion: http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20120507/057370.html) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158854 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-20Reword -Winternal-linkage-in-inline, and rename it to -Wstatic-in-inline.Jordan Rose
Now that this is a C-only warning, we can use "static" instead of "internal linkage", which is a term developers are probably more familiar with. This makes for a better warning message. The warning name was changed to match, since "internal linkage" is not mentioned in the warning text anymore. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158853 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-20Documentation cleanup:James Dennett
* Many fixes for \brief summaries (adding some, and making others shorter); * Don't try to explicit tell Doxygen a namespace name (and particularly don't get it wrong); * Typo fix: instantitions -> instantiations; * Slightly more use of \pre for documenting preconditions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158852 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-20[analyzer] Do not walk the types for call graph construction.Anna Zaks
Similar to r156661. This should be beneficial performance wise and hopefully, resolve a RecursiveASTVisitor crash that we are seeing in the wild, but are incapable of reproducing. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158851 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-20[analyzer] Malloc: cleanup, disallow free on relinquished memory.Anna Zaks
This commits sets the grounds for more aggressive use after free checking. We will use the Relinquished sate to denote that someone else is now responsible for releasing the memory. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158850 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-20[analyzer] Remove dead code.Anna Zaks
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158849 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-20Documentation cleanup: escaping # characters in Doxygen comments.James Dennett
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158847 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-20Remove unused ASTContext& arg in RawCommentList::addComment, as pointed out ↵Dmitri Gribenko
by Chandler in commit message for r158807. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158845 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-20Don't circumvent the debug info type cache when emitting info for ↵Benjamin Kramer
EnumConstantDecl. CreateEnumType doesn't participate in caching so the descriptor for the enum gets recomputed for every reference of an element of an enum, only to get discarded when it gets turned into an MDNode. No functionality change except performance. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158832 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-20Whitespace.Chad Rosier
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158830 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 thinko and a stray debugging hunk in my attributes patch. Thanks to JordanSean Hunt
Rose and Richard Smith for catching these. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158826 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-20Remove a 'static' specifier from an 'inline' function in a header file.Chandler Carruth
This issue was caught by the new '-Winternal-linkage-in-inline' warning. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158801 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-20Revert "Provide a -no-pedantic to cancel out -pedantic." This needs to be ↵Ted Kremenek
designed a bit further. We may wish to just have -Wno flags to silence warnings, and not have a -no-pedantic. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158796 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-20Fix a warning on a fully covered switch with a default:Chandler Carruth
../tools/clang/lib/Serialization/ASTReader.cpp:6316:9: warning: default label in switch which covers all enumeration values [-Wcovered-switch-default] Also fix the indentation here to match the coding conventions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158794 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-20[analyzer] Move failing 'new' test cases back into new.cpp instead of XFAILing.Jordan Rose
Per Anna's comment, this is a better way to handle "to-do list"-type failures. This way we'll know if any of the features get fixed; in an XFAIL file, /all/ the cases have to be fixed before lit would tell us anything. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158791 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-20[arcmt]Argyrios Kyrtzidis
-Disable -pedantic-errors when migrating per Jordan's suggestion. -Use llvm_move() per John's suggestion. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158785 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-20[analyzer] Invalidate placement args; return the pointer given to placement newJordan Rose
The default global placement new just returns the pointer it is given. Note that other custom 'new' implementations with placement args are not guaranteed to do this. In addition, we need to invalidate placement args, since they may be updated by the allocator function. (Also, right now we don't properly handle the constructor inside a CXXNewExpr, so we need to invalidate the placement args just so that callers know something changed!) This invalidation is not perfect because CallOrObjCMessage doesn't support CXXNewExpr, and all of our invalidation callbacks expect that if there's no CallOrObjCMessage, the invalidation is happening manually (e.g. by a direct assignment) and shouldn't affect checker-specific metadata (like malloc state); hence the malloc test case in new-fail.cpp. But region values are now properly invalidated, at least. The long-term solution to this problem is to rework CallOrObjCMessage into something more general, rather than the morass of branches it is today. <rdar://problem/11679031> git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158784 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-20[objcmt] Have the modern objc migration warning change from:Argyrios Kyrtzidis
[NSNumber numberWithDouble:cppb]; warning: converting to boxing syntax requires a cast to something like: [NSNumber numberWithDouble:cppb]; warning: converting to boxing syntax requires casting 'bool' to 'double' This is way better to fully understand the warning. rdar://11705106 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158783 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-20[arcmt] When migrating to ARC disable -Werror so as to only block migrationArgyrios Kyrtzidis
for "hard" ARC errors, not warnings. rdar://11691437 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158781 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-20Unbreak GCC build: GCC doesn't like clang::Parser::CommentHandler and class ↵Dmitri Gribenko
clang::CommentHandler to have same name. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158780 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-20Documentation cleanup: adding/fixing Doxygen markup, particularly \brief,James Dennett
\code...\endcode, \file commands and escaing for angle brackets. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158779 91177308-0d34-0410-b5e6-96231b3b80d8