Compute first byte for forward Progs only.

Change-Id: I1549b85dc830dd1bcee8281516594ad7cb0f4fe0
Reviewed-on: https://code-review.googlesource.com/c/re2/+/56471
Reviewed-by: Paul Wankadia <junyer@google.com>
diff --git a/re2/compile.cc b/re2/compile.cc
index 2f64a80..7c1951e 100644
--- a/re2/compile.cc
+++ b/re2/compile.cc
@@ -1187,12 +1187,14 @@
   prog_->Flatten();
   prog_->ComputeByteMap();
 
-  // Compute first byte.
-  std::string prefix;
-  bool prefix_foldcase;
-  if (re->RequiredPrefixUnanchored(&prefix, &prefix_foldcase) &&
-      !prefix_foldcase)
-    prog_->set_first_byte(prefix[0]);
+  if (!prog_->reversed()) {
+    // Compute first byte.
+    std::string prefix;
+    bool prefix_foldcase;
+    if (re->RequiredPrefixUnanchored(&prefix, &prefix_foldcase) &&
+        !prefix_foldcase)
+      prog_->set_first_byte(prefix[0]);
+  }
 
   // Record remaining memory for DFA.
   if (max_mem_ <= 0) {