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 behavior, a SEGV for me). Would it be the right thing to wrap this and the immediately preceding call to assign_temp into push_temp_slots/pop_temp_slots? Or is it the other way around and the call to preserve_temp_slots is improper here?
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? Thanks, Jan