Optimise Regexp::StarPlusOrQuest() very slightly.

Change-Id: I1ead691eef95d9f6fdb50777c1cd57df5b698465
Reviewed-on: https://code-review.googlesource.com/11210
Reviewed-by: Paul Wankadia <junyer@google.com>
diff --git a/re2/regexp.cc b/re2/regexp.cc
index 8c5fe59..712f92d 100644
--- a/re2/regexp.cc
+++ b/re2/regexp.cc
@@ -196,12 +196,16 @@
     return sub;
 
   // Squash *+, *?, +*, +?, ?* and ?+. They all squash to *, so because
-  // op is Star/Plus/Quest, we just have to check that sub->op() is too,
-  // then rewrite sub.
+  // op is Star/Plus/Quest, we just have to check that sub->op() is too.
   if ((sub->op() == kRegexpStar ||
        sub->op() == kRegexpPlus ||
        sub->op() == kRegexpQuest) &&
       flags == sub->parse_flags()) {
+    // If sub is Star, no need to rewrite it.
+    if (sub->op() == kRegexpStar)
+      return sub;
+
+    // Rewrite sub to Star.
     Regexp* re = new Regexp(kRegexpStar, flags);
     re->AllocSub(1);
     re->sub()[0] = sub->sub()[0]->Incref();