While looking at this, I found that expr.c always calls
free_temp_slots immediately followed by pops_temp_slots. Isn't the
call to free_temp_slots pointless there?
It looks like it is now. It didn't used to be though (when we had RTL_EXPR).
copy_blkmode_from_reg (called from expand_call) calls preserve_temp_slots
without pushing a scope first. Hence it appears to be possible, and I'm
appearantly running into such a case, that it calls this when temp_slot_level
is zero, leading to array accesses with index -1 (resulting in ill behav