Some questions regarding deadcode analysis

The above is a piece of dead code analysis code.I don’t quite understand why this is written here

      const auto *callsites = getOrCreateFor<PredecessorState>(
          getProgramPointAfter(op), getProgramPointAfter(callable));

In my view, getProgramPointAfter(op) and getProgramPointAfter(callable) are one and the same.

Another point is why the location of callsites is obtained through getProgramPointAfter(op) or getProgramPointAfter(callable).:thinking:

func.func @func {
   
  //  Is this the location obtained by getProgramPointAfter(callable)?
 
  entry block:
}

// Is the position obtained by getProgramPointAfter(callable) still here?

I hope someone can help me. Thank you very much.:smiling_face_with_three_hearts: :face_blowing_a_kiss: