[Mlir-commits] [mlir] [utils] Use stricter SSA regexp for CHECK-SAME. (PR #128083)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Thu Feb 20 14:58:59 PST 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-mlir
Author: Slava Zakharin (vzakhari)
<details>
<summary>Changes</summary>
When CHECK-SAME checks are split across multiple lines,
the '.*' regexp for the SSA variable name may cause problems, e.g.:
```
// CHECK_LABEL: func.func @<!-- -->whatever(
// CHECK-SAME: %[[VAL_0:.*]]: i32,
// CHECK-SAME: %[[VAL_1:.*]]: i32,
// CHECK-SAME: %[[VAL_2:.*]]: i64)
```
This will not work for `func.func @<!-- -->whatever(%0: i32, %1: i32, %2: i64)`,
because VAL_0 will match to `0: i32, %1`.
---
Full diff: https://github.com/llvm/llvm-project/pull/128083.diff
1 Files Affected:
- (modified) mlir/utils/generate-test-checks.py (+10-3)
``````````diff
diff --git a/mlir/utils/generate-test-checks.py b/mlir/utils/generate-test-checks.py
index 8faa425beace1..80069737be97d 100755
--- a/mlir/utils/generate-test-checks.py
+++ b/mlir/utils/generate-test-checks.py
@@ -159,7 +159,7 @@ def get_num_ssa_results(input_line):
# Process a line of input that has been split at each SSA identifier '%'.
-def process_line(line_chunks, variable_namer):
+def process_line(line_chunks, variable_namer, strict=False):
output_line = ""
# Process the rest that contained an SSA value name.
@@ -180,7 +180,14 @@ def process_line(line_chunks, variable_namer):
else:
# Otherwise, generate a new variable.
variable = variable_namer.generate_name(ssa_name)
- output_line += "%[[" + variable + ":.*]]"
+ if strict:
+ # Use stricter regexp for the variable name, if requested.
+ # Greedy matching may cause issues with the generic '.*'
+ # regexp when the checks are split across several
+ # lines (e.g. for CHECK-SAME).
+ output_line += "%[[" + variable + ":" + SSA_RE_STR + "]]"
+ else:
+ output_line += "%[[" + variable + ":.*]]"
# Append the non named group.
output_line += chunk[len(ssa_name) :]
@@ -390,7 +397,7 @@ def main():
output_line += " " * len(ssa_split[0])
# Process the rest of the line.
- output_line += process_line([argument], variable_namer)
+ output_line += process_line([argument], variable_namer, strict=True)
# Append the output line.
output_segments[-1].append(output_line)
``````````
</details>
https://github.com/llvm/llvm-project/pull/128083
More information about the Mlir-commits
mailing list