HaxeFoundation / HaxeFoundation/haxe
Compiler not optimizing away multiply by zero
- Dominant language
- Haxe
- Stars
- 6.9k
- Forks
- 715
- Avg merge
- 2d 2h
- Merged PRs (30d)
- 11
Description
Thanks to inlining I get some pretty straight matrix multiplication code, but for something standard like gluPerspective where you have a lot of zeros in the matrix, Haxe generates JavaScript like:
```
self.a11 = a11 * b11 + a12 * 0 + a13 * 0 + a14 * 0;
self.a12 = a11 * 0 + a12 * f + a13 * 0 + a14 * 0;
self.a13 = a11 * 0 + a12 * 0 + a13 * b33 + a14 * -1;
self.a14 = a11 * 0 + a12 * 0 + a13 * b34 + a14 * 0;
self.a21 = a21 * b11 + a22 * 0 + a23 * 0 + a24 * 0;
self.a22 = a21 * 0 + a22 * f + a23 * 0 + a24 * 0;
self.a23 = a21 * 0 + a22 * 0 + a23 * b33 + a24 * -1;
self.a24 = a21 * 0 + a22 * 0 + a23 * b34 + a24 * 0;
self.a31 = a31 * b11 + a32 * 0 + a33 * 0 + a34 * 0;
self.a32 = a31 * 0 + a32 * f + a33 * 0 + a34 * 0;
self.a33 = a31 * 0 + a32 * 0 + a33 * b33 + a34 * -1;
self.a34 = a31 * 0 + a32 * 0 + a33 * b34 + a34 * 0;
self.a41 = a41 * b11 + a42 * 0 + a43 * 0 + a44 * 0;
self.a42 = a41 * 0 + a42 * f + a43 * 0 + a44 * 0;
self.a43 = a41 * 0 + a42 * 0 + a43 * b33 + a44 * -1;
self.a44 = a41 * 0 + a42 * 0 + a43 * b34 + a44 * 0;
```
Any reason the multiply by zeros can't go drop out, and the var \* -1 can't become -var?
Contributor guide
Assessment
This issue has not been assessed yet.