message: In IR, distinguish between inner solvers using an initial guess and ones that do not
diff: @@ -92,6 +92,7 @@ void Ir<ValueType>::apply_impl(const LinOp *b, LinOp *x) const
  break;
  }
  + if (solver_->apply_uses_initial_guess()) {
  // Use the inner solver to solve
  // A * inner_solution = residual
  // with residual as initial guess.
  @@ -105,6 +106,15 @@ void Ir<ValueType>::apply_impl(const LinOp *b, LinOp *x) const
  residual->copy_from(dense_b);
  system_matrix_->apply(lend(neg_one_op), dense_x, lend(one_op),
  lend(residual));
  + } else {
  + // x = x + A \ residual
  + solver_->apply(lend(one_op), lend(residual), lend(one_op), dense_x);
  +
  + // residual = b - A * x
  + residual->copy_from(dense_b);
  + system_matrix_->apply(lend(neg_one_op), dense_x, lend(one_op),
  + lend(residual));
  + }
  }
  }
  