;; NOTE: Assertions have been generated by update_lit_checks.py --all-items and should not be edited. ;; RUN: foreach %s %t wasm-opt --simplify-globals -all -S -o - | filecheck %s (module ;; CHECK: (type $0 (func)) ;; CHECK: (global $global (mut i32) (i32.const 0)) (global $global (mut i32) (i32.const 0)) ;; CHECK: (func $test (type $0) ;; CHECK-NEXT: (global.set $global ;; CHECK-NEXT: (i32.const 10) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: (then ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (i32.const 10) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (call $test) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (global.get $global) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (else ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (global.get $global) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) (func $test (global.set $global (i32.const 10) ) (if (i32.const 0) (then (block ;; This is dominated by the set, so we can apply 10 here. (drop (global.get $global) ) (call $test) ;; This is after a call, so we do nothing (we are still dominated by the ;; global.set, but the call might set the global to another value). (drop (global.get $global) ) ) ) ;; This is dominated by the set, but we do not optimize it yet. TODO (else (drop (global.get $global) ) ) ) ) )