blob: 818239c1569e374a2bd10f7964cf278c30f79e56 [file] [edit]
;; NOTE: Assertions have been generated by update_lit_checks.py and should not be edited.
;; RUN: wasm-opt -all %s -S -o - | filecheck %s
;; Check that we properly parse array.atomic.rmw.cmpxchg of a shared array,
;; when the instruction is unreachable (when the the expected field does not
;; have the correct sharedness).
(module
;; CHECK: (type $array (shared (array (mut (ref null (shared eq))))))
(type $array (shared (array (mut (ref null (shared eq))))))
;; CHECK: (global $g (ref $array) (array.new_default $array
;; CHECK-NEXT: (i32.const 0)
;; CHECK-NEXT: ))
(global $g (ref $array) (array.new_default $array (i32.const 0)))
;; CHECK: (func $test (type $1) (result (ref null (shared eq)))
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (global.get $g)
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (i32.const 0)
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (ref.as_non_null
;; CHECK-NEXT: (ref.null none)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: (block ;; (replaces unreachable ArrayCmpxchg we can't emit)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
(func $test (result (ref null (shared eq)))
(array.atomic.rmw.cmpxchg acqrel acqrel $array
(global.get $g)
(i32.const 0)
(ref.as_non_null (ref.null none))
(unreachable)
)
)
)