O'Sullivan reaches semis