Chris Lattner
b433b279f3
Fix rdar://6804402 - crash on objc implementations declared with
...
@class but no implementation. This was broken in all 3 runtime
impls.
llvm-svn: 69512
2009-04-19 06:02:28 +00:00
Daniel Dunbar
9a7a78b0ae
Fix bug in computation of ivar offsets for (adjacent) bitfields.
...
- The confusing IRgen bitfield interface is partly to blame here;
fixing the functional error for now, cleanups to the interface to
follow.
llvm-svn: 69503
2009-04-19 02:03:42 +00:00
Daniel Dunbar
f45dbd8c7b
Test case would allow clang to fail.
...
llvm-svn: 69470
2009-04-18 20:23:29 +00:00
Douglas Gregor
f21701b70c
Fix test to output LLVM to a temporary file, which we grep as part of the test
...
llvm-svn: 69448
2009-04-18 15:48:37 +00:00
Daniel Dunbar
41595d43d5
Use getAsPointerType instead of using getCanonicalType directly.
...
- <rdar://problem/6803995>
llvm-svn: 69435
2009-04-18 08:54:40 +00:00
Chris Lattner
6fdd57cba8
fix a crash compiling code with its own definition of objc_assign_weak.
...
rdar://6800430
llvm-svn: 69392
2009-04-17 22:12:36 +00:00
Chris Lattner
10dae30049
Fix rdar://6800926 - crash compiling non-fragile _Bool bitfield ivar,
...
the functional change here is changing ConvertType -> ConvertTypeForMem
so that we handle i1 fields properly as memory.
llvm-svn: 69361
2009-04-17 17:46:19 +00:00
Chris Lattner
ead1e0002f
clean up run lines.
...
llvm-svn: 69359
2009-04-17 17:43:56 +00:00
Fariborz Jahanian
bcf548760e
Category method synbols must be qualified by gategory name to
...
match gcc's.
llvm-svn: 69305
2009-04-16 18:34:20 +00:00
Eli Friedman
027aa3cb0e
Force target triple for test depending on __weak.
...
llvm-svn: 69297
2009-04-16 17:33:37 +00:00
Daniel Dunbar
4b68d26a93
Don't use \01 in symbol name if unnecessary.
...
- This was particularly bad since I fixed one instance of this name
and not another, meaning we got an LLVM module with the same
effective name in two different globals!
llvm-svn: 69205
2009-04-15 19:52:32 +00:00
Daniel Dunbar
24645c9ff4
Fix alignment on obj_msgrefs to match llvm-gcc.
...
llvm-svn: 69199
2009-04-15 19:04:46 +00:00
Daniel Dunbar
e60aa05d34
Add test case for superrefs section (and make spacing consistent).
...
llvm-svn: 69198
2009-04-15 19:03:14 +00:00
Daniel Dunbar
b25452a98e
Tweaks to Objective-C metadata (32 & 64-bit) to match llvm-gcc.
...
- Set alignment on property lists.
- 32-bit:
o Set section on property lists.
o Fix section name for category class methods.
o Fix symbol name for property lists.
o Fix section name for class method.
o Set alignment and section on class extension structure.
o Set alignment on a number of things: instance variables, methods,
method descriptions, the symbols structure.
- 64-bit:
o Fix section flags for protocol list.
I doubt most of these were problems in practice, but it is nice to
match llvm-gcc.
llvm-svn: 69132
2009-04-15 02:56:18 +00:00
Daniel Dunbar
3241fae46c
Set alignment on __cstring metadata variables to 1 (matching
...
llvm-gcc).
llvm-svn: 69097
2009-04-14 23:14:47 +00:00
Mike Stump
ca5ae66122
Fixup CodeGen for __weak __block variables. Radar 6756266
...
llvm-svn: 69010
2009-04-14 00:57:29 +00:00
Fariborz Jahanian
8e23171fbc
OS dependent code removed.
...
llvm-svn: 68904
2009-04-12 17:43:53 +00:00
Fariborz Jahanian
d381cde486
Non-pointer objects are none gc'able regardles of
...
the attribute set on them.
llvm-svn: 68844
2009-04-11 00:00:54 +00:00
Mike Stump
d352fd3699
Fixup copy/dispose helpers for Objective-C. Radar 6756504
...
llvm-svn: 68837
2009-04-10 23:09:55 +00:00
Daniel Dunbar
670af594d8
Force triple for a number of tests that rely on __weak.
...
llvm-svn: 68826
2009-04-10 21:23:20 +00:00
Fariborz Jahanian
464423dce4
Patch to generate meta-data for prtocol used
...
in @protocol expression.
llvm-svn: 68806
2009-04-10 18:47:34 +00:00
Anders Carlsson
39b2e130f0
Add @encode support for complex types.
...
llvm-svn: 68729
2009-04-09 21:55:45 +00:00
Daniel Dunbar
8f28d01126
Implementation definition of interfaces with __objc_exception attribute.
...
- Complete <rdar://problem/6635883> Support __objc_exception__
attribute
llvm-svn: 68591
2009-04-08 04:21:03 +00:00
Fariborz Jahanian
57eb2e021e
Propagte -fvisibility to objc2's class symbols.
...
llvm-svn: 68543
2009-04-07 20:26:30 +00:00
Daniel Dunbar
d7beeea228
Handle use side of __objc_exception__ attribute; when using an
...
exception with this attribute we don't need to emit a weak definition
for the exception type information.
llvm-svn: 68513
2009-04-07 06:43:45 +00:00
Chris Lattner
91c941ecfd
*everyone* knows that __weak is not defined on linux :)
...
llvm-svn: 68512
2009-04-07 06:05:28 +00:00
Daniel Dunbar
15894b791b
Various fixes to symbols used for Obj-C x86_64 metadata.
...
- Changed method names to match gcc (categories names still aren't
mangled in).
- Expose correct name for class and metadata symbols (although
-fvisibility=hidden isn't yet correct).
- Remove several things from llvm.used that didn't need to be there
(I suspect this can still be trimmed).
- Don't use asm-prefix extension for _objc_empty_{cache,vtable} (not
needed).
- Hide EH type class info with -fvisibility=hidden
- Change setGlobal[Option]Visibility to not change the visibility of
functions with internal linkage.
llvm-svn: 68510
2009-04-07 05:48:37 +00:00
Daniel Dunbar
5718a2b4a1
Fix test (triple wasn't passed correctly, the driver doesn't accept
...
-mtriple).
llvm-svn: 68484
2009-04-07 02:31:44 +00:00
Fariborz Jahanian
bc3c77b881
Fixed visibility issues related to objc2's synthesized
...
ivars.
llvm-svn: 68453
2009-04-06 18:30:00 +00:00
Chris Lattner
dcceee734c
Fix a couple of cases where Constant* pointers can dangle in
...
ObjCNonFragileABITypesHelper by converting them to dynamic
getters. This fixes a crash on rdar://6757213. The others
should be converted over as well.
llvm-svn: 68445
2009-04-06 16:53:45 +00:00
Fariborz Jahanian
e4fd640147
Fix a bug in declaration of property in continuation
...
class which was exposed by implementation of
objc2's nonfragile abi code gen.
llvm-svn: 68259
2009-04-01 23:23:53 +00:00
Fariborz Jahanian
78be1651e2
Nonfragile ivar synthesis with property is in a continuation
...
class.
llvm-svn: 68234
2009-04-01 19:37:34 +00:00
Fariborz Jahanian
95c802cc03
Removed the test case, as Chris did have a test case in the patch.
...
llvm-svn: 68214
2009-04-01 16:53:37 +00:00
Fariborz Jahanian
df3a9f92b3
Test case for Chris's patch:
...
http://llvm.org/viewvc/llvm-project?view=rev&revision=68177
llvm-svn: 68213
2009-04-01 16:51:23 +00:00
Eli Friedman
84ae509ac3
Fix test failure on Linux by forcing the triple to OS X.
...
llvm-svn: 68179
2009-04-01 02:55:21 +00:00
Chris Lattner
d18136a644
fix the two xfails I added with a previous patch by making ObjC interface
...
types get completed when their definition is seen if previously laid out by
the code generator.
llvm-svn: 68177
2009-04-01 02:36:43 +00:00
Fariborz Jahanian
63a224ad59
ir-gen support for nonfragile abi's synthesized ivars.
...
llvm-svn: 68122
2009-03-31 18:11:23 +00:00
Chris Lattner
8b14b98bab
Fix a problem in ASTContext::addRecordToClass handling forward declarations.
...
In a case like:
@class foo;
foo *P;
addRecordToClass was making an empty shadow struct for the foo interface and
completing it. Later when an:
@interface foo
...
@endif
foo *Q;
was seen, ASTContext::addRecordToClass would think that foo was already laid
out and not lay out the definition. This fixes it to create a forward declared
struct the first time around, then complete it when the definition is seen.
Note that this causes two tests to regress, because something is trying to get
the size of the forward declared structs returned by this. Previously, this
would end up getting a size of zero but now it properly dies. I'm not sure
what the right solution is for this, so I xfailed the tests.
Fariborz, please take a look at this. The testcase in rdar://6676794 now gets
farther, but dies later because the objc ivar is not assigned a field number.
As an aside, I really don't like the fact that the objc front-end is creating
shadow C structs for ObjC types. This seems like an implementation detail of
the code generator that could be fixed by better factoring of the extant code.
llvm-svn: 68106
2009-03-31 09:24:30 +00:00
Mike Stump
871c1f6f88
Remove -f__block as codegen for __block variables should be solid.
...
llvm-svn: 67697
2009-03-25 18:05:39 +00:00
Daniel Dunbar
a45cf5b6b0
Rename clang to clang-cc.
...
Tests and drivers updated, still need to shuffle dirs.
llvm-svn: 67602
2009-03-24 02:24:46 +00:00
Fariborz Jahanian
aedcfa49b9
Must allow for strong cast of floats as well (objc2 gc).
...
llvm-svn: 67551
2009-03-23 19:10:40 +00:00
Fariborz Jahanian
629aed9327
Issue error if variables are defined inside an objc class,
...
category or protocol.
llvm-svn: 67450
2009-03-21 18:06:45 +00:00
Mike Stump
692c6e3729
Fix codegen for support for super inside block literal expressions.
...
llvm-svn: 67406
2009-03-20 21:53:12 +00:00
Fariborz Jahanian
07038f9785
Fix a crash during meta-data generation of objc2's nonfragile abi.
...
llvm-svn: 67402
2009-03-20 20:48:19 +00:00
Fariborz Jahanian
391d4fc7f7
More super dot-syntax property implementation
...
when there is actually a property declaration
used in the dot-syntax.
llvm-svn: 67391
2009-03-20 19:18:21 +00:00
Fariborz Jahanian
150abf2a00
Implement ir gen. for setter/getter applied to 'super'
...
in a property dot-syntax notation.
llvm-svn: 67382
2009-03-20 17:22:23 +00:00
Fariborz Jahanian
3654e65adf
objc: Implemented variables declared in class interface
...
whose sema decl is at the translation unit.
llvm-svn: 67249
2009-03-18 22:33:24 +00:00
Daniel Dunbar
94d48e0bd0
Force triple for a couple test cases.
...
llvm-svn: 66974
2009-03-13 22:48:51 +00:00
Chris Lattner
622b1041ca
add a testcase for recursion through blocks pointers, rdar://6676764.
...
llvm-svn: 66965
2009-03-13 22:00:25 +00:00
Fariborz Jahanian
54e6d924ff
Fix test.
...
llvm-svn: 66856
2009-03-13 00:43:34 +00:00
Fariborz Jahanian
1b074a3eb7
Fixed an ir-gen bug related to strong-cast generation of
...
source being a non-pointer.
llvm-svn: 66854
2009-03-13 00:42:52 +00:00
Fariborz Jahanian
36ce7e17d7
Use paropery's setter attribute name as
...
the selector for the property setter.
llvm-svn: 66834
2009-03-12 22:34:11 +00:00
Fariborz Jahanian
156506e749
ir-gen support for class getter/setter call
...
using property dot-syntax.
llvm-svn: 66556
2009-03-10 18:03:11 +00:00
Daniel Dunbar
ae3338429f
NeXT: Set alignment on a number of ObjC metadata variables (matching llvm-gcc).
...
llvm-svn: 66481
2009-03-09 22:18:41 +00:00
Chris Lattner
c0452e402b
add rdar#
...
llvm-svn: 66356
2009-03-08 01:43:34 +00:00
Chris Lattner
c808fc34b3
fix test
...
llvm-svn: 66352
2009-03-07 23:39:35 +00:00
Anders Carlsson
16d5d291ec
Mangle Objective-C interfaces correctly (where correctly refers to what gcc does)
...
llvm-svn: 66349
2009-03-07 22:03:21 +00:00
Eli Friedman
4663a3368d
Make constant emission for @encode use the common string emission code.
...
This is a bit cleaner, and also "fixes" bad code that compares the
addresses of the string constants.
llvm-svn: 66346
2009-03-07 20:17:55 +00:00
Fariborz Jahanian
03676f557c
correct bitfield ivar offset in ivar meta-data.
...
(objc abi specific).
llvm-svn: 66345
2009-03-07 19:43:20 +00:00
Mike Stump
c61149d796
Fix to account for default support for blocks. Once we have enough
...
testing to to be sure it all works, we'll rip out all the unsupported
code.
llvm-svn: 66338
2009-03-07 15:34:10 +00:00
Fariborz Jahanian
f5d0613ce9
Fixed a bug where generation of read-barriers caused
...
crash in ir-gen.
llvm-svn: 66302
2009-03-06 23:05:56 +00:00
Mike Stump
4446dcf061
prep work for copy/destroy helpers for block literals.
...
llvm-svn: 66159
2009-03-05 08:32:30 +00:00
Fariborz Jahanian
eab5ecd8e0
Fixed an ir-gen bug in syntheszing a getter function
...
with property type which does not match its ivar and
in -fobjc-gc-only mode!
llvm-svn: 65955
2009-03-03 18:49:40 +00:00
Mike Stump
0e425b8200
Push checking down, also, give the user a hit as to which part of the
...
block literal is causing the problem, instead of the vague reference
to the entire block literal.
llvm-svn: 65798
2009-03-02 03:04:42 +00:00
Daniel Dunbar
53f12b11dc
This test requires blocks.
...
llvm-svn: 65754
2009-03-01 02:20:08 +00:00
Anders Carlsson
961763e35a
Emit errors about unsupported blocks features.
...
llvm-svn: 65751
2009-03-01 01:45:25 +00:00
Fariborz Jahanian
bac73acc24
Obscure code gen bug related to sending
...
message to 'super' in a class method declared in
cateogy (darwin specific).
llvm-svn: 65709
2009-02-28 20:07:56 +00:00
Chris Lattner
d8b741c85f
handle @encode interactions with array initializers.
...
llvm-svn: 65401
2009-02-24 23:10:27 +00:00
Chris Lattner
0cb7803341
move some initialization checking code from SemaDecl.cpp
...
to SemaInit.cpp, no functionality change.
llvm-svn: 65394
2009-02-24 22:27:37 +00:00
Chris Lattner
d7e7b8e411
first wave of fixes for @encode sema support. This is part of PR3648.
...
The big difference here is that (like string literal) @encode has
array type, not pointer type.
llvm-svn: 65391
2009-02-24 22:18:39 +00:00
Daniel Dunbar
94ceb61574
Fix two @synchronized bugs found by inspection: the expression to sychronize on should only be evaluated once, and it is evaluated outside the cleanup scope.
...
Also, lift SyncEnter and SyncExit up in nervous anticipation of x86-64
zero cost EH.
llvm-svn: 65362
2009-02-24 01:43:46 +00:00
Anders Carlsson
d05f44b5ca
Correctly encode incomplete and variable length arrays. Fixes PR3639.
...
llvm-svn: 65255
2009-02-22 01:38:57 +00:00
Fariborz Jahanian
ccfd554024
Fixed an ICE in meta-data generation of __weak/__strong ivars.
...
llvm-svn: 65235
2009-02-21 18:23:24 +00:00
Fariborz Jahanian
1dd6094517
Fixes a bug in property type encoding.
...
llvm-svn: 64672
2009-02-16 21:41:04 +00:00
Fariborz Jahanian
99bed6fd21
Fixed a problem caused by foreward @class use
...
which consequently caused a Seg fault. during meta-data
generation. It also addresses an issue related to
late binding of newly synthesize ivars (when we support it).
llvm-svn: 64563
2009-02-14 20:13:28 +00:00
Fariborz Jahanian
d8fc1053ab
Fixed a 64bit code gen bug of a cateogory
...
implementation with no category declaration!
llvm-svn: 64470
2009-02-13 17:52:22 +00:00
Daniel Dunbar
eb39504426
Use -fnext-runtime for this test.
...
llvm-svn: 63688
2009-02-04 00:03:15 +00:00
Daniel Dunbar
c41a0b8a3c
Force -triple/-fnext-runtime for a few more test cases.
...
llvm-svn: 63679
2009-02-03 23:04:31 +00:00
Fariborz Jahanian
2f85a6450a
Detailed documentation for encoding of properties and a test
...
case.
llvm-svn: 62607
2009-01-20 20:04:12 +00:00
Fariborz Jahanian
218c630171
Improving on encoding of objective-c's property types. More to come.
...
llvm-svn: 62601
2009-01-20 19:14:18 +00:00
Fariborz Jahanian
705c6d9cdd
Patch to re-implement ivar-list meta-data generation to fix
...
cases of unnamed ivar bitfields.
llvm-svn: 62429
2009-01-17 19:36:33 +00:00
Douglas Gregor
088ea012cd
Add -fnext-runtime to Objective-C properties testcase
...
llvm-svn: 62390
2009-01-17 00:53:59 +00:00
Fariborz Jahanian
5c76772f49
Patch to fix encoding of Enum bitfields in ObjC.
...
llvm-svn: 62135
2009-01-13 01:18:13 +00:00
Fariborz Jahanian
30e7864661
Patch to implement code gen for aggrgate-valued property used
...
to access a field of its type.
llvm-svn: 62123
2009-01-12 23:27:26 +00:00
Fariborz Jahanian
17290c3638
Objc's compatibility-alias semantics and code
...
gen issue fix.
llvm-svn: 61901
2009-01-08 01:10:55 +00:00
Fariborz Jahanian
475831bd6e
Another nasty code gen. bug with trivial fix. Calling class
...
method on 'super' receiver in a category implementation.
Other simpler cases were working by accident.
llvm-svn: 61880
2009-01-07 20:11:22 +00:00
Sebastian Redl
4f84ddccc8
Fix a grep error that caused CodeGenObjC/encode-test.m to fail.
...
llvm-svn: 61455
2008-12-28 15:48:05 +00:00
Fariborz Jahanian
4ecf1e94db
Last patch, for now, to privde ObjC's encoding of types.
...
We now pass all gcc's encoding compatibility tests.
llvm-svn: 61387
2008-12-23 21:30:15 +00:00
Fariborz Jahanian
daef00bca6
More encoding support; in this case, encoding of
...
outer-most const of pointer types.
llvm-svn: 61355
2008-12-22 23:22:27 +00:00
Sebastian Redl
f795cbed2e
Test case makes a platform assumption, so force triple.
...
llvm-svn: 61310
2008-12-21 12:17:24 +00:00
Fariborz Jahanian
a0befc0a6f
Finish up saving original parameter type and
...
using it in ObjC's method parameter encoding.
llvm-svn: 61293
2008-12-20 23:29:59 +00:00
Fariborz Jahanian
7acf0749d4
Strangely enough, name of ObjC class is not encoded into the
...
full encoding of the class which has an ivar of pointer to this
class. Its name is encoded in the type for the ivar in the
ivar-list metadata. This patch conforms to the above rule.
llvm-svn: 61282
2008-12-20 19:17:01 +00:00
Fariborz Jahanian
1d35f12e6b
More encoding support. This time for
...
@encode of classes and bitfields.
llvm-svn: 61268
2008-12-19 23:34:38 +00:00
Fariborz Jahanian
8c036a3af4
Test case for my last @encode patch.
...
llvm-svn: 61247
2008-12-19 17:45:06 +00:00
Fariborz Jahanian
cfac794a5c
And a test case for my previous patch.
...
llvm-svn: 61044
2008-12-15 20:39:58 +00:00
Fariborz Jahanian
7572ac5614
Patch to allow a getter call using property dot-syntax notation.
...
llvm-svn: 60816
2008-12-10 00:21:50 +00:00
Fariborz Jahanian
3d8552a75d
Support for implementation of property in the case where
...
the synthesis is in an implementation of s subclass of
a super class where the property has been declared.
llvm-svn: 60792
2008-12-09 20:23:04 +00:00
Fariborz Jahanian
fbbaf6afae
This test checks for duplicate implementation of the same
...
property. It also checks for duplicate use of the same ivar
in two different iproperty implementations. It also caught
an error for a test case used in CodeGen :).
llvm-svn: 60610
2008-12-05 22:32:48 +00:00
Fariborz Jahanian
6de7eb8587
Another test for property code gen.
...
llvm-svn: 60128
2008-11-26 23:20:29 +00:00
Fariborz Jahanian
57251782d0
Code gen for aggregate-valued properties and a test case.
...
llvm-svn: 60122
2008-11-26 22:36:09 +00:00
Fariborz Jahanian
f8ef9f3dc9
Set default property attributes on each property.
...
Implemented anonymous category (also know as continuation class)
used to override main class's property attribute. This is work in
propgress.
llvm-svn: 60114
2008-11-26 20:01:34 +00:00
Fariborz Jahanian
9ac535162b
Implemented ir-gen for 'implicit' properties using the new AST nodes.
...
llvm-svn: 59886
2008-11-22 22:30:21 +00:00
Fariborz Jahanian
e2caaaa13c
Fixed bugzilla bug# 3095 related to code gen. for @synchronized.
...
llvm-svn: 59838
2008-11-21 19:21:53 +00:00
Douglas Gregor
0f492d1a11
Only test test/CodeGenObjC/synchronized.m as a i686-apple-darwin8 target
...
llvm-svn: 59463
2008-11-17 20:45:14 +00:00
Fariborz Jahanian
e3126a24e3
Test case for objective-c's @synchronized statement.
...
llvm-svn: 59451
2008-11-17 18:03:28 +00:00
Zhongxing Xu
e76577a97d
add targe triple commandline option to fix test failure on Linux.
...
llvm-svn: 59412
2008-11-16 09:17:52 +00:00
Daniel Dunbar
c475d4224b
NeXT: Emit protocol objects lazily.
...
- That is, the metadata for a protocol is only emitted if that
protocol is actually used in the translation unit. This is
important because Objective-C headers frequently contain a large
number of protocol definitions, only a few of which will be used in
any given file.
llvm-svn: 58400
2008-10-29 22:36:39 +00:00
Daniel Dunbar
340b5ddcf9
Fix regression in comparison of qualified id; == operator was being
...
created with LHS and RHS whose types didn't match.
llvm-svn: 58049
2008-10-23 23:30:52 +00:00
Daniel Dunbar
fbe68a84f8
NeXT: Update to use CreateRuntimeFunction for the routines it imports.
...
llvm-svn: 56902
2008-10-01 01:06:06 +00:00
Daniel Dunbar
3a28b9acbd
Add more testing of Obj-C property synthesis.
...
llvm-svn: 56564
2008-09-24 18:00:13 +00:00
Daniel Dunbar
ce05c8eb49
Fix two bugs exposed by array passing assert:
...
(1) Additional arguments to variadic methods should have default
promotions applied.
(2) Additional arguments to non-variadic methods were allowed.
llvm-svn: 56084
2008-09-11 00:50:25 +00:00
Daniel Dunbar
c01f56c8de
Add some Objective-C code generation tests.
...
- Note that these don't really test anything other than that code
generation doesn't fail or crash. Better than nothing though!
llvm-svn: 55761
2008-09-04 04:36:23 +00:00