https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88051
Uroš Bizjak <ubizjak at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2018-11-15
Ever confirmed|0 |1
--- Comment #1 from Uroš Bizjak <ubizjak at gmail dot com> ---
Confirmed.
./cc1 -O2 -m32 -march=skylake-avx512 -mfpmath=both ffv1enc.i
(gdb) bt
#0 internal_error (gmsgid=gmsgid@entry=0x1d7c231 "in %s, at %s:%d") at
/home/uros/gcc-svn/trunk/gcc/diagnostic.c:1500
#1 0x00000000007705c9 in fancy_abort (file=file@entry=0x1b34318
"/home/uros/gcc-svn/trunk/gcc/config/i386/sync.md",
line=line@entry=1762, function=function@entry=0x1b379c0
<add_clobbers(rtx_def*, int)::__FUNCTION__> "add_clobbers")
at /home/uros/gcc-svn/trunk/gcc/diagnostic.c:1572
#2 0x00000000013311dc in add_clobbers (pattern=pattern@entry=0x7fffefa76a30,
insn_code_number=insn_code_number@entry=1266)
at /home/uros/gcc-svn/trunk/gcc/config/i386/sync.md:1762
#3 0x000000000146f7c2 in recog_for_combine_1 (pnewpat=0x7fffffffcdd0,
insn=0x7ffff091dd80, pnotes=0x7fffffffce20)
at /home/uros/gcc-svn/trunk/gcc/combine.c:11451
#4 0x00000000014704df in recog_for_combine
(pnewpat=pnewpat@entry=0x7fffffffcdd0, insn=insn@entry=0x7ffff091dd80,
pnotes=pnotes@entry=0x7fffffffce20) at
/home/uros/gcc-svn/trunk/gcc/combine.c:11651
#5 0x0000000001483ecd in try_combine (i3=0x7ffff091dd80, i2=<optimized out>,
i1=0x0, i0=0x0,
The problematic part is in combine, where:
#4 0x00000000014704df in recog_for_combine
(pnewpat=pnewpat@entry=0x7fffffffcdd0, insn=insn@entry=0x7ffff091dd80,
pnotes=pnotes@entry=0x7fffffffce20) at
/home/uros/gcc-svn/trunk/gcc/combine.c:11651
11651 int insn_code_number = recog_for_combine_1 (pnewpat, insn, pnotes);
(gdb) p debug_rtx (insn)
(insn 1576 1575 1577 194 (parallel [
(set (reg:V4SI 909)
(subreg:V4SI (mem:DI (plus:SI (reg/f:SI 244 [ _206 ])
(reg:SI 1143)) [9 *_206 S8 A32]) 0))
(clobber (scratch:V4SI))
]) "src/libavcodec/ffv1enc.c":853:23 1266 {movdi_to_sse}
(nil))
(gdb) down
#3 0x000000000146f7c2 in recog_for_combine_1 (pnewpat=0x7fffffffcdd0,
insn=0x7ffff091dd80, pnotes=0x7fffffffce20)
at /home/uros/gcc-svn/trunk/gcc/combine.c:11451
11451 add_clobbers (newpat, insn_code_number);
(gdb) p debug_rtx (newpat)
(parallel [
(set (reg:V4SI 909)
(subreg:V4SI (mem:DI (plus:SI (reg/f:SI 244 [ _206 ])
(reg:SI 1143)) [9 *_206 S8 A32]) 0))
(nil)
])
(gdb) p insn_code_number
$12 = 1266
The relevant pattern is defined as:
(define_insn_and_split "movdi_to_sse"
[(parallel
[(set (match_operand:V4SI 0 "register_operand" "=?x,x")
(subreg:V4SI (match_operand:DI 1 "nonimmediate_operand" "r,m") 0))
(clobber (match_scratch:V4SI 2 "=&x,X"))])]
"!TARGET_64BIT && TARGET_SSE2 && TARGET_INTER_UNIT_MOVES_TO_VEC"
"#"
"&& reload_completed"
[(const_int 0)]
But for some reason isn't listed in generated add_clobbers in insn-emit.c. Note
that there is no "case 1266:" in the switch, although there is:
case 4852:
case 4851:
case 4836:
case 4835:
case 4820:
case 4819:
case 4804:
case 4803:
XVECEXP (pattern, 0, 1) = gen_rtx_CLOBBER (VOIDmode,
gen_rtx_SCRATCH (V4SImode));
break;
It doesn't look like a target problem to me.