When ARC is enabled, (objective-c) block objects are automatically retained and released thus they do not leak.
Without ARC, they still can leak from an expiring stack frame like other stack variables.
This patch simply adds the ARC checking condition onto the changes made in https://reviews.llvm.org/D107078. The checker already checks the same condition for global variables.
Aha ok, it sounds like we can no longer be sure that the block is on the stack at this point, did I get it right?
In this case I think it's more productive to have the block's memory space be UnknownSpaceRegion from the start, so that it fell through the memory space check, both here and at other call sites of isArcManagedBlock() (so it can be removed), and in any other code that relies on memory spaces (so this mistake is never made again).