Speed up warn.py about 30x by precompiling all the regular expressions.
diff --git a/tools/warn.py b/tools/warn.py
index b379849..6fea20a 100755
--- a/tools/warn.py
+++ b/tools/warn.py
@@ -460,8 +460,8 @@
 
 def classifywarning(line):
     for i in warnpatterns:
-        for pat in i['patterns']:
-            if re.match(pat, line):
+        for cpat in i['compiledpatterns']:
+            if cpat.match(line):
                 i['members'].append(line)
                 return
     else:
@@ -470,7 +470,12 @@
         # 2 or more concurrent compiles
         pass
 
-
+# precompiling every pattern speeds up parsing by about 30x
+def compilepatterns():
+    for i in warnpatterns:
+        i['compiledpatterns'] = []
+        for pat in i['patterns']:
+            i['compiledpatterns'].append(re.compile(pat))
 
 infile = open(sys.argv[1], 'r')
 warnings = []
@@ -481,6 +486,7 @@
 linecounter = 0
 
 warningpattern = re.compile('.* warning:.*')
+compilepatterns()
 
 # read the log file and classify all the warnings
 lastmatchedline = ''
@@ -515,7 +521,3 @@
 dumpseverity(severity.UNKNOWN)
 dumpfixed()
 
-
-
-
-