Does LLVM convert Objective-C methods to inline functions?
inline-functions, llvm, objective-c, performance
Solution
No, because its impossible to know in the context of the Obj-C runtime if those kind of optimizations can be performed. The thing to remember is that Obj-C methods are invoked by a message send, these messages can come from more than just the `[myObject doSomething]` syntax.
Consider `[obj performSelector:NSSelectorFromString(@"hello")]` the fact that this can happen means that it would be impossible to ever inline any method.
There is also a chain of events that happens when a message is received by a class, these events can reroute, or even change the message that is being sent. This happens transparently underneath the message send.
Problem
Does LLVM automatically convert Objective-C methods to inline functions when possible? (I.e., is it just as performant to create an Objective-C method for a block of code that you could otherwise paste inline?) If LLVM doesn't perform this optimization, why not? If it does, (a) are there certain build settings I must set for this to happen? (b) How can I tell if an Objective-C method will be inlined?