This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/79004] ICE in gcc.dg/torture/fp-int-convert-float128-ieee.c with -mcpu=power9
- From: "bergner at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Thu, 05 Jan 2017 20:47:09 +0000
- Subject: [Bug target/79004] ICE in gcc.dg/torture/fp-int-convert-float128-ieee.c with -mcpu=power9
- Auto-submitted: auto-generated
- References: <bug-79004-4@http.gcc.gnu.org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79004
--- Comment #3 from Peter Bergner <bergner at gcc dot gnu.org> ---
Minimal test case:
bergner@genoa:~/gcc/BUGS/PR79004$ cat pr79004.i
int
main (void)
{
char ivin;
_Float64x fv2 = ivin;
}
bergner@genoa:~/gcc/BUGS/PR79004$
/home/bergner/gcc/build/gcc-fsf-mainline-reg-move_costs-debug/gcc/xgcc
-B/home/bergner/gcc/build/gcc-fsf-mainline-reg-move_costs-debug/gcc -O0
-mfloat128 -mvsx -S -mcpu=power9 pr79004.i
pr79004.i: In function ‘main’:
pr79004.i:6:1: internal compiler error: in gen_reg_rtx, at emit-rtl.c:1026
}
^
0x106e9fbb gen_reg_rtx(machine_mode)
/home/bergner/gcc/gcc-fsf-mainline-reg-move_costs-lra/gcc/emit-rtl.c:1026
0x1137ea7f convert_int_to_float128(rtx_def**, rtx_code)
/home/bergner/gcc/gcc-fsf-mainline-reg-move_costs-lra/gcc/config/rs6000/rs6000.c:24395
0x11694d2b gen_split_412(rtx_insn*, rtx_def**)
/home/bergner/gcc/gcc-fsf-mainline-reg-move_costs-lra/gcc/config/rs6000/rs6000.md:14358
The problem is that we're trying to generate a new reg, but reload_completed is
true, so we cannot. We're trying to generate the new reg here:
void
convert_int_to_float128 (rtx *operands, enum rtx_code code)
{
rtx dest = operands[0];
rtx src = operands[1];
rtx tmp = operands[2];
rtx cvt;
rtvec cvt_vec;
rtx cvt_unspec;
rtvec move_vec;
rtx move_unspec;
rtx unsigned_flag;
if (GET_CODE (tmp) == SCRATCH)
tmp = gen_reg_rtx (V2DImode);