Andrii Nakryiko wrote: > Jump history updating and state equivalence checks are conceptually > independent, so move push_jmp_history() out of is_state_visited(). Also > make a decision whether to perform state equivalence checks or not one > layer higher in do_check(), keeping is_state_visited() unconditionally > performing state checks. > > push_jmp_history() should be performed after state checks. There is just > one small non-uniformity. When is_state_visited() finds already > validated equivalent state, it propagates precision marks to current > state's parent chain. For this to work correctly, jump history has to be > updated, so is_state_visited() is doing that internally. > > But if no equivalent verified state is found, jump history has to be > updated in a newly cloned child state, so is_jmp_point() > + push_jmp_history() is performed after is_state_visited() exited with > zero result, which means "proceed with validation". > > This change has no functional changes. It's not strictly necessary, but > feels right to decouple these two processes. > > Signed-off-by: Andrii Nakryiko <andrii@xxxxxxxxxx> > --- Acked-by: John Fastabend <john.fastabend@xxxxxxxxx>