https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78186
Bug ID: 78186 Summary: FAIL: gcc.c-torture/execute/bf64-1.c execution test because of revision 241664 Product: gcc Version: 7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: rtl-optimization Assignee: unassigned at gcc dot gnu.org Reporter: amker at gcc dot gnu.org Target Milestone: --- Hi, below commit commit 17fc6eeba9352b97ba16d64fd1de9a5bdc081062 Author: segher <segher@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Fri Oct 28 20:56:28 2016 +0000 combine: Improve change_zero_ext (fixes PR71847) This improves a few things in change_zero_ext. Firstly, it should use the passed in pattern in recog_for_combine, not the pattern of the insn (they are not the same if the whole pattern was replaced). Secondly, it handled zero_ext of a subreg, but with hard registers we do not get a subreg, instead the mode of the reg is changed. So this handles that. Thirdly, after changing a zero_ext to an AND, the resulting RTL may become non-canonical, like (ior (ashift ..) (and ..)); the AND should be first, it is commutative. And lastly, zero_extract as a set_dest wasn't handled at all, but now it is. This fixes the testcase in PR71847, and improves code generation in some other edge cases too. PR target/71847 * combine.c (change_zero_ext): Handle zero_ext of hard registers. Swap commutative operands in new RTL if needed. Handle zero_ext in the set_dest. (recog_for_combine): Pass *pnewpat to change_zero_ext instead of PATTERN (insn). git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@241664 138bc75d-0d04-0410-961f-82ee72b054a4 causes test case failure on arm-none-linux-gnueabihf target: FAIL: gcc.c-torture/execute/bf64-1.c -O1 execution test GCC is configured as: ../gcc/configure --prefix=... --enable-languages=c,c++,fortran --disable-bootstrap --disable-libsanitizer --disable-libgomp --disable-libitm --disable-libssp --with-tune=cortex-a15 --with-fpu=neon --with-float=hard Test is compiled as: ./gcc bf64-1.c -fno-diagnostics-show-caret -fdiagnostics-color=never -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -w -lm -o ./bf64-1.exe -march=armv7-a also fails with -O1 optimization level. Thanks, bin