This brings back code that was doing so earlier (when we had no constructed contexts at all) but was removed too early in D43104, as discussed in D43497. This allows us to call the correct destructor sequence in the end of the operator && in the test, even if not all of them are inlined, because we keep track of all temporaries we've constructed in order to resolve situations when the number or nature of temporaries is not known in compile-time.
The test case provided in D43497 was not entirely correct: the global variable would anyway be invalidated by the other destructor that we don't inline yet. Though, yeah, it needs to be fixed as well, but it isn't addressed by the fix that i've been thinking of (this patch).
Cleanup process misbehaves when the node after the cleanup is caching out: in this case we take the node that wasn't cleaned up and hit the assertion. This was fixed as well. It's a bit disappointing that our process of constructing a single exploded node is so complicated and error-prone.