brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.3 KiB · ba17cf9 Raw
113 lines · plain
1// RUN: mlir-opt -allow-unregistered-dialect -mlir-print-local-scope %s -test-symbol-rauw -split-input-file | FileCheck %s2 3// Symbol references to the module itself don't affect uses of symbols within4// its table.5// CHECK: module6// CHECK-SAME: @symbol_foo7module attributes {sym.outside_use = @symbol_foo } {8  // CHECK: func private @replaced_foo9  func.func private @symbol_foo() attributes {sym.new_name = "replaced_foo" }10 11  // CHECK: func @symbol_bar12  // CHECK: @replaced_foo13  func.func @symbol_bar() attributes {sym.use = @symbol_foo} {14    // CHECK: foo.op15    // CHECK-SAME: non_symbol_attr,16    // CHECK-SAME: use = [{nested_symbol = [@replaced_foo], other_use = @symbol_bar, z_use = @replaced_foo}],17    // CHECK-SAME: z_non_symbol_attr_318    "foo.op"() {19      non_symbol_attr,20      use = [{nested_symbol = [@symbol_foo], other_use = @symbol_bar, z_use = @symbol_foo}],21      z_non_symbol_attr_322    } : () -> ()23  }24 25  // CHECK: module attributes {test.reference = @replaced_foo}26  module attributes {test.reference = @symbol_foo} {27    // CHECK: foo.op28    // CHECK-SAME: @symbol_foo29    "foo.op"() {test.nested_reference = @symbol_foo} : () -> ()30  }31}32 33// -----34 35// Check the support for nested references.36 37// CHECK: module38module {39  // CHECK: module @module_a40  module @module_a {41    // CHECK: func nested @replaced_foo42    func.func nested @foo() attributes {sym.new_name = "replaced_foo" }43  }44 45  // CHECK: module @replaced_module_b46  module @module_b attributes {sym.new_name = "replaced_module_b"} {47    // CHECK: module @replaced_module_c48    module @module_c attributes {sym.new_name = "replaced_module_c"} {49      // CHECK: func nested @replaced_foo50      func.func nested @foo() attributes {sym.new_name = "replaced_foo" }51    }52  }53 54  // CHECK: func @symbol_bar55  func.func @symbol_bar() {56    // CHECK: foo.op57    // CHECK-SAME: use_1 = @module_a::@replaced_foo58    // CHECK-SAME: use_2 = @replaced_module_b::@replaced_module_c::@replaced_foo59    "foo.op"() {60      use_1 = @module_a::@foo,61      use_2 = @module_b::@module_c::@foo62    } : () -> ()63  }64}65 66// -----67 68// Check that the replacement fails for potentially unknown symbol tables.69module {70  // CHECK: func private @failed_repl71  func.func private @failed_repl() attributes {sym.new_name = "replaced_name" }72 73  "foo.possibly_unknown_symbol_table"() ({74  }) : () -> ()75}76 77// -----78 79// Check that replacement works in any implementations of SubElements.80module {81    // CHECK: func private @replaced_foo82    func.func private @symbol_foo() attributes {sym.new_name = "replaced_foo" }83 84    // CHECK: func @symbol_bar85    func.func @symbol_bar() {86      // CHECK: foo.op87      // CHECK-SAME: non_symbol_attr,88      // CHECK-SAME: use = [#test.sub_elements_access<[@replaced_foo], @symbol_bar, @replaced_foo>, distinct[0]<@replaced_foo>],89      // CHECK-SAME: z_non_symbol_attr_390      "foo.op"() {91        non_symbol_attr,92        use = [#test.sub_elements_access<[@symbol_foo],@symbol_bar,@symbol_foo>, distinct[0]<@symbol_foo>],93        z_non_symbol_attr_394      } : () -> ()95    }96}97 98// -----99 100module {101  // CHECK: module @replaced_foo102  module @foo attributes {sym.new_name = "replaced_foo" } {103    // CHECK: func.func private @foo104    func.func private @foo()105  }106 107  // CHECK: foo.op108  // CHECK-SAME: use = @replaced_foo::@foo109  "foo.op"() {110    use = @foo::@foo111  } : () -> ()112}113