This patch fixes a bug where EmitObjCForCollectionStmt doesn't pop cleanups for captures.
For example, in the following for-in loop, a block which captures self is passed to foo1:
for (id x in [self foo1:^{ use(self); }]) {
use(x); break;
}
The current code in EmitObjCForCollectionStmt doesn't pop the cleanup for the captured self before completing IR generation for the for-in loop. This causes code-gen to generate incorrect IR in which self gets released twice.
rdar://problem/16865751