Argyrios Kyrtzidis
eca1f36a54
[arcmt] Integrate GC __weak into property attributes even when we don't have
...
the implementation.
llvm-svn: 145224
2011-11-28 02:04:36 +00:00
Argyrios Kyrtzidis
3fc3dcd80f
[arcmt] Don't add __weak if there is already a GC __weak and make sure to clear
...
__weak from a readonly property.
llvm-svn: 145210
2011-11-28 00:23:12 +00:00
Ted Kremenek
2acedbd417
Refine placement of LangOptions object in CompilerInvocation by adding a new baseclass CompilerInvocationBase with a custom copy constructor. This ensures that whenever the CompilerInvocation object's copy constructor is used we always clone the LangOptions object.
...
llvm-svn: 144973
2011-11-18 04:32:13 +00:00
Ted Kremenek
8cf47df72f
Make 'LangOptions' in CompilerInvocation a heap-allocated, reference counted object. I discovered that llvm::RefCountedBase<T> has
...
a bug where the reference count is copied in the copy constructor, which means that there were cases when the CompilerInvocation
objects created by ASTUnit were actually leaked. When I fixed that bug locally, it showed that a whole bunch of code assumed
that the LangOptions object that was part of CompilerInvocation was still alive. By making it heap-allocated and reference counted,
we can keep it around after the CompilerInvocation object goes away.
As part of this change, change CompilerInvocation:getLangOptions() to return a pointer, acting as another clue that this
object may outlive the CompilerInvocation object.
This commit doesn't fix the CompilerInvocation leak itself. That will come when I commit the fix to llvm::RefCountedBase<T> to
mainline LLVM.
llvm-svn: 144930
2011-11-17 23:01:24 +00:00
Argyrios Kyrtzidis
485eceed38
[arcmt] Take into account that all properties are strong-by-default now and fix the test.
...
llvm-svn: 144146
2011-11-08 23:09:34 +00:00
Argyrios Kyrtzidis
e4a38a73fd
[arcmt] Now that readonly properties are strong-by-default, do not add redundant 'strong'.
...
llvm-svn: 144136
2011-11-08 22:10:58 +00:00
Argyrios Kyrtzidis
dbe077a89d
[arcmt] Now that properties are strong by default, avoid adding redundant '(strong)'
...
property attribute.
llvm-svn: 144078
2011-11-08 05:56:11 +00:00
Argyrios Kyrtzidis
3befb8cd8a
[arcmt] NSViewController does not support weak.
...
llvm-svn: 144077
2011-11-08 05:56:08 +00:00
Argyrios Kyrtzidis
2519a0801f
[arcmt] When we already removed a __weak, don't try to change it to __unsafe_unretained
...
later on, or we will end up with a redundant '__unsafe_unretained'.
llvm-svn: 144059
2011-11-08 02:02:38 +00:00
Argyrios Kyrtzidis
d569791c44
[arcmt] Fix handling NSMakeCollectable inside an objc method.
...
llvm-svn: 143980
2011-11-07 18:46:50 +00:00
Argyrios Kyrtzidis
722d21c646
[arcmt] In GC, handle (assign) @properties.
...
-Move __strong/__weak added to a property type to the property attribute,
e.g. "@property (assign) __weak Foo *prop;" --> "@property (weak) Foo *prop;"
-Remove (assign) in a property so that it becomes strong-by-default in ARC.
llvm-svn: 143979
2011-11-07 18:46:46 +00:00
Argyrios Kyrtzidis
0dd98a4c51
[arcmt] Map property decls to their GC attributes.
...
llvm-svn: 143978
2011-11-07 18:40:32 +00:00
Argyrios Kyrtzidis
e80d4f228c
[arcmt] In GC, change '__weak' -> '__unsafe_unretained' when applied
...
to objects of classes that don't support ARC weak
llvm-svn: 143976
2011-11-07 18:40:29 +00:00
Argyrios Kyrtzidis
f233dac67c
[arcmt] In GC, error for __strong/__weak on non-objc pointers.
...
llvm-svn: 143887
2011-11-06 18:58:23 +00:00
Argyrios Kyrtzidis
0c233fa23e
[arcmt] In GC, clear redundant __strong's.
...
llvm-svn: 143886
2011-11-06 18:58:17 +00:00
Argyrios Kyrtzidis
aa421ea8af
[arcmt] Make PropertiesRewriter::getPropertyType return the unqualified type.
...
llvm-svn: 143884
2011-11-06 18:58:07 +00:00
Argyrios Kyrtzidis
e43ae79038
[arcmt] Collect all the places where GC attributes __strong/__weak occur.
...
llvm-svn: 143883
2011-11-06 18:58:03 +00:00
Argyrios Kyrtzidis
aaa999660b
[arcmt] Refactor PropertiesRewriter to use MigrationContext.
...
llvm-svn: 143882
2011-11-06 18:57:57 +00:00
John McCall
fe96e0b6be
Change the AST representation of operations on Objective-C
...
property references to use a new PseudoObjectExpr
expression which pairs a syntactic form of the expression
with a set of semantic expressions implementing it.
This should significantly reduce the complexity required
elsewhere in the compiler to deal with these kinds of
expressions (e.g. IR generation's special l-value kind,
the static analyzer's Message abstraction), at the lower
cost of specifically dealing with the odd AST structure
of these expressions. It should also greatly simplify
efforts to implement similar language features in the
future, most notably Managed C++'s properties and indexed
properties.
Most of the effort here is in dealing with the various
clients of the AST. I've gone ahead and simplified the
ObjC rewriter's use of properties; other clients, like
IR-gen and the static analyzer, have all the old
complexity *and* all the new complexity, at least
temporarily. Many thanks to Ted for writing and advising
on the necessary changes to the static analyzer.
I've xfailed a small diagnostics regression in the static
analyzer at Ted's request.
llvm-svn: 143867
2011-11-06 09:01:30 +00:00
Argyrios Kyrtzidis
aed9bd7cc1
[arcmt] Fix an assertion hit in rdar://10336125; a bit too complicated to reduce.
...
llvm-svn: 143754
2011-11-05 00:02:26 +00:00
Argyrios Kyrtzidis
6b2d47d829
[arcmt] In GC, error out when there is a call that returns a pointer to
...
GC managed non-objc object memory.
llvm-svn: 143747
2011-11-04 23:43:03 +00:00
Argyrios Kyrtzidis
d2b9112354
[arcmt] For GC, cleanup and turn -finalize to -dealloc.
...
llvm-svn: 143701
2011-11-04 15:58:22 +00:00
Argyrios Kyrtzidis
d8cdfbc905
[arcmt] In GC, error for use of CFMakeCollectable because it will leak the
...
object that it receives in ARC.
llvm-svn: 143700
2011-11-04 15:58:17 +00:00
Argyrios Kyrtzidis
3eaa22af57
In C++ keep unavailable function calls in the AST, like in C/ObjC.
...
This allows the migrator to visit and fix them.
llvm-svn: 143699
2011-11-04 15:58:13 +00:00
Argyrios Kyrtzidis
d208ef95aa
[arcmt] In GC, transform NSMakeCollectable to CFBridgingRelease.
...
llvm-svn: 143698
2011-11-04 15:58:08 +00:00
Ted Kremenek
337c5b880c
Further refine the diagnostic categories for ARC diagnostics. Addresses <rdar://problem/10245086>.
...
llvm-svn: 142571
2011-10-20 05:07:47 +00:00
Argyrios Kyrtzidis
05c65fbdb6
[arcmt] Rewrite attributes in extensions as well. rdar://9992142
...
llvm-svn: 142407
2011-10-18 19:49:19 +00:00
Argyrios Kyrtzidis
697729a7de
Revert r142311, -mios-simulator-version-min does not work correctly.
...
llvm-svn: 142322
2011-10-18 00:22:49 +00:00
Argyrios Kyrtzidis
7e16493c9b
Remove the hack where we sniff the __IPHONE_OS_VERSION_MIN_REQUIRED define.
...
We can use -mios-simulator-version-min now. rdar://10218700
llvm-svn: 142311
2011-10-17 23:41:26 +00:00
Argyrios Kyrtzidis
ffe8b1c7be
[arcmt] In ARC default for properties is 'strong' so just remove a 'retain' if possible,
...
instead of changing it to 'strong'. rdar://9984862.
llvm-svn: 142304
2011-10-17 23:14:16 +00:00
Douglas Gregor
d0e9e3a6a5
Introduce a pure virtual clone() method to DiagnosticConsumer, so that
...
we have the ability to create a new, distict diagnostic consumer when
we go off and build a module. This avoids the currently horribleness
where the same diagnostic consumer sees diagnostics for multiple
translation units (and multiple SourceManagers!) causing all sorts of havok.
llvm-svn: 140743
2011-09-29 00:38:00 +00:00
Douglas Gregor
c0b07286cf
When 'bool' is not a built-in type but is defined as a macro, print
...
'bool' rather than '_Bool' within types, to make things a bit more
readable. Fixes <rdar://problem/10063263>.
llvm-svn: 140650
2011-09-27 22:38:19 +00:00
David Blaikie
b5784324b3
Rename DiagnosticInfo to Diagnostic as per issue 5397
...
llvm-svn: 140493
2011-09-26 01:18:08 +00:00
David Blaikie
a24a0bcd0d
Rename CaptureDiagnosticClient to CaptureDiagnosticConsumer as per issue 5397
...
llvm-svn: 140482
2011-09-25 23:54:33 +00:00
David Blaikie
e2eefaecc8
Rename DiagnosticClient to DiagnosticConsumer as per issue 5397
...
llvm-svn: 140479
2011-09-25 23:39:51 +00:00
David Blaikie
9c902b5502
Rename Diagnostic to DiagnosticsEngine as per issue 5397
...
llvm-svn: 140478
2011-09-25 23:23:43 +00:00
Argyrios Kyrtzidis
e6e67deeed
Rename SourceLocation::getFileLocWithOffset -> getLocWithOffset.
...
It already works (and is useful with) macro locs as well.
llvm-svn: 140057
2011-09-19 20:40:19 +00:00
Argyrios Kyrtzidis
41899f3bac
[arcmt] Use __bridge_retained when passing an objc object to a CF parameter
...
annotated with cf_consumed attribute.
llvm-svn: 139709
2011-09-14 18:17:09 +00:00
John McCall
2d637d2e79
Rename the ARC cast kinds to start with "ARC".
...
llvm-svn: 139466
2011-09-10 06:18:15 +00:00
John McCall
9320b87cff
Give conversions of block pointers to ObjC pointers a different cast kind
...
than conversions of C pointers to ObjC pointers. In order to ensure that
we've caught every case, add asserts to CastExpr that strictly determine
which cast kind is used for which kind of bit cast.
llvm-svn: 139352
2011-09-09 05:25:32 +00:00
Argyrios Kyrtzidis
cbbc0141f6
[arcmt] Fix test/ARCMT/remove-statements.m regression due to
...
Objective-C method buffering(rdar://10056942)
Turned out the same issue existed for C++ inline methods.
llvm-svn: 138960
2011-09-01 20:53:18 +00:00
Benjamin Kramer
79cfba180a
Twinify.
...
llvm-svn: 138689
2011-08-27 00:34:29 +00:00
Douglas Gregor
5be7a1c818
Try to unbreak the build on systems where uint64_t isn't something that StringRef::getAsInteger can handle as its second argument
...
llvm-svn: 138680
2011-08-26 23:57:29 +00:00
Argyrios Kyrtzidis
1045430525
[arcmt] Add a test case for r138671 and improve the loop.
...
llvm-svn: 138674
2011-08-26 23:20:23 +00:00
Argyrios Kyrtzidis
3da6bc16bb
[arcmt] Fix horrible bug where migrating files if there is a space in the paths
...
of the migrated files. rdar://10022801
llvm-svn: 138671
2011-08-26 22:40:55 +00:00
Argyrios Kyrtzidis
85a14bbd31
For the MacroExpands preprocessor callback, also pass the SourceRange
...
of expansion (for function macros it includes the right paren).
llvm-svn: 137909
2011-08-18 01:05:45 +00:00
NAKAMURA Takumi
c77574a2e3
Fix "Uninitialized" warnings on g++-4.4.
...
In fact, they are false warnings but it seems g++-4.4 might be unable to know they must be false.
llvm-svn: 137568
2011-08-14 00:37:22 +00:00
Argyrios Kyrtzidis
93db2277e6
[arcmt] When checking whether properties needs to be strong or not, take into account
...
that assigning result of -retain means it should be strong. rdar://9931757.
llvm-svn: 137252
2011-08-10 21:46:48 +00:00
Benjamin Kramer
3c05b7c161
Make helper functions static.
...
llvm-svn: 136679
2011-08-02 04:50:49 +00:00
Argyrios Kyrtzidis
fdafb7f7e6
[arcmt] Revert r135382, there's a different approach in r135764. rdar://9821111.
...
llvm-svn: 136209
2011-07-27 05:28:22 +00:00