1e5101e1e52729564b6fc8d7bf146cef33bc31ca |
|
06-Oct-2012 |
Jordan Rose <jordan_rose@apple.com> |
ParentMap: Restore the ability to update an existing map. The Clang ASTs are a DAG, not a pure tree. However, ParentMap has to choose a single parent for each object. In the main (only?) cases in which the AST forms a DAG, it protects from multiple traversal by using OpaqueValueExprs. Previously, ParentMap would just unconditionally look through all OpaqueValueExprs when building its map. In order to make this behavior better for the analyzer's diagnostics, ParentMap was changed to not set a statement's parent if there already was one in the map. However, ParentMap is supposed to allow updating existing mappings by calling addStmt once again. This change makes the "transparency" of OpaqueValueExprs explicit, and disables it when it is not desired, rather than checking the current contents of the map. This new code seems like a big change, but it should actually have essentially the same performance as before. Only OpaqueValueExprs and their users (PseudoObjectExpr and BinaryConditionalOperator) will have any different behavior. There should be no user-visible functionality change, though a test has been added for the current behavior of BinaryConditionalOperator source locations and accompanying Xcode arrows (which are not so great...). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165355 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/ParentMap.cpp
|
2b1b025fa6e848ec36c0554924d7d63342aa80e4 |
|
06-Aug-2012 |
Jordan Rose <jordan_rose@apple.com> |
[analyzer] Improve arrow locations for PseudoObjectExprs. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161350 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/ParentMap.cpp
|
e215ba1c2a3f29fe2cbc4cfb0e532cd204970c49 |
|
18-Feb-2012 |
Ted Kremenek <kremenek@apple.com> |
Fix crash in analyzer diagnostic generation involving subexpressions of OpaqueValueExpr not appearing in the ParentMap. Fixes <rdar://problem/10797980>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150894 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/ParentMap.cpp
|
18fd0c6915b45c4daafe18e3cd324c13306f913f |
|
27-Jul-2011 |
Argyrios Kyrtzidis <akyrtzi@gmail.com> |
[arcmt] More automatic transformations and safety improvements; rdar://9615812 : - Replace calling -zone with 'nil'. -zone is obsolete in ARC. - Allow removing retain/release on a static global var. - Fix assertion hit when scanning for name references outside a NSAutoreleasePool scope. - Automatically add bridged casts for results of objc method calls and when calling CFRetain, for example: NSString *s; CFStringRef ref = [s string]; -> CFStringRef ref = (__bridge CFStringRef)([s string]); ref = s.string; -> ref = (__bridge CFStringRef)(s.string); ref = [NSString new]; -> ref = (__bridge_retained CFStringRef)([NSString new]); ref = [s newString]; -> ref = (__bridge_retained CFStringRef)([s newString]); ref = [[NSString alloc] init]; -> ref = (__bridge_retained CFStringRef)([[NSString alloc] init]); ref = [[s string] retain]; -> ref = (__bridge_retained CFStringRef)([s string]); ref = CFRetain(s); -> ref = (__bridge_retained CFTypeRef)(s); ref = [s retain]; -> ref = (__bridge_retained CFStringRef)(s); - Emit migrator error when trying to cast to CF type the result of autorelease/release: for CFStringRef f3() { return (CFStringRef)[[[NSString alloc] init] autorelease]; } emits: t.m:12:10: error: [rewriter] it is not safe to cast to 'CFStringRef' the result of 'autorelease' message; a __bridge cast may result in a pointer to a destroyed object and a __bridge_retained may leak the object return (CFStringRef)[[[NSString alloc] init] autorelease]; ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ t.m:12:3: note: [rewriter] remove the cast and change return type of function to 'NSString *' to have the object automatically autoreleased return (CFStringRef)[[[NSString alloc] init] autorelease]; ^ - Before changing attributes to weak/unsafe_unretained, check if the backing ivar is set to a +1 object, in which case use 'strong' instead. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136208 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/ParentMap.cpp
|
f85e193739c953358c865005855253af4f68a497 |
|
16-Jun-2011 |
John McCall <rjmccall@apple.com> |
Automatic Reference Counting. Language-design credit goes to a lot of people, but I particularly want to single out Blaine Garst and Patrick Beard for their contributions. Compiler implementation credit goes to Argyrios, Doug, Fariborz, and myself, in no particular order. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133103 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/ParentMap.cpp
|
7502c1d3ce8bb97bcc4f7bebef507040bd93b26f |
|
13-Feb-2011 |
John McCall <rjmccall@apple.com> |
Give some convenient idiomatic accessors to Stmt::child_range and Stmt::const_child_range, then make a bunch of places use them instead of the individual iterator accessors. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125450 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/ParentMap.cpp
|
f4e532b5a1683a9f6c842f361c7415bf3474315f |
|
12-Feb-2011 |
Ted Kremenek <kremenek@apple.com> |
Don't emit a dead store for '++' operations unless it occurs with a return statement. We've never seen any other cases that were real bugs. Fixes <rdar://problem/6962292>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125419 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/ParentMap.cpp
|
d6543f8bbac18cdb678a67da2a676c30c2941eca |
|
15-Nov-2010 |
Ted Kremenek <kremenek@apple.com> |
Add method ParentMap::addStmt(). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119181 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/ParentMap.cpp
|
2de56d1d0c3a504ad1529de2677628bdfbb95cd4 |
|
25-Aug-2010 |
John McCall <rjmccall@apple.com> |
GCC didn't care for my attempt at API compatibility, so brute-force everything to the new constants. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112047 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/ParentMap.cpp
|
1eb4433ac451dc16f4133a88af2d002ac26c58ef |
|
09-Sep-2009 |
Mike Stump <mrs@apple.com> |
Remove tabs, and whitespace cleanups. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81346 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/ParentMap.cpp
|
b1b9f680f5fc65230de877baccae50820a969a94 |
|
11-May-2009 |
Ted Kremenek <kremenek@apple.com> |
Add ParentMap:getParentIgnoreParens(). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71469 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/ParentMap.cpp
|
ade9ecaba935489840fa74aaf5b4c640d6589e33 |
|
06-May-2009 |
Ted Kremenek <kremenek@apple.com> |
Fix subtle bug in ParentMap::isConsumedExpr(): correctly ignore *parents* that are ParenExpr or CastExprs. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71026 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/ParentMap.cpp
|
24ae89a5a25f8971c7436bb3b7663e66ed99b987 |
|
09-Apr-2009 |
Ted Kremenek <kremenek@apple.com> |
Another ParentMap bug: only the right side of a comma expression is consumed. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68680 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/ParentMap.cpp
|
e42ac98bc2d50506216b6ef258594bdaa59c47c1 |
|
08-Apr-2009 |
Ted Kremenek <kremenek@apple.com> |
Fix bug in ParentMap::isConsumedExpr. A BinaryOperator always "consumes" the value of its subexpressions unless it is a comma (in which case it doesn't consume the left subexpression). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68628 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/ParentMap.cpp
|
b930d7adb7cb7642c9c49b39df04ebd5cbfa713a |
|
01-Apr-2009 |
Ted Kremenek <kremenek@apple.com> |
Fix: <rdar://problem/6740387>. Sending nil to an object that returns a struct should only be an error if that value is consumed. This fix was largely accomplished by moving 'isConsumedExpr' back to ParentMap. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68195 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/ParentMap.cpp
|
7f5fce7200fdbf03f7d70134a57271e584fcb766 |
|
20-Jan-2009 |
Ted Kremenek <kremenek@apple.com> |
Dead stores checker: Fix <rdar://problem/6506065> by being more selective when say that a store is dead even though the computed value is used in the enclosing expression. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62552 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/ParentMap.cpp
|
acc5f3e42334525bf28c86471551f83dfce222d5 |
|
11-Aug-2008 |
Daniel Dunbar <daniel@zuster.org> |
More #include cleaning - Kill unnecessary #includes in .cpp files. This is an automatic sweep so some things removed are actually used, but happen to be included by a previous header. I tried to get rid of the obvious examples and this was the easiest way to trim the #includes in one fell swoop. - We now return to regularly scheduled development. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54632 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/ParentMap.cpp
|
f8e32cf062f39fff1a00aff748cb6b5dc0abc2fe |
|
20-Jun-2008 |
Ted Kremenek <kremenek@apple.com> |
Added ParentMap, a class to represent a lazily constructed mapping from child to parents. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52553 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/ParentMap.cpp
|