https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91060
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
So the new FRE pass does things like
- _746 = {_2, 1, 2, 3, 4, 5, 6, 7};
- _783 = BIT_FIELD_REF <_746, 16, 0>;
- _1801 = _783 + 2;
- _1800 = {_2, 1, 2, 3, 4, 5, 6, 7};
- _1788 = BIT_FIELD_REF <_1800, 16, 16>;
- _1787 = _1788 + 2;
- _1775 = {_2, 1, 2, 3, 4, 5, 6, 7};
- _1774 = BIT_FIELD_REF <_1775, 16, 32>;
- _1762 = _1774 + 2;
- _1761 = {_2, 1, 2, 3, 4, 5, 6, 7};
- _1749 = BIT_FIELD_REF <_1761, 16, 48>;
- _1748 = _1749 + 2;
- _1736 = {_2, 1, 2, 3, 4, 5, 6, 7};
- _1735 = BIT_FIELD_REF <_1736, 16, 64>;
- _748 = _1735 + 2;
- _784 = {_2, 1, 2, 3, 4, 5, 6, 7};
- _1710 = BIT_FIELD_REF <_784, 16, 80>;
- _1709 = _1710 + 2;
- _1697 = {_2, 1, 2, 3, 4, 5, 6, 7};
- _1696 = BIT_FIELD_REF <_1697, 16, 96>;
- _1684 = _1696 + 2;
- _1683 = {_2, 1, 2, 3, 4, 5, 6, 7};
- _1671 = BIT_FIELD_REF <_1683, 16, 112>;
- _1670 = _1671 + 2;
- _4 = {_1801, _1787, _1762, _1748, _748, _1709, _1684, _1670};
+ _1801 = _2 + 2;
+ _4 = {_1801, 3, 4, 5, 6, 7, 8, 9};
thus it improves vector lowering generated code. Unfortunately the
testcases / differences are too big and I'm not set up to do runtime
testing for big-endian arm.
Would it be possible to reduce the testcase to a single of the
v1 = 2 + v0; check (short, 8, v0, v1, 2, +, l);
v1 = 2 - v0; check (short, 8, v0, v1, 2, -, l);
v1 = 2 * v0; check (short, 8, v0, v1, 2, *, l);
v1 = 2 / v0; check (short, 8, v0, v1, 2, /, l);
v1 = 2 % v0; check (short, 8, v0, v1, 2, %, l);
...
lines?