diff options
author | Alon Zakai <azakai@google.com> | 2024-10-18 10:32:34 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-10-18 10:32:34 -0700 |
commit | 0b882b9e60f05db9e56f0c35cfbb38eb87619a76 (patch) | |
tree | 081627403ef93daefe1538da40a4e892edb760f4 /test | |
parent | 795cf2895f713e8b05924e2a1e24a4d2de3ebcf5 (diff) | |
download | binaryen-0b882b9e60f05db9e56f0c35cfbb38eb87619a76.tar.gz binaryen-0b882b9e60f05db9e56f0c35cfbb38eb87619a76.tar.bz2 binaryen-0b882b9e60f05db9e56f0c35cfbb38eb87619a76.zip |
[GC] Ignore public types in SignatureRefining (#7022)
Similar to #7017 and #7018
Diffstat (limited to 'test')
-rw-r--r-- | test/lit/passes/signature-refining.wast | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/test/lit/passes/signature-refining.wast b/test/lit/passes/signature-refining.wast index 7a5020e29..f6f889408 100644 --- a/test/lit/passes/signature-refining.wast +++ b/test/lit/passes/signature-refining.wast @@ -1119,3 +1119,43 @@ ;; (see tests above for how we handle refining of return values). ) ) + +;; Visibility: The type we'd like to refine, $sig, is in a rec group with a +;; public type, so do not optimize. +(module + (rec + ;; CHECK: (rec + ;; CHECK-NEXT: (type $sig (sub (func (param anyref)))) + (type $sig (sub (func (param anyref)))) + + ;; CHECK: (type $struct (struct)) + (type $struct (struct)) + ) + + ;; Export a global with $struct to make it public. + ;; CHECK: (type $2 (func)) + + ;; CHECK: (global $struct (ref $struct) (struct.new_default $struct)) + (global $struct (ref $struct) (struct.new $struct)) + + ;; CHECK: (export "struct" (global $struct)) + (export "struct" (global $struct)) + + ;; CHECK: (func $func (type $sig) (param $x anyref) + ;; CHECK-NEXT: (nop) + ;; CHECK-NEXT: ) + (func $func (type $sig) (param $x anyref) + ) + + ;; CHECK: (func $caller (type $2) + ;; CHECK-NEXT: (call $func + ;; CHECK-NEXT: (struct.new_default $struct) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + (func $caller + (call $func + (struct.new $struct) + ) + ) +) + |