This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/81803] [7/8 regression] miscompilation at -O1 on mips64el
- From: "mpf at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Tue, 29 Aug 2017 15:40:38 +0000
- Subject: [Bug target/81803] [7/8 regression] miscompilation at -O1 on mips64el
- Auto-submitted: auto-generated
- References: <bug-81803-4@http.gcc.gnu.org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81803
--- Comment #9 from mpf at gcc dot gnu.org ---
Created attachment 42075
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=42075&action=edit
Proposed fix
Off-thread James pointed out that one of my patches I did last year appeared to
fix this issue but it was one I reverted owing to breaking ARM (and probably
others). The thread was:
https://gcc.gnu.org/ml/gcc-patches/2017-02/msg00518.html
At the time I thought I had fixed the same problem twice and that the changes
to simplify_operand_subreg were sufficient. It occurs to me however that
simplify_operand_subreg only has the opportunity to fix
WORD_REGISTER_OPERATIONS issues affecting subreg(mem) patterns not subreg(reg)
patterns where reg is a pseudo that may yet be spilled.
I can't say that I am 100% convinced yet with my thinking here but I've
attached an updated version of the original patch with some changes:
* Incorporated Eric's feedback on the original patch to check
GET_MODE_PRECISION instead of GET_MODE_SIZE for comparing whether a mode is
strictly narrower
* Limited the test to word sized inner modes or smaller
* Limited the test to OP_OUT or OP_INOUT as I can't see any reason why it would
matter if we do a narrower input reload
This is barely tested but does fix testcase-c which is the only one I can get
to trigger.