This patch fixes several shortcomings of the way we currently extend the lifetime of objects passed to calls to __builtin_os_log_format:
- Sema doesn't diagnose code that jumps into or out of the scope of a lifetime-extended object.
- Lifetime of objects in comma operators or expressions for ObjC property access isn't extended.
- We extend the lifetime of an object by emitting an extra pair of retain and release calls instead of delaying the release call.
- Calls to clang.arc.use are emitted on exception paths even though they are needed only on normal paths.
rdar://problem/62610583
This seems like an excessively general name for what's happening here.