Lots of package failures with
req_track.c:204: error: unrecognizable insn: (insn 299 61 62 6 (set (reg/f:SI 66) (plus:SI (reg/f:SI 126 [ server.sv_track ]) (const_int 8 [0x8]))) -1 (nil) (nil)) req_track.c:204: internal compiler error: in extract_insn, at recog.c:2084
I'll extract a testcase another day. Maybe it's obvious enough already.
Whoops, s390, not s390x.
Created attachment 10098 [details]
Critical, as this happens in a lot of packages.
This is a bug in the old loop optimizer introduced by:
The problem with this patch is that it assumes
gen_move_insn where the source is a PLUS representing
an address always returns a valid instruction. This is
not the case at least on s390.
Created attachment 10106 [details]
Possible fix (not yet tested)
This patch is a possible fix to the problem;
it works by using force_operand to make sure
the address can be loaded correctly.
(Patch not yet tested.)
Tested patch in:
Subject: Bug 24600
Date: Wed Nov 2 23:06:26 2005
New Revision: 106404
* loop.c (loop_givs_rescan): Use force_operand to expand
* gcc.dg/pr24600.c: New test.