diff --git a/utils/lit/lit/TestRunner.py b/utils/lit/lit/TestRunner.py
index 148beba0ca7..a7de2b79f8f 100644
--- a/utils/lit/lit/TestRunner.py
+++ b/utils/lit/lit/TestRunner.py
@@ -353,6 +353,8 @@ def isExpectedFail(xfails, xtargets, target_triple):
 
     return True
 
+import re
+
 def parseIntegratedTestScript(test):
     """parseIntegratedTestScript - Scan an LLVM/Clang style integrated test
     script and extract the lines to 'RUN' as well as 'XFAIL' and 'XTARGET'
@@ -387,20 +389,11 @@ def parseIntegratedTestScript(test):
     xtargets = []
     ignoredAny = False
     for ln in open(sourcepath):
-        if 'IF(' in ln:
-            # Required syntax here is IF(condition(value)):
-            index = ln.index('IF(')
-            ln = ln[index+3:]
-            index = ln.index('(')
-            if index is -1:
-                return (Test.UNRESOLVED, "ill-formed IF at '"+ln[:10]+"'")
-            condition = ln[:index]
-            ln = ln[index+1:]
-            index = ln.index(')')
-            if index is -1 or ln[index:index+3] != ')):':
-                return (Test.UNRESOLVED, "ill-formed IF at '"+ln[:10]+"'")
-            value = ln[:index]
-            ln = ln[index+3:]
+        conditional = re.search('IF\((.+?)\((.+?)\)\):', ln)
+        if conditional:
+            ln = ln[conditional.end():]
+            condition = conditional.group(1)
+            value = conditional.group(2)
 
             # Actually test the condition.
             if condition not in test.config.conditions: