| // # RUN: mlir-opt -test-print-invalid %s | FileCheck %s |
| // # RUN: mlir-opt -test-print-invalid %s --mlir-print-assume-verified | FileCheck %s --check-prefix=ASSUME-VERIFIED |
| |
| // The pass creates some ops and prints them to stdout, the input is just an |
| // empty module. |
| module {} |
| |
| // The operation is invalid because the body does not have a terminator, print |
| // the generic form. |
| // CHECK: Invalid operation: |
| // CHECK-NEXT: "func.func"() <{function_type = () -> (), sym_name = "test"}> ({ |
| // CHECK-NEXT: ^bb0: |
| // CHECK-NEXT: }) |
| |
| // The operation is valid because the body has a terminator, print the custom |
| // form. |
| // CHECK: Valid operation: |
| // CHECK-NEXT: func @test() { |
| // CHECK-NEXT: return |
| // CHECK-NEXT: } |
| |
| // With --mlir-print-assume-verified the custom form is printed in both cases. |
| // This works in this particular case, but may crash in general. |
| |
| // ASSUME-VERIFIED: Invalid operation: |
| // ASSUME-VERIFIED-NEXT: func @test() { |
| // ASSUME-VERIFIED-NEXT: } |
| |
| // ASSUME-VERIFIED: Valid operation: |
| // ASSUME-VERIFIED-NEXT: func @test() { |
| // ASSUME-VERIFIED-NEXT: return |
| // ASSUME-VERIFIED-NEXT: } |