message: Improve performance of HloValue::SetPositionsAndComputeUses
  Previously it called HloInstruction::OperandIndices what constructed a
  std::vector with the indices what was unnecessary as we can iterate over
  the list of operands directly instead.
diff: @@ -177,12 +177,16 @@ void HloValue::SetPositionsAndComputeUses(
  // Build vector of HloUses for the value.
  for (const HloPosition& position : positions_) {
  for (HloInstruction* user : position.instruction->users()) {
  - for (int64 operand_number : user->OperandIndices(position.instruction)) {
  + for (int64 i = 0; i < user->operand_count(); ++i) {
  + if (user->operand(i) != position.instruction) {
  + continue;
  + }
  +
  // Root instructions of computations are considered to be uses whether
  // or not the root instruction itself actually uses the value.
  - if (MayUseOperandValue(operand_number, position.index, user) ||
  + if (MayUseOperandValue(i, position.index, user) ||
  ContainsKey(root_positions, user)) {
  - HloUse new_use{user, operand_number, position.index};
  + HloUse new_use{user, i, position.index};
  // The new use must not already exist in uses_.
  for (const HloUse& use : uses_) {
  