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