On Feb 23, 2008, at 9:55 AM, David Chisnall wrote: > I'm interested in working on Objective-C code generation for the GNU > and Étoilé Objective-C runtimes (I've worked on the former and wrote > the latter).
Great! > I imagine the easiest way of getting this working is to > transform the Objective-C AST into a pure-C AST with calls to the > relevant runtime libraries. This is the way that GCC works, but I don't think it is really the best way. I'd much rather have the clang codegen module directly produce the LLVM IR for the constructs it needs. I don't anticipate that this will be a problem for metadata or other objc constructs. This does require an understanding of the LLVM IR, but it is well documented, and there are lots of examples. If you get stuck, please ask on this list, we'd be happy to help. > Presumably someone at Apple will want to add support for their runtime > libraries as well at some point, so having a clean interface to allow > easily switching between the three is going to be important (rather > than the 10,000 lines of runtime-specific, unreadable, code in GCC). Yes, absolutely :) > Are there any existing hooks for inserting this abstraction layer? If > so, can someone point me in the right direction, and if not can > someone suggest a good place to put them? At this point, I'd suggest starting with the simple constructs (e.g. the stand alone objc expressions like @"foo", add pointers to interfaces, etc) and then move on the metadata. If you do each patch cleanly and incrementally I don't expect a big problem. When we start on codegen support for the next runtime, we can generalize the code and figure out what abstractions are best on a case-by-case basis. -Chris _______________________________________________ cfe-dev mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
