-
Notifications
You must be signed in to change notification settings - Fork 831
SimplifyGlobals: Propagate constant globals into nested gets in other globals #6285
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,27 @@ | ||
| ;; NOTE: Assertions have been generated by update_lit_checks.py --all-items and should not be edited. | ||
| ;; NOTE: This test was ported using port_passes_tests_to_lit.py and could be cleaned up. | ||
|
|
||
| ;; RUN: foreach %s %t wasm-opt --simplify-globals -all -S -o - | filecheck %s | ||
|
|
||
| ;; Test that we propagate globals into nested children of other globals. | ||
|
|
||
| (module | ||
| ;; CHECK: (type $struct (struct (field i32) (field i32))) | ||
| (type $struct (struct i32 i32)) | ||
|
|
||
| ;; CHECK: (global $a i32 (i32.const 42)) | ||
| (global $a i32 (i32.const 42)) | ||
|
|
||
| ;; CHECK: (global $b i32 (i32.const 1337)) | ||
| (global $b i32 (i32.const 1337)) | ||
|
|
||
| ;; CHECK: (global $struct (ref $struct) (struct.new $struct | ||
| ;; CHECK-NEXT: (i32.const 42) | ||
| ;; CHECK-NEXT: (i32.const 1337) | ||
| ;; CHECK-NEXT: )) | ||
| (global $struct (ref $struct) (struct.new $struct | ||
| (global.get $a) | ||
| (global.get $b) | ||
| )) | ||
|
Comment on lines
+22
to
+25
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'm sure this is already tested elsewhere, but it might be nice to see that a
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What do you mean by "does not interfere"? Like if it is in the middle between them?
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Not in the middle, necessarily, but yeah, if this struct had another field initialized with another |
||
| ) | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As a separate cleanup it might be nice to use the template parameter on
FindAllPointersin the type of itslistto avoid the need for a cast below.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'll try, though I have a vague memory of that not working for a sad C++ey reason...