Skip to content

Commit 129a6db

Browse files
Add more tests
1 parent 58f18e1 commit 129a6db

File tree

1 file changed

+92
-0
lines changed

1 file changed

+92
-0
lines changed

test/lit/passes/ldse.wast

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1004,6 +1004,98 @@
10041004
)
10051005
)
10061006

1007+
;; CHECK: (func $global-with-get (type $15) (result i32)
1008+
;; CHECK-NEXT: (local $tmp i32)
1009+
;; CHECK-NEXT: (global.set $global$0
1010+
;; CHECK-NEXT: (i32.const 10)
1011+
;; CHECK-NEXT: )
1012+
;; CHECK-NEXT: (local.set $tmp
1013+
;; CHECK-NEXT: (global.get $global$0)
1014+
;; CHECK-NEXT: )
1015+
;; CHECK-NEXT: (global.set $global$0
1016+
;; CHECK-NEXT: (i32.const 30)
1017+
;; CHECK-NEXT: )
1018+
;; CHECK-NEXT: (local.get $tmp)
1019+
;; CHECK-NEXT: )
1020+
(func $global-with-get (result i32)
1021+
(local $tmp i32)
1022+
1023+
(global.set $global$0
1024+
(i32.const 10)
1025+
)
1026+
1027+
;; We observed the otherwise dead store so we can't optimize it.
1028+
(local.set $tmp (global.get $global$0))
1029+
1030+
(global.set $global$0
1031+
(i32.const 30)
1032+
)
1033+
1034+
(local.get $tmp)
1035+
)
1036+
1037+
;; CHECK: (func $nothing (type $3)
1038+
;; CHECK-NEXT: )
1039+
(func $nothing
1040+
)
1041+
1042+
;; CHECK: (func $global-with-call (type $3)
1043+
;; CHECK-NEXT: (global.set $global$0
1044+
;; CHECK-NEXT: (i32.const 10)
1045+
;; CHECK-NEXT: )
1046+
;; CHECK-NEXT: (call $nothing)
1047+
;; CHECK-NEXT: (global.set $global$0
1048+
;; CHECK-NEXT: (i32.const 30)
1049+
;; CHECK-NEXT: )
1050+
;; CHECK-NEXT: )
1051+
(func $global-with-call
1052+
(global.set $global$0
1053+
(i32.const 10)
1054+
)
1055+
1056+
;; A function call might observe the otherwise dead store.
1057+
;; We don't know unless we compute global effects first.
1058+
(call $nothing)
1059+
1060+
(global.set $global$0
1061+
(i32.const 30)
1062+
)
1063+
)
1064+
1065+
;; CHECK: (func $global-branch-always-dead (type $16) (param $bool i32)
1066+
;; CHECK-NEXT: (drop
1067+
;; CHECK-NEXT: (i32.const 10)
1068+
;; CHECK-NEXT: )
1069+
;; CHECK-NEXT: (if
1070+
;; CHECK-NEXT: (local.get $bool)
1071+
;; CHECK-NEXT: (then
1072+
;; CHECK-NEXT: (global.set $global$0
1073+
;; CHECK-NEXT: (i32.const 20)
1074+
;; CHECK-NEXT: )
1075+
;; CHECK-NEXT: )
1076+
;; CHECK-NEXT: (else
1077+
;; CHECK-NEXT: (global.set $global$0
1078+
;; CHECK-NEXT: (i32.const 30)
1079+
;; CHECK-NEXT: )
1080+
;; CHECK-NEXT: )
1081+
;; CHECK-NEXT: )
1082+
;; CHECK-NEXT: )
1083+
(func $global-branch-always-dead (param $bool i32)
1084+
;; This store is dead regardless of the branch.
1085+
(global.set $global$0
1086+
(i32.const 10)
1087+
)
1088+
1089+
(if (local.get $bool)
1090+
(then
1091+
(global.set $global$0 (i32.const 20))
1092+
)
1093+
(else
1094+
(global.set $global$0 (i32.const 30))
1095+
)
1096+
)
1097+
)
1098+
10071099
;; CHECK: (func $global-trap (type $3)
10081100
;; CHECK-NEXT: (global.set $global$0
10091101
;; CHECK-NEXT: (i32.const 10)

0 commit comments

Comments
 (0)