Anders Carlsson
6774b1f1c1
Add -fcxx-exceptions to all tests that use C++ exceptions.
...
llvm-svn: 126599
2011-02-28 00:40:07 +00:00
Fariborz Jahanian
42455ea935
Implement objective-c++'s block pointer type matching involving
...
types which are contravariance in argument types and covariance
in return types. // rdar://8979379.
llvm-svn: 125445
2011-02-12 19:07:46 +00:00
John McCall
351762cda2
A few more tweaks to the blocks AST representation:
...
- BlockDeclRefExprs always store VarDecls
- BDREs no longer store copy expressions
- BlockDecls now store a list of captured variables, information about
how they're captured, and a copy expression if necessary
With that in hand, change IR generation to use the captures data in
blocks instead of walking the block independently.
Additionally, optimize block layout by emitting fields in descending
alignment order, with a heuristic for filling in words when alignment
of the end of the block header is insufficient for the most aligned
field.
llvm-svn: 125005
2011-02-07 10:33:21 +00:00
Rafael Espindola
05842dabb8
Move unnamed_addr after the function arguments on Sabre's request.
...
llvm-svn: 124210
2011-01-25 19:10:24 +00:00
Anders Carlsson
571e2ad042
Mark VTables and RTTI data linkonce_odr instead of weak_odr, with the exception of explicit template instantiations, which have to be weak_odr.
...
This fixes PR6996.
llvm-svn: 124089
2011-01-24 00:46:19 +00:00
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