diff --git a/llvm/utils/UpdateTestChecks/common.py b/llvm/utils/UpdateTestChecks/common.py --- a/llvm/utils/UpdateTestChecks/common.py +++ b/llvm/utils/UpdateTestChecks/common.py @@ -643,14 +643,12 @@ # TODO: We should also derive check lines for global, debug, loop declarations, etc.. class NamelessValue: - def __init__(self, check_prefix, check_key, ir_prefix, global_ir_prefix, global_ir_prefix_regexp, - ir_regexp, global_ir_rhs_regexp, is_before_functions, *, - is_number=False, replace_number_with_counter=False): + def __init__(self, check_prefix, check_key, ir_prefix, ir_regexp, + global_ir_rhs_regexp, *, is_before_functions=False, is_number=False, + replace_number_with_counter=False): self.check_prefix = check_prefix self.check_key = check_key self.ir_prefix = ir_prefix - self.global_ir_prefix = global_ir_prefix - self.global_ir_prefix_regexp = global_ir_prefix_regexp self.ir_regexp = ir_regexp self.global_ir_rhs_regexp = global_ir_rhs_regexp self.is_before_functions = is_before_functions @@ -666,23 +664,19 @@ # Return true if this kind of IR value is "global", basically if it matches '#{{.*}}'. def is_global_scope_ir_value_match(self, match): - return self.global_ir_prefix is not None + return self.global_ir_rhs_regexp is not None # Return the IR prefix and check prefix we use for this kind or IR value, # e.g., (%, TMP) for locals. def get_ir_prefix_from_ir_value_match(self, match): - if self.ir_prefix and match.group(0).strip().startswith(self.ir_prefix): - return self.ir_prefix, self.check_prefix - return self.global_ir_prefix, self.check_prefix + return self.ir_prefix, self.check_prefix # Return the IR regexp we use for this kind or IR value, e.g., [\w.-]+? for locals def get_ir_regex_from_ir_value_re_match(self, match): # for backwards compatibility we check locals with '.*' if self.is_local_def_ir_value_match(match): return '.*' - if self.ir_prefix and match.group(0).strip().startswith(self.ir_prefix): - return self.ir_regexp - return self.global_ir_prefix_regexp + return self.ir_regexp # Create a FileCheck variable name based on an IR name. def get_value_name(self, var: str, check_prefix: str): @@ -735,28 +729,27 @@ # Description of the different "unnamed" values we match in the IR, e.g., # (local) ssa values, (debug) metadata, etc. ir_nameless_values = [ - NamelessValue(r'TMP' , '%' , r'%' , None , None , r'[\w$.-]+?' , None , False) , - NamelessValue(r'ATTR' , '#' , r'#' , None , None , r'[0-9]+' , None , False) , - NamelessValue(r'ATTR' , '#' , None , r'attributes #' , r'[0-9]+' , None , r'{[^}]*}' , False) , - NamelessValue(r'GLOB' , '@' , r'@' , None , None , r'[0-9]+' , None , False) , - NamelessValue(r'GLOB' , '@' , None , r'@' , r'[a-zA-Z0-9_$"\\.-]+' , None , r'.+' , True) , - NamelessValue(r'DBG' , '!' , r'!dbg ' , None , None , r'![0-9]+' , None , False) , - NamelessValue(r'DIASSIGNID' , '!' , r'!DIAssignID ' , None , None , r'![0-9]+' , None , False) , - NamelessValue(r'PROF' , '!' , r'!prof ' , None , None , r'![0-9]+' , None , False) , - NamelessValue(r'TBAA' , '!' , r'!tbaa ' , None , None , r'![0-9]+' , None , False) , - NamelessValue(r'TBAA_STRUCT', '!' , r'!tbaa.struct ' , None , None , r'![0-9]+' , None , False) , - NamelessValue(r'RNG' , '!' , r'!range ' , None , None , r'![0-9]+' , None , False) , - NamelessValue(r'LOOP' , '!' , r'!llvm.loop ' , None , None , r'![0-9]+' , None , False) , - NamelessValue(r'META' , '!' , r'metadata ' , None , None , r'![0-9]+' , None , False) , - NamelessValue(r'META' , '!' , None , r'' , r'![0-9]+' , None , r'(?:distinct |)!.*' , False) , - NamelessValue(r'ACC_GRP' , '!' , r'!llvm.access.group ' , None , None , r'![0-9]+' , None , False) , + # check_prefix check_key ir_prefix ir_regexp global_ir_rhs_regexp + NamelessValue(r'TMP' , '%' , r'%' , r'[\w$.-]+?' , None ) , + NamelessValue(r'ATTR' , '#' , r'#' , r'[0-9]+' , None ) , + NamelessValue(r'ATTR' , '#' , r'attributes #' , r'[0-9]+' , r'{[^}]*}' ) , + NamelessValue(r'GLOB' , '@' , r'@' , r'[0-9]+' , None ) , + NamelessValue(r'GLOB' , '@' , r'@' , r'[a-zA-Z0-9_$"\\.-]+' , r'.+' , is_before_functions=True) , + NamelessValue(r'DBG' , '!' , r'!dbg ' , r'![0-9]+' , None ) , + NamelessValue(r'DIASSIGNID' , '!' , r'!DIAssignID ' , r'![0-9]+' , None ) , + NamelessValue(r'PROF' , '!' , r'!prof ' , r'![0-9]+' , None ) , + NamelessValue(r'TBAA' , '!' , r'!tbaa ' , r'![0-9]+' , None ) , + NamelessValue(r'TBAA_STRUCT', '!' , r'!tbaa.struct ' , r'![0-9]+' , None ) , + NamelessValue(r'RNG' , '!' , r'!range ' , r'![0-9]+' , None ) , + NamelessValue(r'LOOP' , '!' , r'!llvm.loop ' , r'![0-9]+' , None ) , + NamelessValue(r'META' , '!' , r'metadata ' , r'![0-9]+' , None ) , + NamelessValue(r'META' , '!' , r'' , r'![0-9]+' , r'(?:distinct |)!.*' ) , + NamelessValue(r'ACC_GRP' , '!' , r'!llvm.access.group ' , r'![0-9]+' , None ) , ] asm_nameless_values = [ - NamelessValue(r'MCINST', 'Inst#', None, '\s]|\Z)' ASM_VALUE_RE = re.compile(r'((?:#|//)\s*)' + '(' + ASM_VALUE_REGEXP_STRING + ')' + ASM_VALUE_REGEXP_SUFFIX) @@ -1045,10 +1032,10 @@ def build_global_values_dictionary(glob_val_dict, raw_tool_output, prefixes): for nameless_value in itertools.chain(ir_nameless_values, asm_nameless_values): - if nameless_value.global_ir_prefix is None: + if nameless_value.global_ir_rhs_regexp is None: continue - lhs_re_str = nameless_value.global_ir_prefix + nameless_value.global_ir_prefix_regexp + lhs_re_str = nameless_value.ir_prefix + nameless_value.ir_regexp rhs_re_str = nameless_value.global_ir_rhs_regexp global_ir_value_re_str = r'^' + lhs_re_str + r'\s=\s' + rhs_re_str + r'$' @@ -1073,7 +1060,7 @@ def add_global_checks(glob_val_dict, comment_marker, prefix_list, output_lines, global_vars_seen_dict, is_analyze, is_before_functions): printed_prefixes = set() for nameless_value in ir_nameless_values: - if nameless_value.global_ir_prefix is None: + if nameless_value.global_ir_rhs_regexp is None: continue if nameless_value.is_before_functions != is_before_functions: continue