[Bug target/88051] internal compiler error: in add_clobbers, at config/i386/sync.md:1762

2018-11-15 Thread ubizjak at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88051

Uroš Bizjak  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2018-11-15
 Ever confirmed|0   |1

--- Comment #1 from Uroš Bizjak  ---
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  0x007705c9 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")
at /home/uros/gcc-svn/trunk/gcc/diagnostic.c:1572
#2  0x013311dc 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  0x0146f7c2 in recog_for_combine_1 (pnewpat=0x7fffcdd0,
insn=0x7091dd80, pnotes=0x7fffce20)
at /home/uros/gcc-svn/trunk/gcc/combine.c:11451
#4  0x014704df in recog_for_combine
(pnewpat=pnewpat@entry=0x7fffcdd0, insn=insn@entry=0x7091dd80, 
pnotes=pnotes@entry=0x7fffce20) at
/home/uros/gcc-svn/trunk/gcc/combine.c:11651
#5  0x01483ecd in try_combine (i3=0x7091dd80, i2=,
i1=0x0, i0=0x0, 

The problematic part is in combine, where:

#4  0x014704df in recog_for_combine
(pnewpat=pnewpat@entry=0x7fffcdd0, insn=insn@entry=0x7091dd80, 
pnotes=pnotes@entry=0x7fffce20) 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  0x0146f7c2 in recog_for_combine_1 (pnewpat=0x7fffcdd0,
insn=0x7091dd80, pnotes=0x7fffce20)
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.

[Bug target/88051] internal compiler error: in add_clobbers, at config/i386/sync.md:1762

2018-11-15 Thread ubizjak at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88051

Uroš Bizjak  changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
   Assignee|unassigned at gcc dot gnu.org  |ubizjak at gmail dot com
   Target Milestone|--- |7.4

--- Comment #2 from Uroš Bizjak  ---
(In reply to Uroš Bizjak from comment #1)
> It doesn't look like a target problem to me.

Ouch... one (parallel) too many.

--cut here--
Index: config/i386/sse.md
===
--- config/i386/sse.md  (revision 266189)
+++ config/i386/sse.md  (working copy)
@@ -1235,10 +1235,9 @@
 ;; from there.

 (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"))])]
+  [(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"
--cut here--

[Bug target/88051] internal compiler error: in add_clobbers, at config/i386/sync.md:1762

2018-11-16 Thread uros at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88051

--- Comment #3 from uros at gcc dot gnu.org ---
Author: uros
Date: Fri Nov 16 16:42:16 2018
New Revision: 266218

URL: https://gcc.gnu.org/viewcvs?rev=266218&root=gcc&view=rev
Log:
PR target/88051
* config/i386/i386.md (floatunsdidf2): Allow only 64bit AVX512F
targets.
* config/i386/sse.md (UNSPEC_MOVDI_TO_SSE): New UNSPEC.
(movdi_to_sse): Rewrite using UNSPEC_MOVDI_TO_SSE unspec.


Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/i386/i386.md
trunk/gcc/config/i386/sse.md

[Bug target/88051] internal compiler error: in add_clobbers, at config/i386/sync.md:1762

2018-11-22 Thread uros at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88051

--- Comment #4 from uros at gcc dot gnu.org ---
Author: uros
Date: Thu Nov 22 21:45:01 2018
New Revision: 266392

URL: https://gcc.gnu.org/viewcvs?rev=266392&root=gcc&view=rev
Log:
Backport from mainline
2018-11-16  Uros Bizjak  

PR target/88051
* config/i386/sse.md (UNSPEC_MOVDI_TO_SSE): New UNSPEC.
(movdi_to_sse): Rewrite using UNSPEC_MOVDI_TO_SSE unspec.


Modified:
branches/gcc-8-branch/gcc/ChangeLog
branches/gcc-8-branch/gcc/config/i386/sse.md
branches/gcc-8-branch/gcc/testsuite/ChangeLog

[Bug target/88051] internal compiler error: in add_clobbers, at config/i386/sync.md:1762

2018-11-22 Thread uros at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88051

--- Comment #5 from uros at gcc dot gnu.org ---
Author: uros
Date: Thu Nov 22 22:46:54 2018
New Revision: 266393

URL: https://gcc.gnu.org/viewcvs?rev=266393&root=gcc&view=rev
Log:
Backport from mainline
2018-11-16  Uros Bizjak  

PR target/88051
* config/i386/sse.md (UNSPEC_MOVDI_TO_SSE): New UNSPEC.
(movdi_to_sse): Rewrite using UNSPEC_MOVDI_TO_SSE unspec.


Modified:
branches/gcc-7-branch/gcc/ChangeLog
branches/gcc-7-branch/gcc/config/i386/sse.md

[Bug target/88051] internal compiler error: in add_clobbers, at config/i386/sync.md:1762

2018-11-22 Thread ubizjak at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88051

Uroš Bizjak  changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

--- Comment #6 from Uroš Bizjak  ---
Fixed everywhere.