Use set_transformed_and_mark() instead of mark_irn_visited() + be_set_transformed_node().