diff options
Diffstat (limited to 'test/lit/passes/optimize-instructions-call_ref.wast')
-rw-r--r-- | test/lit/passes/optimize-instructions-call_ref.wast | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/test/lit/passes/optimize-instructions-call_ref.wast b/test/lit/passes/optimize-instructions-call_ref.wast index 94c61433f..91aba5fed 100644 --- a/test/lit/passes/optimize-instructions-call_ref.wast +++ b/test/lit/passes/optimize-instructions-call_ref.wast @@ -44,13 +44,16 @@ ) ;; CHECK: (func $call_ref-to-direct (type $i32_i32_=>_none) (param $x i32) (param $y i32) + ;; CHECK-NEXT: ;;@ file.cpp:10:1 ;; CHECK-NEXT: (call $foo ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: (local.get $y) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) (func $call_ref-to-direct (param $x i32) (param $y i32) - ;; This call_ref should become a direct call. + ;; This call_ref should become a direct call. The debuginfo should transfer as + ;; well. + ;;@ file.cpp:10:1 (call_ref $i32_i32_=>_none (local.get $x) (local.get $y) @@ -253,29 +256,42 @@ ;; CHECK: (func $call_ref-to-select (type $5) (param $x i32) (param $y i32) (param $z i32) (param $f (ref $i32_i32_=>_none)) ;; CHECK-NEXT: (local $4 i32) ;; CHECK-NEXT: (local $5 i32) + ;; CHECK-NEXT: ;;@ file.cpp:20:2 ;; CHECK-NEXT: (block + ;; CHECK-NEXT: ;;@ ;; CHECK-NEXT: (local.set $4 + ;; CHECK-NEXT: ;;@ file.cpp:20:2 ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ;;@ ;; CHECK-NEXT: (local.set $5 + ;; CHECK-NEXT: ;;@ file.cpp:20:2 ;; CHECK-NEXT: (local.get $y) ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ;;@ ;; CHECK-NEXT: (if + ;; CHECK-NEXT: ;;@ file.cpp:20:2 ;; CHECK-NEXT: (local.get $z) ;; CHECK-NEXT: (then ;; CHECK-NEXT: (call $foo + ;; CHECK-NEXT: ;;@ ;; CHECK-NEXT: (local.get $4) + ;; CHECK-NEXT: ;;@ ;; CHECK-NEXT: (local.get $5) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (else + ;; CHECK-NEXT: ;;@ file.cpp:20:2 ;; CHECK-NEXT: (call $bar + ;; CHECK-NEXT: ;;@ ;; CHECK-NEXT: (local.get $4) + ;; CHECK-NEXT: ;;@ ;; CHECK-NEXT: (local.get $5) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ;;@ file.cpp:30:3 ;; CHECK-NEXT: (call_ref $i32_i32_=>_none ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: (local.get $y) @@ -287,7 +303,11 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) (func $call_ref-to-select (param $x i32) (param $y i32) (param $z i32) (param $f (ref $i32_i32_=>_none)) - ;; This call_ref should become an if over two direct calls. + ;; This call_ref should become an if over two direct calls. The debuginfo + ;; should transfer as well to the two new calls (and some of the new helper + ;; code that is generated, but the critical part is the call_ref is being + ;; replaced by two calls, which should have the same info). + ;;@ file.cpp:20:2 (call_ref $i32_i32_=>_none (local.get $x) (local.get $y) @@ -299,6 +319,7 @@ ) ;; But here one arm is not constant, so we do not optimize. + ;;@ file.cpp:30:3 (call_ref $i32_i32_=>_none (local.get $x) (local.get $y) |