| // RUN: mlir-opt -allow-unregistered-dialect %s -split-input-file -mlir-print-debuginfo -mlir-print-local-scope | FileCheck %s |
| |
| // CHECK: module { |
| module { |
| } |
| |
| // ----- |
| |
| // CHECK: module attributes {foo.attr = true} { |
| module attributes {foo.attr = true} { |
| } |
| |
| // ----- |
| |
| // CHECK: module { |
| module { |
| // CHECK-NEXT: "foo.result_op"() : () -> i32 |
| %result = "foo.result_op"() : () -> i32 |
| } |
| |
| // ----- |
| |
| // Check that a top-level module is always created, with location info. |
| // CHECK: module { |
| // CHECK-NEXT: } loc({{.*}}module-op.mlir{{.*}}) |
| |
| // ----- |
| |
| // Check that the top-level module can be defined via a single module operation. |
| // CHECK: module { |
| // CHECK-NOT: module { |
| module { |
| } |
| |
| // ----- |
| |
| // Check that the implicit top-level module is also a name scope for SSA |
| // values. This should not crash. |
| // CHECK: module { |
| // CHECK: %{{.*}} = "op" |
| // CHECK: } |
| %0 = "op"() : () -> i32 |
| |
| // ----- |
| |
| // CHECK-LABEL: module @foo |
| // CHECK-NOT: attributes |
| module @foo { |
| // CHECK: module |
| module { |
| // CHECK: module @bar attributes |
| module @bar attributes {foo.bar} { |
| } |
| } |
| } |
| |
| // ----- |
| |
| // expected-error@below {{expects at most one data layout attribute}} |
| // expected-note@below {{'test.another_attribute' is a data layout attribute}} |
| // expected-note@below {{'test.random_attribute' is a data layout attribute}} |
| module attributes { test.random_attribute = #dlti.dl_spec<>, |
| test.another_attribute = #dlti.dl_spec<>} { |
| } |