https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120722

--- Comment #1 from Tobias Burnus <burnus at gcc dot gnu.org> ---
Fails for:

Breakpoint 1, gen_highpart (mode=E_SImode, x=0x7ffff7195378) at
/home/tob/repos/gcc/gcc/emit-rtl.cc:1674
1674      gcc_assert (result && !MEM_P (result));

(gdb) p result
$1 = (rtx) 0x0

(gdb) p debug_rtx(x)
(reg:DI 106 vcc_lo [orig:693 loop_mask_26 ] [693])


with:

1670  result = simplify_gen_subreg (mode, x, GET_MODE (x),
1671                               subreg_highpart_offset (mode, GET_MODE
(x)));

Caller:
#1  0x0000000000cb7376 in gen_highpart_mode (outermode=E_SImode,
innermode=E_DImode, exp=0x7ffff7195348)

called in #1  0x0000000000cb7376 in gen_highpart_mode (outermode=E_SImode,
innermode=E_DImode, exp=0x7ffff7195348)

668       [RM  ,v   ;flat ,12,*    ,*  ] global_store_dwordx2\t%A0, %1%O0%g0
669       [RM  ,a   ;flat ,12,cdna2,*  ] ^
670       }
671       "reload_completed
672        && ((!MEM_P (operands[0]) && !MEM_P (operands[1])
673             && !gcn_sgpr_move_p (operands[0], operands[1]))
674            || (GET_CODE (operands[1]) == CONST_INT
(gdb) 
675                && !gcn_constant64_p (operands[1])))"
676       [(set (match_dup 0) (match_dup 1))
677        (set (match_dup 2) (match_dup 3))]
678       {
679         rtx inlo = gen_lowpart (SImode, operands[1]);
680         rtx inhi = gen_highpart_mode (SImode, <MODE>mode, operands[1]);
681         rtx outlo = gen_lowpart (SImode, operands[0]);
682 >>>>    rtx outhi = gen_highpart_mode (SImode, <MODE>mode, operands[0]);
683
684         /* Ensure that overlapping registers aren't corrupted.  */

Reply via email to