Redundant global read
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 38/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- wasm
- Lĩnh vực
- compilers, performance
Hướng nghiên cứu
Bắt đầu bằng cách xác định optimization pass của Binaryen xử lý global.set và global.get, sau đó xem xét các bài kiểm thử hiện có cho các phép biến đổi global. Bổ sung coverage cho các giá trị đơn giản và phức tạp như trong issue, và coi công việc hoàn tất khi thao tác đọc dư thừa được loại bỏ trong khi các ví dụ vẫn giữ nguyên hành vi.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
In situations when global reads immediately after write we could avoid this read and use argument of global.set. For example this:
(module
(global $g (mut i32) (i32.const 0))
(func $test (param $0 i32) (result i32)
(global.set $g (local.get $0))
(global.get $g)
)
)
can be optimized as:
(module
(global $g (mut i32) (i32.const 0))
(func $test (param $0 i32) (result i32)
(global.set $g (local.get $0))
(local.get $0)
)
)
if arg is simple like local.get or i32.const
and something like this if arg more complex:
(module
(global $g (mut i32) (i32.const 0))
(func $test (param $0 i32) (result i32)
(global.set $g (local.tee $tmp (...complex expr...)))
(local.get $tmp)
)
)
- Ngôn ngữ chính
- WebAssembly
- Star
- 8.6k
- Fork
- 885
- Merge trung bình
- 2 ngày 4 giờ
- Pull request đã merge (30 ngày)
- 77
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của WebAssembly/binaryen
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 88/100
WebAssembly/binaryen#9135 · 1 bình luận ·
-
Độ khó 2/5 Nửa ngày Mức phù hợp với người mới 76/100
WebAssembly/binaryen#9018 · 3 bình luận ·
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
WebAssembly/binaryen#9133 ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 52/100
WebAssembly/binaryen#9123 ·
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
WebAssembly/binaryen#9122 ·
Tất cả issue của WebAssembly/binaryen
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
objectionary/eo#8923 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
-
Coarray integration tests carry no LABELS, so run_tests.py silently skips them under every backend Đang mởcoarray
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
-
internal.h中,漏掉了1个定义。 Đang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 95/100