]> Savannah Git Hosting - gnulib.git/commitdiff
dfa: pacify Oracle Solaris Studio 12.6
authorPaul Eggert <eggert@cs.ucla.edu>
Sun, 19 Mar 2023 04:53:12 +0000 (21:53 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Sun, 19 Mar 2023 04:54:42 +0000 (21:54 -0700)
Without this patch, the compiler complains “statement not reached”.
* lib/dfa.c (lex): Refactor to omit unreachable statement.

ChangeLog
lib/dfa.c

index 00f18855bd5275f1c9a24482a96ef7f7ef8fcba9..7d7f85a54b75c32fdfe16f1d2849061cb9253a2a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2023-03-18  Paul Eggert  <eggert@cs.ucla.edu>
 
+       dfa: pacify Oracle Solaris Studio 12.6
+       Without this patch, the compiler complains “statement not reached”.
+       * lib/dfa.c (lex): Refactor to omit unreachable statement.
+
        Update MODULES.html.sh
        * MODULES.html.sh: Add some recently-added modules.
        This is by no means a complete update.  I needed to point
index 20502a802facba5e87cd93078618e8ac395d562c..d54aab40fd8ef5b3ce3201a50f96da87c9a63de5 100644 (file)
--- a/lib/dfa.c
+++ b/lib/dfa.c
@@ -1202,8 +1202,13 @@ lex (struct dfa *dfa)
      On the plus side, this avoids having a duplicate of the
      main switch inside the backslash case.  On the minus side,
      it means that just about every case tests the backslash flag.  */
-  for (int i = 0; i < 2; ++i)
+  for (int i = 0; ; i++)
     {
+      /* This loop should consume at most a backslash and some other
+         character.  */
+      if (2 <= i)
+        abort ();
+
       if (! dfa->lex.left)
         return dfa->lex.lasttok = END;
       int c = fetch_wc (dfa);
@@ -1591,11 +1596,6 @@ lex (struct dfa *dfa)
           return dfa->lex.lasttok = c;
         }
     }
-
-  /* The above loop should consume at most a backslash
-     and some other character.  */
-  abort ();
-  return END;                   /* keeps pedantic compilers happy.  */
 }
 
 static void