summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CGObjCGNU.cpp
Commit message (Collapse)AuthorAgeFilesLines
* This fixes the case where the wrong symbol is emitted leading to linking ↵Fariborz Jahanian2009-07-031-4/+9
| | | | | | | | errors when you reference a class before defining it (GNU runtime). Patch by David Chisnall. llvm-svn: 74772
* use new and simplified LLVM APIs. Patch by Jay Foad!Chris Lattner2009-07-011-3/+2
| | | | llvm-svn: 74585
* De-ASTContext-ify DeclContext.Argyrios Kyrtzidis2009-06-301-14/+9
| | | | | | | Remove ASTContext parameter from DeclContext's methods. This change cascaded down to other Decl's methods and changes to call sites started "escalating". Timings using pre-tokenized "cocoa.h" showed only a ~1% increase in time run between and after this commit. llvm-svn: 74506
* Patch fixes an obscure bug when 'used' attribute is applied toFariborz Jahanian2009-06-231-0/+5
| | | | | | | | | variables in ObjC's Next runtime mode. Next runtime also implicitly applies 'used' attribute on some of its meta-data. This results in two 'llvm.used' arrays to be generated, and one of them is renamed to 'llvm.used1'. llvm-svn: 74008
* "GCC emits an __objc_class_name_{classname} symbol for every class, and a ↵Chris Lattner2009-06-151-4/+29
| | | | | | | | corresponding reference to this symbol for every compilation unit that references the class. This causes linker errors when you try linking a program which references some classes but doesn't define them. The attached patch implements this support in clang, so you can compile a class with clang, reference it in a file compiled with GCC, and have it all work correctly." Patch by David Chisnall! llvm-svn: 73364
* Cleanup/Refactoring of ivar collection. No change in functionality.Fariborz Jahanian2009-06-041-7/+1
| | | | llvm-svn: 72827
* This patch adds support for sender-aware dispatch in Objective-C for the GNU ↵Fariborz Jahanian2009-05-221-6/+27
| | | | | | | | | | runtime, when compiled with -fobjc-sender-dependent-dispatch. This is used in AOP, COP, implementing object planes, and a few other things. Patch by David Chisnall. llvm-svn: 72275
* This patch provides preliminary support for non-fragile instance variables ↵Fariborz Jahanian2009-05-201-3/+74
| | | | | | | | | | | | on the GNU runtime. It currently requires a patches to GNU libobjc (and so is not enabled by default) which are currently being tested and reviewed by GNUstep before being pushed upstream. This patch does not allow support for synthesized ivars, but does provide the infrastructure needed for supporting them. Patch by David Chisnall llvm-svn: 72175
* This patch allows clang to generate code for declared properties on the GNU ↵Fariborz Jahanian2009-05-191-2/+28
| | | | | | | | runtime. As with @synchronized, this requires some extra functions that are included with other libraries (not with the GNU runtime itself) and so will cause linker errors when these are not present. Patch by David Chisnall. llvm-svn: 72079
* This patch fixes two bugs in the GNU Objective-C runtime implementation. ↵Fariborz Jahanian2009-05-171-14/+34
| | | | | | | | One is a case in rethrowing exceptions where the C types don't match correctly (I already sent this patch to Daniel Dunbar, who found the bug, so it may have already been committed). The other fixes the case properties so that the methods generated as property accessors are added to the class structure correctly. Patch by David Chisnall. llvm-svn: 71980
* More improvements for GNU runtime objc EH, patch by David Chisnall!Chris Lattner2009-05-111-2/+36
| | | | llvm-svn: 71451
* further improvements to gnu objc EH stuff, patch by David Chisnall!Chris Lattner2009-05-081-15/+15
| | | | llvm-svn: 71227
* "This patch fixes message sends to super in categories for the GNU runtime. ↵Chris Lattner2009-05-081-17/+31
| | | | | | | | This used to work, but I broke it when I modified the code to emit the same thing as GCC for message sends to super in classes." Patch by David Chisnall! llvm-svn: 71220
* initial support for ObjC exceptions with the GNU runtime:Chris Lattner2009-05-081-2/+229
| | | | | | | | | | | | | | "This patch is a first pass at adding support for exceptions for the GNU runtime. There are a few limitations at present: - @synchronized() is not yet supported at all. gcc currently emits calls to runtime library functions that don't exist for this directive. - Only id @catch statements are currently working. This is enough for NS_DURING and friends, but I need to spend more time reading the output from gcc -S to work out how it finds the class pointer to make arbitrary class type catch statements work. - I've tested it with a few common cases[1] and the clang test suite (which doesn't test exceptions for the GNU runtime, but shows I haven't broken anything else), but there are probably a lot of cases I've missed." Patch by David Chisnall! llvm-svn: 71198
* Patch to support Gnu runtime's typed selectors.Fariborz Jahanian2009-05-051-7/+38
| | | | | | Patch by David Chisnall. llvm-svn: 71023
* "The attached diff fixes the //FIXME in message send to super. This should ↵Chris Lattner2009-05-041-4/+4
| | | | | | | | now be faster, and works in the presence of class posing. This is now the same approach as used in GCC (the earlier code was a quick hack to get something working)." Patch by David Chisnall! llvm-svn: 70877
* Patch from David Chisnall:Daniel Dunbar2009-05-041-11/+47
| | | | | | | | | The attached diff fixes the //FIXME in message send to super. This should now be faster, and works in the presence of class posing. This is now the same approach as used in GCC (the earlier code was a quick hack to get something working). llvm-svn: 70868
* Compute Objective-C metadata size information from the record layout,Daniel Dunbar2009-05-031-7/+3
| | | | | | not the shadow structure. llvm-svn: 70691
* Coalesce the ivar offset calculation further.Daniel Dunbar2009-05-031-1/+2
| | | | llvm-svn: 70683
* split ObjC and C++ Statements out into their own headers.Chris Lattner2009-04-261-0/+1
| | | | llvm-svn: 70105
* "This fixes message sends to super in a way that both works with real code ↵Chris Lattner2009-04-251-20/+28
| | | | | | | | and passes the test in the test suite. It also fixes a crash when using recent versions of GNU libobjc and compiling modules that do not contain any constant strings but do contain a declaration of the constant string class and possible some other corner cases (thanks to Pete French for providing me with a test case for that one)." Patch by David Chisnall! llvm-svn: 70093
* Eliminate the three SmallVectors in ObjCImplDecl (for instanceDouglas Gregor2009-04-231-8/+16
| | | | | | | | | | | methods, class methods, and property implementations) and instead place all of these entities into the DeclContext. This eliminates more linear walks when looking for class or instance methods and should make PCH (de-)serialization of ObjCDecls trivial (and lazy). llvm-svn: 69849
* Add CGObjCRuntime::GetConcreteClassStruct to encapsulate access to theDaniel Dunbar2009-04-221-9/+2
| | | | | | underlying llvm::StructType for an interface. llvm-svn: 69796
* Use ComputeIvarBaseOffset instead of looking up by hand.Daniel Dunbar2009-04-221-7/+2
| | | | llvm-svn: 69789
* Merge ivar access amongst the three runtimes.Daniel Dunbar2009-04-221-21/+3
| | | | | | | | | - For now, this means we are always doing the address computations by hand instead of constructing a proper GEP. Right now, however, this is less important than having fewer entry points to dealing with Objective-C interface layout. llvm-svn: 69787
* Make ObjCInterfaceDecl's const in some more places.Daniel Dunbar2009-04-221-2/+2
| | | | llvm-svn: 69775
* Kill ASTContext::[gs]etFieldForDecl, instead we just lookup thingsDaniel Dunbar2009-04-211-3/+2
| | | | | | | | when we need them -- which is exactly what some code was already doing! - No intended functionality change. llvm-svn: 69648
* Remove LateBoundIVars() runtime interface, it is unused.Daniel Dunbar2009-04-211-3/+0
| | | | llvm-svn: 69641
* Assert on a few conditions that (I believe) should holdDaniel Dunbar2009-04-211-0/+1
| | | | | | | w.r.t. ASTContext::[gs]etFieldDecl, and the Field argument to EmitObjCValueForIvar). llvm-svn: 69639
* Remove non-const form of lookupFieldDeclForIvar.Daniel Dunbar2009-04-201-2/+4
| | | | llvm-svn: 69563
* Fix rdar://6804402 - crash on objc implementations declared withChris Lattner2009-04-191-2/+6
| | | | | | | @class but no implementation. This was broken in all 3 runtime impls. llvm-svn: 69512
* revert david's patch, which causes a testsuite failure.Chris Lattner2009-04-191-3/+2
| | | | llvm-svn: 69501
* "This patch fixes message sends to super in class methods for the GNU ↵Chris Lattner2009-04-181-2/+3
| | | | | | | | runtime (currently an instance method lookup is being performed)." Patch by David Chisnall! llvm-svn: 69493
* Propagate the ASTContext to various AST traversal and lookup functions.Douglas Gregor2009-04-091-4/+5
| | | | | | No functionality change (really). llvm-svn: 68726
* Fixes a problem where the compiler is reporting the wrong size to the Gnu Fariborz Jahanian2009-04-011-2/+3
| | | | | | | runtime on 64-bit architectures. Patch by David Chisnall llvm-svn: 68238
* tidy some code.Chris Lattner2009-04-011-10/+8
| | | | llvm-svn: 68174
* Patch to fix proptocol reference ir-gen for GNU runtime.Fariborz Jahanian2009-03-311-2/+39
| | | | | | Patch by David Chisnal. llvm-svn: 68125
* Some "prep" work for handling ObjC @-string constants that contain UTF-8. No ↵Steve Naroff2009-03-311-2/+4
| | | | | | | | functionality change. Changed GenerateConstantString() to take an ObjCStringLiteral (instead of a std::string). While this isn't strictly necessary, it seems cleaner and allows us to cache to "containsNonAscii" if necessary (to avoid checking in both Sema and CodeGen). llvm-svn: 68114
* Use CodeGenModule API for ObjC runtime function references.Fariborz Jahanian2009-03-301-14/+28
| | | | | | Patch by David Chisnall. llvm-svn: 68043
* Obscure code gen bug related to sending Fariborz Jahanian2009-02-281-0/+2
| | | | | | | message to 'super' in a class method declared in cateogy (darwin specific). llvm-svn: 65709
* Some refactoring of Ivar offset code gen.Fariborz Jahanian2009-02-101-0/+20
| | | | | | in preparation for nonfragile ivar offset work. llvm-svn: 64225
* Patch fixes messaging for GNU runtime.Fariborz Jahanian2009-02-041-58/+36
| | | | | | Patch by David Chisnall llvm-svn: 63769
* GNUStep fast enumeration.Fariborz Jahanian2009-02-031-1/+3
| | | | | | Patch by David Chisnall. llvm-svn: 63666
* ir-gen for nonfragile ivar bitfield access (objc2 nonfragile abi).Fariborz Jahanian2009-02-031-13/+19
| | | | llvm-svn: 63644
* objc2's ir-gen for nonfragile ivar access.Fariborz Jahanian2009-02-031-0/+2
| | | | llvm-svn: 63578
* Thread CGFunctionInfo construction through CodeGenTypes.Daniel Dunbar2009-02-021-4/+6
| | | | | | - Inefficient & leaks memory currently, will be cleaned up subsequently. llvm-svn: 63567
* More ABI API cleanup.Daniel Dunbar2009-02-021-2/+2
| | | | | | | - Lift CGFunctionInfo creation above ReturnTypeUsesSret and EmitFunction{Epi,Pro}log. llvm-svn: 63553
* ABI handling API changes.Daniel Dunbar2009-02-021-3/+4
| | | | | | | | | | | - Lift CGFunctionInfo creation up to callers of EmitCall. - Move isVariadic bit out of CGFunctionInfo, take as argument to GetFunctionType instead. No functionality change. llvm-svn: 63550
* Refactored code gen for ivar access in preparation forFariborz Jahanian2009-02-021-0/+16
| | | | | | objc2 nonfragile ivar access code gen. llvm-svn: 63541
* improvements for GNU objc runtime support, patch by David Chisnall!Chris Lattner2009-01-271-32/+54
| | | | llvm-svn: 63092
OpenPOWER on IntegriCloud