Fix GCC build problem with 288f05f related to SmallVector. (#116958)
[llvm-project.git] / mlir / test / IR / greedy-pattern-rewrite-driver-bottom-up.mlir
blobd619eefd7210233679ee3a52cdd9dfecf1a8dc3a
1 // RUN: mlir-opt %s -test-greedy-patterns="max-iterations=1" \
2 // RUN:     -allow-unregistered-dialect --split-input-file | FileCheck %s
4 // CHECK-LABEL: func @add_to_worklist_after_inplace_update()
5 func.func @add_to_worklist_after_inplace_update() {
6   // The following op is updated in-place and should be added back to the
7   // worklist of the GreedyPatternRewriteDriver (regardless of the value of
8   // config.max_iterations).
10   // CHECK: "test.any_attr_of_i32_str"() <{attr = 3 : i32}> : () -> ()
11   "test.any_attr_of_i32_str"() {attr = 0 : i32} : () -> ()
12   return
15 // -----
17 // CHECK-LABEL: func @add_ancestors_to_worklist()
18 func.func @add_ancestors_to_worklist() {
19        // CHECK: "foo.maybe_eligible_op"() {eligible} : () -> index
20   // CHECK-NEXT: "test.one_region_op"()
21   "test.one_region_op"() ({
22     %0 = "foo.maybe_eligible_op" () : () -> (index)
23     "foo.yield"(%0) : (index) -> ()
24   }) {hoist_eligible_ops}: () -> ()
25   return
28 // -----
30 // There are no patterns in this test that apply to "test.symbol". This test is
31 // to ensure that symbols are not getting removed due to being "trivially dead"
32 // as part of a greedy rewrite. Symbols are never trivially dead.
34 // CHECK: "test.symbol"() <{sym_name = "foo"}>
35 "test.symbol"() <{sym_name = "foo"}> : () -> ()