aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2013-03-23[analyzer] Translate "a != b" to "(b - a) != 0" in the constraint manager.Jordan Rose
Canonicalizing these two forms allows us to better model containers like std::vector, which use "m_start != m_finish" to implement empty() but "m_finish - m_start" to implement size(). The analyzer should have a consistent interpretation of these two symbolic expressions, even though it's not properly reasoning about either one yet. The other unfortunate thing is that while the size() expression will only ever be written "m_finish - m_start", the comparison may be written "m_finish == m_start" or "m_start == m_finish". Right now the analyzer does not attempt to canonicalize those two expressions, since it doesn't know which length expression to pick. Doing this correctly will probably require implementing unary minus as a new SymExpr kind (<rdar://problem/12351075>). For now, the analyzer inverts the order of arguments in the comparison to build the subtraction, on the assumption that "begin() != end()" is written more often than "end() != begin()". This is purely speculation. <rdar://problem/13239003> git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177801 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-23[analyzer] Use SymExprs to represent '<loc> - <loc>' and '<loc> == <loc>'.Jordan Rose
We just treat this as opaque symbols, but even that allows us to handle simple cases where the same condition is tested twice. This is very common in the STL, which means that any project using the STL gets spurious errors. Part of <rdar://problem/13239003>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177800 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-23documentation parsing: when providing code completion commentFariborz Jahanian
for a getter used in property-dot syntax, if geter has its own comment use it. // rdar://12791315 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177797 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-23[analyzer] Warn when a nil key or value are passed to NSMutableDictionary ↵Anna Zaks
and ensure it works with subscripting. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177789 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-23[analyzer] Correct the stale comment.Anna Zaks
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177788 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-23If a .syms file is available alongside a sanitizer runtime, pass it to theRichard Smith
linker via --dynamic-list instead of using --export-dynamic. This reduces the size of the dynamic symbol table, and thus of the binary (in some cases by up to ~30%). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177783 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-22Use RequireCompleteType() instead of isIncompleteType().Bill Wendling
isIncompleteType() returns true or false for template types depending on whether the type is instantiated yet. In this context, that's arbitrary. The better way to check for a complete type is RequireCompleteType(). Thanks to Eli Friedman for noticing this! <rdar://problem/12700799> git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177768 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-22Add test case for PR 12921.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177767 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-22<rdar://problem/13479539> Only rebuild the global module cache when we're ↵Douglas Gregor
allowed to. This eliminates excessive rebuilds of the global module cache. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177766 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-22Revert "[analyzer] Break cycles (optionally) when trimming an ExplodedGraph."Jordan Rose
The algorithm used here was ridiculously slow when a potential back-edge pointed to a node that already had a lot of successors. The previous commit makes this feature unnecessary anyway. This reverts r177468 / f4cf6b10f863b9bc716a09b2b2a8c497dcc6aa9b. Conflicts: lib/StaticAnalyzer/Core/BugReporter.cpp git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177765 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-22[analyzer] Use a forward BFS instead of a reverse BFS to find shortest paths.Jordan Rose
For a given bug equivalence class, we'd like to emit the report with the shortest path. So far to do this we've been trimming the ExplodedGraph to only contain relevant nodes, then doing a reverse BFS (starting at all the error nodes) to find the shortest paths from the root. However, this is fairly expensive when we are suppressing many bug reports in the same equivalence class. r177468-9 tried to solve this problem by breaking cycles during graph trimming, then updating the BFS priorities after each suppressed report instead of recomputing the whole thing. However, breaking cycles is not a cheap operation because an analysis graph minus cycles is still a DAG, not a tree. This fix changes the algorithm to do a single forward BFS (starting from the root) and to use that to choose the report with the shortest path by looking at the error nodes with the lowest BFS priorities. This was Anna's idea, and has the added advantage of requiring no update step: we can just pick the error node with the next lowest priority to produce the next bug report. <rdar://problem/13474689> git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177764 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-22[analyzer] Fix test to actually test what was intended.Jordan Rose
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177763 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-22[analyzer] Fix ExprEngine::ViewGraph to handle C++ initializers.Jordan Rose
Debugging aid only, no functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177762 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-22[PCH/Modules] De/Serialize MacroInfos separately than MacroDirectives.Argyrios Kyrtzidis
-Serialize the macro directives history into its own section -Get rid of the macro updates section -When de/serializing an identifier from a module, associate only one macro per submodule that defined+exported it. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177761 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-22[modules] When a MacroInfo object is deserialized, allocate and store its ↵Argyrios Kyrtzidis
submodule ID. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177760 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-22[ms-cxxabi] Implement member data pointers for non-dynamic classesReid Kleckner
Summary: For non-dynamic classes (no virtual bases), member data pointers are simple offsets from the base of the record. Dynamic classes use an aggregate for member data pointers and are therefore currently unsupported. Unlike Itanium, the ms ABI uses 0 to represent null for polymorphic classes. Non-polymorphic classes use -1 like Itanium, since 0 is a valid field offset. Reviewers: rjmccall CC: timurrrr, cfe-commits Differential Revision: http://llvm-reviews.chandlerc.com/D558 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177753 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-22<rdar://problem/13479539> Simplify ModuleManager/GlobalModuleIndex ↵Douglas Gregor
interaction to eliminate a pile of extraneous stats(). The refactoring in r177367 introduced a serious performance bug where the "lazy" resolution of module file names in the global module index to actual module file entries in the module manager would perform repeated negative stats(). The new interaction requires the module manager to inform the global module index when a module file has been loaded, eliminating the extraneous stat()s and a bunch of bookkeeping on both sides. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177750 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-22documentation parsing. Provide code completion comment Fariborz Jahanian
for self.GetterName where GetterName is the getter method for a property with name different from the property name (declared via a property getter attribute) // rdar://12791315 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177744 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-22These tests fail on our Window64 machine.Fariborz Jahanian
Feel free to revert them (or let me know and I will revert) if they shouldn't be. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177743 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-22Better fix for r177725.Daniel Jasper
It turns out that -foo; can be an objective C method declaration. So instead of the previous solution, recognize objective C methods only if we are in a declaration scope. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177740 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-22Align comments to surrounding unformatted comments.Daniel Jasper
Before: int a; // not formatted // formatting this line only After: int a; // not formatted // formatting this line only This makes clang-format stable independent of whether the whole file or single lines are formatted in most cases. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177739 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-22[cxxabi] Get ptrdiff_t from the CodeGenModule instead of caching itReid Kleckner
As the comment says, it's a little silly to cache it in the ABI code. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177738 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-22Update docs after moving clang-format from clang-tools-extra to cfe.Daniel Jasper
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177729 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-22Add clang-format to the corresponding Makefile.Daniel Jasper
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177727 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-22More precisely recognize ObjC method declarations.Daniel Jasper
Otherwise, +/- and the beginning of constants can be recognized incorrectly. Before: #define A - 1 After: #define A -1 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177725 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-22Documentation: fix a typo and formattingDmitri Gribenko
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177722 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-22Fix DeclRefExpr::getFoundDecl() for usages by reference.Daniel Jasper
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177721 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-22Make clang-format understand more line comments.Daniel Jasper
Apparently one needs to set LangOptions.LineComment. Before "//* */" got reformatted to "/ /* */" as the lexer was returning the token sequence (slash, comment). This could also lead to weird other stuff, e.g. for people that like to using comments like: //**************** git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177720 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-22Add future directions for modulesDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177707 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-22More modules documentation, including the straw-man import declaration ↵Douglas Gregor
syntax and "how to modularize a platform". git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177706 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-22OpenMP threadprivate directive parsing and semantic analysisAlexey Bataev
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177705 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-22More documentation on the module map language.Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177704 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-22test commitAlexey Bataev
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177701 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-22Warn about attempts to reinterpret_cast between two types that areJohn McCall
hierarchy-related at a possibly nonzero offset. Patch by Alexander Zinenko! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177698 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-22Fix a crash-on-valid where a block capture copy expression wasJohn McCall
picking up cleanups from earlier in the statement. Also fix a crash-on-invalid where a reference to an invalid decl from an enclosing scope was causing an expression to fail to build, but only *after* a cleanup was registered from that statement, causing an assertion downstream. The crash-on-valid is rdar://13459289. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177692 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-22ubsan: Pass floating-point arguments to the runtime by value if they fit theRichard Smith
value argument. If not, be sure we don't accidentally use a dynamic alloca. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177690 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-22<rdar://problem/13479214> Make Clang's <stddef.h> robust against system ↵Douglas Gregor
headers defining size_t/ptrdiff_t/wchar_t. Clang's <stddef.h> provides definitions for the C standard library types size_t, ptrdiff_t, and wchar_t. However, the system's C standard library headers tend to provide the same typedefs, and the two generally avoid each other using the macros _SIZE_T/_PTRDIFF_T/_WCHAR_T. With modules, however, we need to see *all* of the places where these types are defined, so provide the typedefs (ignoring the macros) when modules are enabled. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177686 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-21[analyzer] scan-build: emit errors on stderr, and exit(1) instead of exit(0).Jordan Rose
PR14963 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177678 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-21Update debug info test case for more incoming DIBuilder changesDavid Blaikie
Switching the DIFile field in DISubprogram to refer to the raw filename/directory pair instead of a DIFile. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177676 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-21Update debug info test case for an incoming change to DIBuilder in LLVMDavid Blaikie
(this will produce some transient test failure/skew) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177673 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-21<rdar://problem/13477190> Give the Clang module cache directory some ↵Douglas Gregor
structure, so it's easier to find. We now put the Clang module cache in <system-temp-directory>/org.llvm.clang/ModuleCache. Perhaps some day there will be other caches under <system-temp-directory>/org.llvm.clang>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177671 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-21Fix indentationDavid Blaikie
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177665 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-21Objective-C: Tighten the rules when warningFariborz Jahanian
is issused for on overriding 'readwrite' property which is not auto-synthesized. Buttom line is that if hueristics determine that there will be a user implemented setter, no warning will be issued. // rdar://13388503 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177662 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-21Generalize debug info tests to be forward compatible with future ↵David Blaikie
DISubprogram changes git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177659 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-21This ugly regex is required because on Windows, the paths come out as \\ ↵Aaron Ballman
delimited instead of / delimited. Fixes a test breakage since r176894. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177658 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-21Remove unused variable.Benjamin Kramer
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177657 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-21Avoid warnings from compilers that think you can drop off the end of a fully ↵Benjamin Kramer
covered switch. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177656 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-21Delayed template parsing is not supported by the AST serialization system ↵Aaron Ballman
yet, so turning it off. This fixes a test breakage caused by r177336. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177655 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-21[analyzer] Print return values from debug.DumpCalls checker.Jordan Rose
Debug utility only, no functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177649 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-21Better block comment formatting.Alexander Kornienko
Summary: 1. When splitting one-line block comment, use indentation and *s. 2. Remove trailing whitespace from all lines of a comment, not only the ones being splitted. 3. Add backslashes for all lines if a comment is used insed a preprocessor directive. Reviewers: djasper Reviewed By: djasper CC: cfe-commits, klimek Differential Revision: http://llvm-reviews.chandlerc.com/D557 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177635 91177308-0d34-0410-b5e6-96231b3b80d8