Saina, who was the top seed in the tournament, lost 21-13, 12-21, 18-21 in 53 minutes.
The Hyderabadi shuttler started the match on the front foot, never giving her opponent even a sniff of a chance in the opening game. However, her fortunes changed dramatically in the next game in which she won just two consecutive points.
It was neck and neck in the early part of the second game but after the score reached 6-6, Gu seemed to up the ante and never relinquished the lead thereafter.
The third game was an up and down battle with both players trading the lead. Gu, though, trailing 13-15 took the initiative winning six points in a row to take the score to 19-15 in her favour.
Saina made a comeback of her own reducing the deficit to just one (18-19) but the Singaporean held her nerve to win her final two points and book a place in the semis where she will face seventh seeded Thai Busanan Ongbumrungpan.