[Bug target/59780] New: ICE in aarch64_split_128bit_move

vries at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Sun Jan 12 19:55:00 GMT 2014


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59780

            Bug ID: 59780
           Summary: ICE in aarch64_split_128bit_move
           Product: gcc
           Version: 4.9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: vries at gcc dot gnu.org

when building r206565 with target aarch64-linux-gnu I run into several ICEs
like this:
...
/home/vries/gcc_versions/devel/src/libgcc/soft-fp/negtf2.c: In function
‘__negtf2’:
/home/vries/gcc_versions/devel/src/libgcc/soft-fp/negtf2.c:46:1: internal
compiler error: RTL check: expected code 'reg', have 'const_int' in rhs_regno,
at rtl.h:1125
 }
 ^
0xbde5de rtl_check_failed_code1(rtx_def const*, rtx_code, char const*, int,
char const*)
    /home/vries/gcc_versions/devel/src/gcc/rtl.c:773
0xfe4c1d rhs_regno
    /home/vries/gcc_versions/devel/src/gcc/rtl.h:1125
0xfe62a1 aarch64_split_128bit_move(rtx_def*, rtx_def*)
    /home/vries/gcc_versions/devel/src/gcc/config/aarch64/aarch64.c:688
0x1048a60 gen_split_2245(rtx_def*, rtx_def**)
    /home/vries/gcc_versions/devel/src/gcc/config/aarch64/aarch64.md:752
b0x13fc389 split_1
    /home/vries/gcc_versions/devel/src/gcc/config/aarch64/aarch64.md:751
0x1475285 split_insns(rtx_def*, rtx_def*)
    /home/vries/gcc_versions/devel/src/gcc/config/aarch64/aarch64.md:352
0x7ec8f6 try_split(rtx_def*, rtx_def*, int)
    /home/vries/gcc_versions/devel/src/gcc/emit-rtl.c:3471
0xb535ea split_insn
    /home/vries/gcc_versions/devel/src/gcc/recog.c:2850
0xb545f2 split_all_insns()
    /home/vries/gcc_versions/devel/src/gcc/recog.c:2940
0xb573f6 rest_of_handle_split_after_reload
    /home/vries/gcc_versions/devel/src/gcc/recog.c:3889
0xb57440 execute
    /home/vries/gcc_versions/devel/src/gcc/recog.c:3918
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <http://gcc.gnu.org/bugs.html> for instructions.
...

Investigating one of them shows:
...
(gdb) down
#6  0x0000000000fe62a2 in aarch64_split_128bit_move (dst=0x7ffff66fa0e0,
src=0x7ffff687c470)
    at /home/vries/gcc_versions/devel/src/gcc/config/aarch64/aarch64.c:688
688      int src_regno = REGNO (src);
(gdb) call debug_rtx (src)
(const_int 0 [0])
(gdb) call debug_rtx (dst)
(reg/v:TI 2 x2 [orig:80 _flo ] [80])
...

...
void
aarch64_split_128bit_move (rtx dst, rtx src)
{
  rtx low_dst;

  enum machine_mode src_mode = GET_MODE (src);
  enum machine_mode dst_mode = GET_MODE (dst);
  int src_regno = REGNO (src);
  int dst_regno = REGNO (dst);
...

We're doing REGNO (src) while src == (const_int 0).


More information about the Gcc-bugs mailing list