Issue 61442
Summary [MLIR] bad CHECKs generated with `generate-test-checks.py`
Labels mlir
Assignees
Reporter bmahjour
    ```
> cat tmp.mlir
module {
func.func @test1() {
  %5 = dialect.op {
 value=0
  }
  %6 = dialect.use %5
}

func.func @test2() {
 %5 = dialect.op { value=0 }
  %6 = dialect.use %5
}

func.func @test3() {
  %5 = dialect.op
  {
    value=0
  }
  %6 = dialect.use %5
}
}

> cat tmp.mlir | ~/workspaces/llvm-project/mlir/utils/generate-test-checks.py
// NOTE: Assertions have been autogenerated by utils/generate-test-checks.py

// The script is designed to make adding checks to
// a test case fast, it is *not* designed to be authoritative
// about what constitutes a good test! The CHECK should be
// minimized and named to reflect the test intent.



// CHECK-LABEL: func.func @test1() {
// CHECK: %[[VAL_0:.*]] = dialect.op {
// CHECK:          value=0
// CHECK: }
// CHECK:         %[[VAL_1:.*]] = dialect.use %[[VAL_2:.*]]
// CHECK:       }

// CHECK-LABEL: func.func @test2() {
// CHECK: %[[VAL_0:.*]] = dialect.op { value=0 }
// CHECK:         %[[VAL_1:.*]] = dialect.use %[[VAL_0]]
// CHECK:       }

// CHECK-LABEL: func.func @test3() {
// CHECK:         %[[VAL_0:.*]] = dialect.op
// CHECK: {
// CHECK:           value=0
// CHECK:         }
// CHECK: %[[VAL_1:.*]] = dialect.use %[[VAL_0]]
// CHECK:       }
```

In `test1`, instead of matching the value produced by `dialect.op` (ie. `VAL_0`), a new regexp variable (ie `VAL_2`) is introduced. This could cause false passes even if the result of the first op is not used as the operand of `dialect.use`.

Notice `test2` and `test3` are fine, so the issue seems to be related to SSA values produced by an operation with a line break after '{'.
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to