]> The Tcpdump Group git mirrors - libpcap/commitdiff
Optimize out "jset #0" (always false) and "jset #ffffffff" (always true).
authorfenner <fenner>
Mon, 12 Nov 2001 22:02:50 +0000 (22:02 +0000)
committerfenner <fenner>
Mon, 12 Nov 2001 22:02:50 +0000 (22:02 +0000)
optimize.c

index eddc0b0cd9be0f2022b980edc5a1e92b4ab684d3..569834079092653addc06d12b66deb9d685601ff 100644 (file)
@@ -22,7 +22,7 @@
  */
 #ifndef lint
 static const char rcsid[] =
-    "@(#) $Header: /tcpdump/master/libpcap/optimize.c,v 1.69 2001-11-12 21:57:06 fenner Exp $ (LBL)";
+    "@(#) $Header: /tcpdump/master/libpcap/optimize.c,v 1.70 2001-11-12 22:02:50 fenner Exp $ (LBL)";
 #endif
 
 #ifdef HAVE_CONFIG_H
@@ -823,6 +823,16 @@ opt_peep(b)
                done = 0;
                opt_not(b);
        }
+       /*
+        * jset #0        ->   never
+        * jset #ffffffff ->   always
+        */
+       if (b->s.code == (BPF_JMP|BPF_K|BPF_JSET)) {
+               if (b->s.k == 0)
+                       JT(b) = JF(b);
+               if (b->s.k == 0xffffffff)
+                       JF(b) = JT(b);
+       }
        /*
         * If the accumulator is a known constant, we can compute the
         * comparison result.