aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2012-02-13Sink variable into assertMatt Beaumont-Gay
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150407 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-13objective-c translator: more rewriting of ivar typesFariborz Jahanian
into a c-type which closely matches the objective-c type. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150406 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-13When generating diagnostic information due to a clang failure, allow multipleChad Rosier
-arch options if the're all the same. Patch by Jeremy Huddleston. rdar://10849701 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150403 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-13[analyzer] Malloc checker: rework realloc handling:Anna Zaks
1) Support the case when realloc fails to reduce False Positives. (We essentially need to restore the state of the pointer being reallocated.) 2) Realloc behaves differently under special conditions (from pointer is null, size is 0). When detecting these cases, we should consider under-constrained states (size might or might not be 0). The old version handled this in a very hacky way. The code did not differentiate between definite and possible (no consideration for under-constrained states). Further, after processing each special case, the realloc processing function did not return but chained to the next special case processing. So you could end up in an execution in which you first see the states in which size is 0 and realloc ~ free(), followed by the states corresponding to size is not 0 followed by the evaluation of the regular realloc behavior. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150402 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-13Split the storage of lambda information between the LambdaExpr and theDouglas Gregor
CXXRecordDecl in a way that actually makes some sense: - LambdaExpr contains all of the information for initializing the lambda object, including the capture initializers and associated array index variables. - CXXRecordDecl's LambdaDefinitionData contains the captures, which are needed to understand the captured variable references in the body of the lambda. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150401 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-13Keep track of the set of array index variables we use when weDouglas Gregor
synthesize a by-copy captured array in a lambda. This information will be needed by IR generation. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150396 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-13Remove empty directories left behind by git-svn.Benjamin Kramer
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150395 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-13Don't allocate unused storage for captures/capture initializers in lambda ↵Douglas Gregor
expressions git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150394 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-13Move the storage of lambda captures and capture initializers fromDouglas Gregor
LambdaExpr over to the CXXRecordDecl. This allows us to eliminate the back-link from the closure type to the LambdaExpr, which will simplify and lazify AST deserialization. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150393 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-13Add back in the code to create forward decls using temporary mdnodes.Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150390 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-13Testcase for previous commit.Eric Christopher
PR11970. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150389 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-13Temporarily walk back a few of my recent debug info limiting changesEric Christopher
while reworking how we handle wanting to emit only parts of structures. Fixes PR11970. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150388 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-13StaticAnalyzer/Core: fix MSVC buildDylan Noblesmith
Fix build breakage from r150378: MSVC only allows taking the address of a member function using the &ClassName::Function syntax.# It was giving git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150387 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-13drop more llvm:: prefixes on SmallString<>Dylan Noblesmith
More cleanup after r149799. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150380 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-13drop more llvm:: prefixes on OwningPtr<>Dylan Noblesmith
More cleanup after r149798. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150379 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-13examples/analyzer-plugin: hook up to buildDylan Noblesmith
This was never being compiled at all and was bitrotting as a result. Also compile SampleAnalyzerPlugin as a module, not a library, and fix a mistake with not passing the source files to add_clang_library(). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150378 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-13Fix typo in PrintfConversionSpecifier::isDoubleArg()Hans Wennborg
This makes the printf diagnostics issue warnigns for %a, %A, %e, etc. when used with the wrong argument. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150370 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-13Update constexpr implementation to match CWG's chosen approach for core issuesRichard Smith
1358, 1360, 1452 and 1453. - Instantiations of constexpr functions are always constexpr. This removes the need for separate declaration/definition checking, which is now gone. - This makes it possible for a constexpr function to be virtual, if they are only dependently virtual. Virtual calls to such functions are not constant expressions. - Likewise, it's now possible for a literal type to have virtual base classes. A constexpr constructor for such a type cannot actually produce a constant expression, though, so add a special-case diagnostic for a constructor call to such a type rather than trying to evaluate it. - Classes with trivial default constructors (for which value initialization can produce a fully-initialized value) are considered literal types. - Classes with volatile members are not literal types. - constexpr constructors can be members of non-literal types. We do not yet use static initialization for global objects constructed in this way. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150359 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-13Delete a simplistic helper function now that llvm::Triple can provideChandler Carruth
this functionality. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150358 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-12more of rewriting ivar types.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150353 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-12Move -Wdangling-else under -Wparentheses to be backwards compatibile with GCC.David Blaikie
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150349 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-12Implement the standard decltype() semantics described in C++11Douglas Gregor
[dcl.type.simple]p4, which treats all xvalues as returning T&&. We had previously implemented a pre-standard variant of decltype() that doesn't cope with, e.g., static_ast<T&&>(e) very well. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150348 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-12Within the body of a lambda expression, decltype((x)) for anDouglas Gregor
id-expression 'x' will compute the type based on the assumption that 'x' will be captured, even if it isn't captured, per C++11 [expr.prim.lambda]p18. There are two related refactors that go into implementing this: 1) Split out the check that determines whether we should capture a particular variable reference, along with the computation of the type of the field, from the actual act of capturing the variable. 2) Always compute the result of decltype() within Sema, rather than AST, because the decltype() computation is now context-sensitive. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150347 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-12Proper initializer list support for new expressions and type construct ↵Sebastian Redl
expressions. Array new still missing. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150346 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-12Lambdas have a deleted default constructor and a deleted copyDouglas Gregor
assignment operator, per C++ [expr.prim.lambda]p19. Make it so. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150345 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-12Change the way we store initialization kinds so that all direct inits can ↵Sebastian Redl
distinguish between list and parens form. This allows us to correctly diagnose the last test cases from litb. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150343 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-12Employ DirectList initialized entities to properly sort through some ↵Sebastian Redl
initialization edge cases. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150342 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-12Fix broken link. I believe this has been broken for at least 7 months.Michael J. Spencer
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150329 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-12Fix the rewriter that broke with r149987.Argyrios Kyrtzidis
r149987 changed the way parsing happens inside an @implementation; it aggregates the declarations inside and reports them together as a DeclGroup. This had the side effect that function declarations were reported together with their definition, while the rewriter expected for function declarations to be reported immediately to the consumer and thus not have a body. Fix this by having the rewriter actually check with isThisDeclarationADefinition() to make sure the body comes from the current decl before rewriting it. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150325 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-11Represent C++ direct initializers as ParenListExprs before semantic analysisSebastian Redl
instead of having a special-purpose function. - ActOnCXXDirectInitializer, which was mostly duplication of AddInitializerToDecl (leading e.g. to PR10620, which Eli fixed a few days ago), is dropped completely. - MultiInitializer, which was an ugly hack I added, is dropped again. - We now have the infrastructure in place to distinguish between int x = {1}; int x({1}); int x{1}; -- VarDecl now has getInitStyle(), which indicates which of the above was used. -- CXXConstructExpr now has a flag to indicate that it represents list- initialization, although this is not yet used. - InstantiateInitializer was renamed to SubstInitializer and simplified. - ActOnParenOrParenListExpr has been replaced by ActOnParenListExpr, which always produces a ParenListExpr. Placed that so far failed to convert that back to a ParenExpr containing comma operators have been fixed. I'm pretty sure I could have made a crashing test case before this. The end result is a (I hope) considerably cleaner design of initializers. More importantly, the fact that I can now distinguish between the various initialization kinds means that I can get the tricky generalized initializer test cases Johannes Schaub supplied to work. (This is not yet done.) This commit passed self-host, with the resulting compiler passing the tests. I hope it doesn't break more complicated code. It's a pretty big change, but one that I feel is necessary. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150318 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-11Drive-by fix of incorrect diagnostic, and a test case for said diagnostic. ↵Sebastian Redl
The double error is unfortunate, but I really don't see an alternative whose effort is worth it. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150317 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-11Fix parsing new expressions using init lists. Probably still do the wrong ↵Sebastian Redl
thing in cases involving array new. Show that many cases using initializer list constructors work, in that they parse and pass semantic analysis. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150316 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-11[analyzer] Malloc Checker: reduce false negatives rate by assuming thatAnna Zaks
a pointer cannot escape through calls to system functions. Also, stop after reporting the first use-after-free. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150315 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-11[analyzer] Malloc Checker: Report a leak when we are returning freedAnna Zaks
memory. (As per one test case, the existing checker thought that this could cause a lot of false positives - not sure if that's valid, to be verified.) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150313 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-11[analyzer] Malloc checker: Leak bugs should be suppressed by sinks.Anna Zaks
Resolves a common false positive, where we were reporting a leak inside asserts git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150312 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-11[analyzer] MallocChecker: refactor/improve the symbol escape logic.Anna Zaks
We use the same logic here as the RetainRelease checker. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150311 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-11objective-c translator. more modern abi stuff, focusing on ivar relatedFariborz Jahanian
meta-data. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150310 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-11Implement core issue 5: a temporary created for copy-initialization has aRichard Smith
cv-unqualified type. This is essential in order to allow move-only objects of const-qualified types to be copy-initialized via a converting constructor. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150309 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-11Make sure to try instantiating a templated type which is used in an _AtomicRichard Smith
before complaining that it's incomplete. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150308 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-11[analyzer] New checker for assignment of non-0/1 values to Boolean variables.Ryan Govostes
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150306 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-11Implement warning for non-wide string literals with an unexpected encoding. ↵Eli Friedman
Downgrade error for non-wide character literals with an unexpected encoding to a warning for compatibility with gcc and older versions of clang. <rdar://problem/10837678>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150295 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-11Begin refactoring to use the newly added triple predicates forChandler Carruth
simplicity. Also addresses a FIXME, although not one that could be observed. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150294 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-11Basic support for referring to captured variables from lambdas. Some simple ↵Eli Friedman
examples seem to work. Tests coming up soon. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150293 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-11Make sure Sema creates a field for 'this' captures. (Doug, please ↵Eli Friedman
double-check that this is correct.) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150292 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-11[libclang] For a reference of an implicit template instantiation just giveArgyrios Kyrtzidis
a reference for the instantiation decl. Also test that its location is correct after previous commit. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150291 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-11For class template implicit instantiation, also update its location to pointArgyrios Kyrtzidis
to the pattern template that it came from, otherwise we had this situation: template <typename T1, typename T2> struct S { }; template <typename T> struct S<T, int> { }; void f() { S<int, int> s; // location of declaration "S<int, int>" was of "S<T1, T2>" not "S<T, int>" } git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150290 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-11const-qualify CXXRecordDecl::getCaptureFields.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150284 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-10Add simple semantic test for C++11 [expr.prim.lambda]p16, which covers ↵Douglas Gregor
recursive capture. This is far more interesting for IRgen. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150283 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-10Implement C++11 [expr.lambda.prim]p13, which prohibits lambdas inDouglas Gregor
default arguments if in fact those lambdas capture any entity. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150282 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-10objc translator: more modern metadata stuff.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150281 91177308-0d34-0410-b5e6-96231b3b80d8