Fariborz Jahanian
d133979628
Generate write-barriers for global objc
...
assigns. // rdar://8761767
llvm-svn: 123391
2011-01-13 20:00:54 +00:00
Rafael Espindola
25f4620c67
Set unnamed_addr in every type info.
...
llvm-svn: 123293
2011-01-11 23:55:05 +00:00
Rafael Espindola
0ee986c1f1
Add unnamed_addr to constructors and destructors.
...
llvm-svn: 123197
2011-01-11 00:26:26 +00:00
John McCall
26c935f564
Test case.
...
llvm-svn: 121194
2010-12-07 22:55:51 +00:00
John McCall
34376a68c4
Although we currently have explicit lvalue-to-rvalue conversions, they're
...
not actually frequently used, because ImpCastExprToType only creates a node
if the types differ. So explicitly create an ICE in the lvalue-to-rvalue
conversion code in DefaultFunctionArrayLvalueConversion() as well as several
other new places, and consistently deal with the consequences throughout the
compiler.
In addition, introduce a new cast kind for loading an ObjCProperty l-value,
and make sure we emit those nodes whenever an ObjCProperty l-value appears
that's not on the LHS of an assignment operator.
This breaks a couple of rewriter tests, which I've x-failed until future
development occurs on the rewriter.
Ted Kremenek kindly contributed the analyzer workarounds in this patch.
llvm-svn: 120890
2010-12-04 03:47:34 +00:00
Fariborz Jahanian
148d113e55
Fix a bug where write-barriers for assignment through reference
...
types was not being generated for objc pointers.
// rdar://8681766.
llvm-svn: 119751
2010-11-18 22:39:16 +00:00
John McCall
4bc41aee2b
Add an assertion, fix a whole bunch of bugs, comment the assertion
...
out because there are still bugs left.
llvm-svn: 119722
2010-11-18 19:01:18 +00:00
Fariborz Jahanian
2a5deb56a4
Adding couple of Block API, a bug fix and
...
a test change, all for blocks. wip.
llvm-svn: 118745
2010-11-11 00:11:38 +00:00
Fariborz Jahanian
e0587be735
Fix a crash encoding ivars of vector types and
...
to match gcc's encoding. Fixes //rdar: // 8519948.
llvm-svn: 115980
2010-10-07 21:25:25 +00:00
Fariborz Jahanian
30e8d58dbd
Copying result of object property reference expression
...
into a temporary is elidable as well.
(Finishes up radar 8291337).
llvm-svn: 114845
2010-09-27 17:30:38 +00:00
Fariborz Jahanian
c60da031c5
Fix a NYI in IRGen which was due to incorrect AST
...
for property reference expression (of c++ object type)
in the conditional expression. Fixes // rdar://8291337
llvm-svn: 114783
2010-09-25 01:08:05 +00:00
Fariborz Jahanian
4fbf4af0f6
Fixes IRgen bug in objc++ reference binding of a
...
getter expression.
Fixes // rdar://8437240
llvm-svn: 114299
2010-09-18 20:47:25 +00:00
Fariborz Jahanian
aaf44b2237
Only assignment operator triggers property setter call.
...
Fixes radar 8437253.
llvm-svn: 114207
2010-09-17 20:45:45 +00:00
Fariborz Jahanian
805b74ea30
RHS of property expression assignment requires
...
copy initialization before passing it to
a setter. Fixes radar 8427922.
llvm-svn: 113885
2010-09-14 23:02:38 +00:00
Fariborz Jahanian
f93ac89414
IRGen fix for using property-dot syntax to pass
...
reference object to a c++ member function.
fixes radar 8409336.
llvm-svn: 113602
2010-09-10 18:56:35 +00:00
Fariborz Jahanian
e89d03f619
property reference expression used on lhs of assignment
...
follows objective's semantics and is not overload'able
with an assignment operator. Fixes a crash and a missing
diagnostics. Radar 8379892.
llvm-svn: 113555
2010-09-09 23:01:10 +00:00
Fariborz Jahanian
61a312413c
Fix IRGen when property-dot syntax used to access
...
a c++ class object 'ivar'. Fixes radar 8366604.
llvm-svn: 112729
2010-09-01 19:36:41 +00:00
John McCall
b3732bb3b7
Just disable the hidden-visibility optimization for now by hiding it behind
...
a -cc1 option. The Darwin linker complains about mixed visibility when linking
gcc-built objects with clang-built objects, and the optimization isn't really
that valuable. Platforms with less ornery linkers can feel free to enable this.
llvm-svn: 110979
2010-08-12 23:36:15 +00:00
John McCall
398dc37d1f
Implement RTTI generation for Objective C types. Fixes PR7864.
...
llvm-svn: 110900
2010-08-12 02:17:33 +00:00
Douglas Gregor
8b2d2fe234
Allow reference binding of a reference of Objective-C object type to
...
an lvalue of another, compatible Objective-C object type (e.g., a
subclass). Introduce a new initialization sequence step kind to
describe this binding, along with a new cast kind. Fixes PR7741.
llvm-svn: 110513
2010-08-07 11:51:51 +00:00
John McCall
2ca705eb13
Support catching Objective C pointers in C++ under the non-fragile NeXT runtime.
...
Diagnose attempts to do this under the GNU or fragile NeXT runtimes.
llvm-svn: 109298
2010-07-24 00:37:23 +00:00
Anders Carlsson
bb4cfdff7e
When checking whether to bind an expression to a temporary, don't bind Obj-C message send expressions who call methods that return references.
...
llvm-svn: 108559
2010-07-16 21:18:37 +00:00
Fariborz Jahanian
0f19afb9d4
extern variable declared locally to objective-c++ method
...
should not be mangled either. Fixes radar 8016412.
llvm-svn: 107303
2010-06-30 18:27:47 +00:00
Fariborz Jahanian
b13ddbada1
Renamed selactor-expr-lvalue.mm to selector-expr-lvalue.mm.
...
Thanks Daniel D.
llvm-svn: 106758
2010-06-24 16:40:16 +00:00
Anders Carlsson
280e61f148
Fix an Obj-C++ miscompile when calling an Obj-C method that returns a C++ reference.
...
llvm-svn: 106477
2010-06-21 20:59:55 +00:00
Fariborz Jahanian
64cda8b5f3
objective-C++ IRGen: property reference as an
...
lvalue when performing a derived-to-base conversion.
Fixes radar 7501812. Added an executable test to
llvm-test suite.
llvm-svn: 106247
2010-06-17 23:00:29 +00:00
Fariborz Jahanian
6fdb139cdd
Do not treat @selector as lvalue (unlike g++).
...
Patch by Nico Weber (pr7390).
llvm-svn: 106242
2010-06-17 21:45:48 +00:00
Fariborz Jahanian
9240f3dac7
Objective-c++ IRGen. Support for @selector expression as
...
an lvalue. Fixes PR7390.
llvm-svn: 106235
2010-06-17 19:56:20 +00:00
Fariborz Jahanian
56d3b8c578
Moved objective-c++ code gen. tests to their own directory and
...
added a new test case (related to radar 8070772).
llvm-svn: 106067
2010-06-15 23:49:10 +00:00
Fariborz Jahanian
9ea5839cb6
Objective-c++ IR gen.
...
Flag synthesized struct decl. as non-empty so
CXX side of ir gen does not skip its Null initialization.
Fixes radar 8027844 for objc++'s collection statement.
llvm-svn: 104837
2010-05-27 16:05:06 +00:00
Douglas Gregor
aab11ede6e
Fix testsuite for blocks mangling change
...
llvm-svn: 104618
2010-05-25 17:46:21 +00:00
Douglas Gregor
527786ea3a
Various small fixes for construction/destruction of Objective-C++
...
instance variables:
- Use isRecordType() rather than isa<RecordType>(), so that we see
through typedefs in ivar types.
- Mark the destructor as referenced
- Perform C++ access control on the destructor
llvm-svn: 104206
2010-05-20 02:24:22 +00:00
John McCall
a9e6e8d654
Teach the ObjC mangler to ignore member pointers just like gcc does.
...
llvm-svn: 104001
2010-05-17 23:56:34 +00:00
Fariborz Jahanian
e1b45a5e6b
Fix API gen for objc_msgSend property of aggregate types
...
in Objective-c++ mode. Fixes radar 7986354.
llvm-svn: 103887
2010-05-15 23:05:52 +00:00
Fariborz Jahanian
43a40f9399
Objective-C++ Code gen. Handle code gen. for property
...
reference dot-syntax notation in a varierty of cases.
Fixes radar 7964490.
llvm-svn: 103440
2010-05-10 22:57:35 +00:00
Fariborz Jahanian
fdf474b05e
Fixes a Code gen crash trying to use a dot-syntax for
...
a property of a c++ class object (radar 7957369).
llvm-svn: 103279
2010-05-07 18:56:13 +00:00
Fariborz Jahanian
c5158203dd
Implement encoding of methods which have instantiated
...
template arguments.
llvm-svn: 103221
2010-05-07 00:28:49 +00:00
Fariborz Jahanian
b8993384f3
Code Gen support for Getter/Setter synthesis of
...
C++ object properties. (still radar 7468090).
llvm-svn: 103182
2010-05-06 15:45:36 +00:00
Fariborz Jahanian
60c7e16b64
Fixes a code gen. crash when ivar object has trivial constructor.
...
llvm-svn: 103028
2010-05-04 19:29:32 +00:00
Fariborz Jahanian
499b902510
Support for construct/destruct of ivar array
...
of c++ objects (NeXt runtime).
radar 7900343.
llvm-svn: 102546
2010-04-28 22:30:33 +00:00
Fariborz Jahanian
9ffd706bd4
Add encoding of reference types like gcc does for objc methods and
...
blocks. Fixes PR6468.
llvm-svn: 101196
2010-04-13 23:45:47 +00:00
Daniel Dunbar
8fbe78f6fc
Update tests to use %clang_cc1 instead of 'clang-cc' or 'clang -cc1'.
...
- This is designed to make it obvious that %clang_cc1 is a "test variable"
which is substituted. It is '%clang_cc1' instead of '%clang -cc1' because it
can be useful to redefine what gets run as 'clang -cc1' (for example, to set
a default target).
llvm-svn: 91446
2009-12-15 20:14:24 +00:00
Fariborz Jahanian
5dc61d7ab5
Test uses the new clang.
...
llvm-svn: 91292
2009-12-14 17:14:55 +00:00
Anders Carlsson
bf56946073
Mangle static variables inside Objective-C methods in Objective-C++. We currently mangle them the same way as gcc does.
...
llvm-svn: 91042
2009-12-10 03:14:39 +00:00