This is the patch I split out of https://reviews.llvm.org/D64464.
The cleanup is pushed in EmitCallExpr and EmitObjCMessageExpr so that the destructor is called to destruct function call and ObjC message returns. I also added test cases for block function calls since the patch in https://reviews.llvm.org/D64464 wasn't handling that case correctly.
rdar://problem/51867864
Does llvm::Value* actually guarantee three bits? Presumably on 64-bit platforms, but we do support 32-bit hosts.
Fortunately, I don't actually think there's any reason to be space-conscious in this class; all the values are short-lived. Might as well pull all the fields out into a bit-field or something.