https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101915
Martin Liška <marxin at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |marxin at gcc dot gnu.org
Last reconfirmed| |2021-08-23
Status|UNCONFIRMED |NEW
Ever confirmed|0 |1
--- Comment #6 from Martin Liška <marxin at gcc dot gnu.org> ---
Reduced test-case:
$ cat par_ops.i
typedef int int64_t __attribute__((__mode__(__DI__)));
typedef int64_t int64;
int64 int64_bit_3_r0, int64_bit_3_s0, int64_bit_3_r1, int64_bit_3_s1,
int64_bit_3_r3, int64_bit_3_s3;
int int64_bit_3_iterations;
void
int64_bit_3() {
int64 i0 = (int64_bit_3_s0 << 2) - 1;
while (int64_bit_3_iterations--) {
i0 -= 1;
int64_bit_3_s0 ^= int64_bit_3_r0 |= i0;
int64_bit_3_s1 ^= int64_bit_3_r1 |= int64_bit_3_s3 ^= int64_bit_3_r3 |=
int64_bit_3_s3;
}
}
$ ./xgcc -B. par_ops.i -c -O2
par_ops.i: In function ‘int64_bit_3’:
par_ops.i:16:1: error: unrecognizable insn:
16 | }
| ^
(insn 179 180 119 3 (set (reg/v:DI 4 r4 [orig:53 i0 ] [53])
(plus:DI (reg:DI 10 r10 [orig:42 _2 ] [42])
(const_int -1 [0xffffffffffffffff]))) -1
(nil))
during RTL pass: cprop_hardreg
par_ops.i:16:1: internal compiler error: in extract_insn, at recog.c:2769
0x665017 _fatal_insn(char const*, rtx_def const*, char const*, int, char
const*)
/home/marxin/Programming/gcc2/gcc/rtl-error.c:108
0x665033 _fatal_insn_not_found(rtx_def const*, char const*, int, char const*)
/home/marxin/Programming/gcc2/gcc/rtl-error.c:116
0x6632e5 extract_insn(rtx_insn*)
/home/marxin/Programming/gcc2/gcc/recog.c:2769
0xcef2b8 extract_constrain_insn(rtx_insn*)
/home/marxin/Programming/gcc2/gcc/recog.c:2668
0xcf4167 copyprop_hardreg_forward_1
/home/marxin/Programming/gcc2/gcc/regcprop.c:825
0xcf5053 execute
/home/marxin/Programming/gcc2/gcc/regcprop.c:1390
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.