testing
diff --git a/test/passes/inlining-optimizing_optimize-level=3.txt b/test/passes/inlining-optimizing_optimize-level=3.txt
index fdc59bc..a6e1969 100644
--- a/test/passes/inlining-optimizing_optimize-level=3.txt
+++ b/test/passes/inlining-optimizing_optimize-level=3.txt
@@ -1045,11 +1045,12 @@
     (i32.const 224)
    )
   )
-  (local.set $5
-   (i32.add
-    (local.get $3)
-    (i32.const 120)
+  (if
+   (i32.ge_s
+    (global.get $STACKTOP)
+    (global.get $STACK_MAX)
    )
+   (call $abort)
   )
   (local.set $8
    (i32.add
@@ -1070,12 +1071,11 @@
     (i32.const 136)
    )
   )
-  (if
-   (i32.ge_s
-    (global.get $STACKTOP)
-    (global.get $STACK_MAX)
+  (local.set $5
+   (i32.add
+    (local.get $3)
+    (i32.const 120)
    )
-   (call $abort)
   )
   (loop $do-in
    (i32.store
@@ -2179,10 +2179,17 @@
     (i32.const 624)
    )
   )
-  (local.set $21
+  (if
+   (i32.ge_s
+    (global.get $STACKTOP)
+    (global.get $STACK_MAX)
+   )
+   (call $abort)
+  )
+  (local.set $33
    (i32.add
     (local.get $13)
-    (i32.const 16)
+    (i32.const 528)
    )
   )
   (local.set $37
@@ -2251,10 +2258,10 @@
     (i32.const 0)
    )
   )
-  (local.set $33
+  (local.set $21
    (i32.add
     (local.get $13)
-    (i32.const 528)
+    (i32.const 16)
    )
   )
   (local.set $44
@@ -2263,13 +2270,6 @@
     (local.get $34)
    )
   )
-  (if
-   (i32.ge_s
-    (global.get $STACKTOP)
-    (global.get $STACK_MAX)
-   )
-   (call $abort)
-  )
   (local.set $41
    (local.tee $29
     (i32.add
@@ -3661,18 +3661,18 @@
                                     )
                                    )
                                   )
-                                  (i32.store offset=4
-                                   (local.get $13)
-                                   (local.tee $7
-                                    (global.get $tempRet0)
-                                   )
-                                  )
                                   (local.set $9
                                    (i32.const 4091)
                                   )
                                   (local.set $8
                                    (i32.const 1)
                                   )
+                                  (i32.store offset=4
+                                   (local.get $13)
+                                   (local.tee $7
+                                    (global.get $tempRet0)
+                                   )
+                                  )
                                   (br $__rjti$4)
                                  )
                                 )
@@ -4027,6 +4027,12 @@
                                 )
                                )
                               )
+                              (local.set $11
+                               (i32.or
+                                (local.get $27)
+                                (i32.const 2)
+                               )
+                              )
                               (if
                                (i32.eq
                                 (local.tee $5
@@ -4101,12 +4107,6 @@
                                 (i32.const 15)
                                )
                               )
-                              (local.set $11
-                               (i32.or
-                                (local.get $27)
-                                (i32.const 2)
-                               )
-                              )
                               (local.set $16
                                (i32.lt_s
                                 (local.get $6)
diff --git a/test/passes/sort-blocks.txt b/test/passes/sort-blocks.txt
new file mode 100644
index 0000000..a96782c
--- /dev/null
+++ b/test/passes/sort-blocks.txt
@@ -0,0 +1,69 @@
+(module
+ (type $0 (func))
+ (func $func1 (; 0 ;) (type $0)
+  (drop
+   (i32.const 0)
+  )
+  (drop
+   (i32.const 2)
+  )
+  (drop
+   (i32.const 1)
+  )
+ )
+ (func $func2 (; 1 ;) (type $0)
+  (drop
+   (i32.const 0)
+  )
+  (drop
+   (i32.const 2)
+  )
+  (drop
+   (i32.const 1)
+  )
+ )
+ (func $func3 (; 2 ;) (type $0)
+  (drop
+   (i32.const 0)
+  )
+  (drop
+   (i32.const 2)
+  )
+  (drop
+   (i32.const 1)
+  )
+ )
+ (func $func4 (; 3 ;) (type $0)
+  (drop
+   (i32.const 0)
+  )
+  (drop
+   (i32.const 2)
+  )
+  (drop
+   (i32.const 1)
+  )
+ )
+ (func $func5 (; 4 ;) (type $0)
+  (drop
+   (i32.const 0)
+  )
+  (drop
+   (i32.const 2)
+  )
+  (drop
+   (i32.const 1)
+  )
+ )
+ (func $func6 (; 5 ;) (type $0)
+  (drop
+   (i32.const 2)
+  )
+  (drop
+   (i32.const 0)
+  )
+  (drop
+   (i32.const 1)
+  )
+ )
+)
diff --git a/test/passes/sort-blocks.wast b/test/passes/sort-blocks.wast
new file mode 100644
index 0000000..3eb2ca8
--- /dev/null
+++ b/test/passes/sort-blocks.wast
@@ -0,0 +1,33 @@
+(module
+  (func $func1
+    (drop (i32.const 0))
+    (drop (i32.const 1))
+    (drop (i32.const 2))
+  )
+  (func $func2
+    (drop (i32.const 0))
+    (drop (i32.const 2))
+    (drop (i32.const 1))
+  )
+  (func $func3
+    (drop (i32.const 1))
+    (drop (i32.const 0))
+    (drop (i32.const 2))
+  )
+  (func $func4
+    (drop (i32.const 1))
+    (drop (i32.const 2))
+    (drop (i32.const 0))
+  )
+  (func $func5
+    (drop (i32.const 2))
+    (drop (i32.const 0))
+    (drop (i32.const 1))
+  )
+  (func $func6
+    (drop (i32.const 2))
+    (drop (i32.const 1))
+    (drop (i32.const 0))
+  )
+)
+