summaryrefslogtreecommitdiffstats
path: root/llvm/utils
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/utils')
-rw-r--r--llvm/utils/UpdateTestChecks/common.py25
-rwxr-xr-xllvm/utils/update_analyze_test_checks.py1
-rwxr-xr-xllvm/utils/update_cc_test_checks.py1
-rwxr-xr-xllvm/utils/update_llc_test_checks.py1
-rwxr-xr-xllvm/utils/update_mca_test_checks.py1
-rwxr-xr-xllvm/utils/update_mir_test_checks.py1
-rwxr-xr-xllvm/utils/update_test_checks.py2
7 files changed, 31 insertions, 1 deletions
diff --git a/llvm/utils/UpdateTestChecks/common.py b/llvm/utils/UpdateTestChecks/common.py
index 0c78f7bee2d..336ccb9ba77 100644
--- a/llvm/utils/UpdateTestChecks/common.py
+++ b/llvm/utils/UpdateTestChecks/common.py
@@ -47,6 +47,7 @@ def invoke_tool(exe, cmd_args, ir):
RUN_LINE_RE = re.compile('^\s*[;#]\s*RUN:\s*(.*)$')
CHECK_PREFIX_RE = re.compile('--?check-prefix(?:es)?[= ](\S+)')
+PREFIX_RE = re.compile('^[a-zA-Z0-9_-]+$')
CHECK_RE = re.compile(r'^\s*[;#]\s*([^:]+?)(?:-NEXT|-NOT|-DAG|-LABEL)?:')
OPT_FUNCTION_RE = re.compile(
@@ -264,3 +265,27 @@ def add_ir_checks(output_lines, comment_marker, prefix_list, func_dict, func_nam
def add_analyze_checks(output_lines, comment_marker, prefix_list, func_dict, func_name):
check_label_format = '{} %s-LABEL: \'%s\''.format(comment_marker)
add_checks(output_lines, comment_marker, prefix_list, func_dict, func_name, check_label_format, False, True)
+
+
+def check_prefix(prefix):
+ if not PREFIX_RE.match(prefix):
+ hint = ""
+ if ',' in prefix:
+ hint = " Did you mean '--check-prefixes=" + prefix + "'?"
+ print(("WARNING: Supplied prefix '%s' is invalid. Prefix must contain only alphanumeric characters, hyphens and underscores." + hint) %
+ (prefix), file=sys.stderr)
+
+
+def verify_filecheck_prefixes(fc_cmd):
+ fc_cmd_parts = fc_cmd.split()
+ for part in fc_cmd_parts:
+ if "check-prefix=" in part:
+ prefix = part.split('=', 1)[1]
+ check_prefix(prefix)
+ elif "check-prefixes=" in part:
+ prefixes = part.split('=', 1)[1].split(',')
+ for prefix in prefixes:
+ check_prefix(prefix)
+ if prefixes.count(prefix) > 1:
+ print("WARNING: Supplied prefix '%s' is not unique in the prefix list." %
+ (prefix,), file=sys.stderr)
diff --git a/llvm/utils/update_analyze_test_checks.py b/llvm/utils/update_analyze_test_checks.py
index df09108937c..6c75388b670 100755
--- a/llvm/utils/update_analyze_test_checks.py
+++ b/llvm/utils/update_analyze_test_checks.py
@@ -92,6 +92,7 @@ def main():
prefix_list = []
for l in run_lines:
(tool_cmd, filecheck_cmd) = tuple([cmd.strip() for cmd in l.split('|', 1)])
+ common.verify_filecheck_prefixes(filecheck_cmd)
if not tool_cmd.startswith(opt_basename + ' '):
print('WARNING: Skipping non-%s RUN line: %s' % (opt_basename, l), file=sys.stderr)
diff --git a/llvm/utils/update_cc_test_checks.py b/llvm/utils/update_cc_test_checks.py
index 865ebf7ff57..205b57698da 100755
--- a/llvm/utils/update_cc_test_checks.py
+++ b/llvm/utils/update_cc_test_checks.py
@@ -168,6 +168,7 @@ def main():
# Extract -check-prefix in FileCheck args
filecheck_cmd = commands[-1]
+ common.verify_filecheck_prefixes(filecheck_cmd)
if not filecheck_cmd.startswith('FileCheck '):
print('WARNING: Skipping non-FileChecked RUN line: ' + l, file=sys.stderr)
continue
diff --git a/llvm/utils/update_llc_test_checks.py b/llvm/utils/update_llc_test_checks.py
index 0936a449c24..9f74a2e1899 100755
--- a/llvm/utils/update_llc_test_checks.py
+++ b/llvm/utils/update_llc_test_checks.py
@@ -89,6 +89,7 @@ def main():
filecheck_cmd = ''
if len(commands) > 1:
filecheck_cmd = commands[1]
+ common.verify_filecheck_prefixes(filecheck_cmd)
if not llc_cmd.startswith('llc '):
print('WARNING: Skipping non-llc RUN line: ' + l, file=sys.stderr)
continue
diff --git a/llvm/utils/update_mca_test_checks.py b/llvm/utils/update_mca_test_checks.py
index 87ac19b39ae..bbeca1d557b 100755
--- a/llvm/utils/update_mca_test_checks.py
+++ b/llvm/utils/update_mca_test_checks.py
@@ -116,6 +116,7 @@ def _get_run_infos(run_lines, args):
_warn('could not split tool and filecheck commands: {}'.format(run_line))
continue
+ common.verify_filecheck_prefixes(filecheck_cmd)
tool_basename = os.path.splitext(os.path.basename(args.llvm_mca_binary))[0]
if not tool_cmd.startswith(tool_basename + ' '):
diff --git a/llvm/utils/update_mir_test_checks.py b/llvm/utils/update_mir_test_checks.py
index b42a38bd55a..7a54cc3fd62 100755
--- a/llvm/utils/update_mir_test_checks.py
+++ b/llvm/utils/update_mir_test_checks.py
@@ -122,6 +122,7 @@ def build_run_list(test, run_lines, verbose=False):
commands = [cmd.strip() for cmd in l.split('|', 1)]
llc_cmd = commands[0]
filecheck_cmd = commands[1] if len(commands) > 1 else ''
+ common.verify_filecheck_prefixes(filecheck_cmd)
if not llc_cmd.startswith('llc '):
warn('Skipping non-llc RUN line: {}'.format(l), test_file=test)
diff --git a/llvm/utils/update_test_checks.py b/llvm/utils/update_test_checks.py
index 92ce0535a10..e9f5e6c333b 100755
--- a/llvm/utils/update_test_checks.py
+++ b/llvm/utils/update_test_checks.py
@@ -103,7 +103,7 @@ def main():
prefix_list = []
for l in run_lines:
(tool_cmd, filecheck_cmd) = tuple([cmd.strip() for cmd in l.split('|', 1)])
-
+ common.verify_filecheck_prefixes(filecheck_cmd)
if not tool_cmd.startswith(opt_basename + ' '):
print('WARNING: Skipping non-%s RUN line: %s' % (opt_basename, l), file=sys.stderr)
continue
OpenPOWER on IntegriCloud