/* Push location saved in LOC onto the location stack, return it. The top of that stack is the current location. Needs a matching loc_pop().  */
Location* loc_push_restore(Location *loc)
/* Push location saved in LOC onto the location stack, return it. The top of that stack is the current location. Needs a matching loc_pop().  */
Location* loc_push_restore(Location *loc)
{
    assert(!loc->prev);
    loc->prev = cur_loc;
    cur_loc = loc;
    return loc;
}