From 4f5dc0ac1e08ecc3a2c6eb0e2a8ff526de972b4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A1n=20Tomko?= Date: Mon, 1 Aug 2016 10:54:47 -0700 Subject: useless-if-before-free: skip non-matching lines early * build-aux/useless-if-before-free: First match each line with the simple/quick /\bif\b/ and reject if there is no match. This often saves the cost of the much more involved regular expression. For libvirt, this decreases the cost from 1.44s to 1.02s. --- build-aux/useless-if-before-free | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'build-aux/useless-if-before-free') diff --git a/build-aux/useless-if-before-free b/build-aux/useless-if-before-free index 1899b1ffd8..d7a8c0dc61 100755 --- a/build-aux/useless-if-before-free +++ b/build-aux/useless-if-before-free @@ -4,7 +4,7 @@ eval '(exit $?0)' && eval 'exec perl -wST "$0" "$@"' # Detect instances of "if (p) free (p);". # Likewise "if (p != 0)", "if (0 != p)", or with NULL; and with braces. -my $VERSION = '2016-01-12 23:13'; # UTC +my $VERSION = '2016-08-01 17:47'; # UTC # The definition above must lie within the first 8 lines in order # for the Emacs time-stamp write hook (at end) to update it. # If you change this file with Emacs, please let the write hook @@ -129,6 +129,9 @@ sub is_NULL ($) $err = EXIT_ERROR, next; while (defined (my $line = )) { + # Skip non-matching lines early to save time + $line =~ /\bif\b/ + or next; while ($line =~ /\b(if\s*\(\s*([^)]+?)(?:\s*!=\s*([^)]+?))?\s*\) # 1 2 3 -- cgit v1.2.1