> src/gcc-4.5.0/libiberty/regex.c: In function 'byte_insert_op2':
> /src/gcc-4.5.0/libiberty/regex.c:4279:1: error: unrecognizable insn:
> (insn 62 61 63 5 /src/gcc-4.5.0/libiberty/regex.c:4276 (set (reg:DI 135)
> (plus:SI (subreg/s:SI (reg/v/f:DI 109 [ pfrom ]) 0)
> (const_int 5 [0x5]))) -1 (nil))
> /src/gcc-4.5.0/libiberty/regex.c:4279:1: internal compiler error: in
> extract_insn, at recog.c:2103
> Please submit a full bug report,
> with preprocessed source if appropriate.
> See for instructions.
> make: *** [regex.o] Error 1
Fixed by saying make CFLAGS=-mbwx, which enables some byte/word instructions.
More information needed?
Let's see.
Here is the code:
/* Like `insert_op1', but for two two-byte parameters ARG1 and ARG2. */
/* ifdef WCHAR, integer parameter is 1 wchar_t. */
static void
PREFIX(insert_op2) (re_opcode_t op, UCHAR_T *loc, int arg1,
int arg2, UCHAR_T *end)
{
register UCHAR_T *pfrom = end;
register UCHAR_T *pto = end + 1 + 2 * OFFSET_ADDRESS_SIZE;
while (pfrom != loc)
*--pto = *--pfrom;
PREFIX(store_op2) (op, loc, arg1, arg2);
}
Here is a reduced/preprocessed form that hits the same problem:
jbook2:~ jay$ cat re.c
typedef unsigned char UCHAR;
void insert_op2 (UCHAR *loc, UCHAR *end)
{
UCHAR *pfrom = end;
UCHAR *pto = end + 1;
while (pfrom != loc)
*--pto = *--pfrom;
}
jbook2:~ jay$ alpha-dec-vms-gcc -c re.c
jbook2:~ jay$ alpha-dec-vms-gcc -c -O2 re.c
re.c: In function 'insert_op2':
re.c:10:1: error: unrecognizable insn:
(insn 58 57 59 5 re.c:9 (set (reg:DI 120)
(plus:SI (subreg/s:SI (reg/v/f:DI 108 [ pfrom ]) 0)
(const_int 1 [0x1]))) -1 (nil))
re.c:10:1: internal compiler error: in extract_insn, at recog.c:2103
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
jbook2:~ jay$
I opened a bug in the database.
- Jay