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

Uroš Bizjak <ubizjak at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2015-05-10
                 CC|                            |rdsandiford at googlemail dot 
com,
                   |                            |ubizjak at gmail dot com
          Component|target                      |rtl-optimization
     Ever confirmed|0                           |1

--- Comment #1 from Uroš Bizjak <ubizjak at gmail dot com> ---
Confirmed.

#0  internal_error (gmsgid=gmsgid@entry=0x1687d37 "in %s, at %s:%d") at
/home/uros/gcc-svn/trunk/gcc/diagnostic.c:1217
#1  0x00000000011228d4 in fancy_abort (file=file@entry=0x1200878
"/home/uros/gcc-svn/trunk/gcc/vec.h", line=line@entry=618, 
    function=function@entry=0x12a8d80 <void vec_safe_grow<rtx_def const*,
va_heap>(vec<rtx_def const*, va_heap, vl_embed>*&, unsigned int)::__FUNCTION__>
"vec_safe_grow") at /home/uros/gcc-svn/trunk/gcc/diagnostic.c:1291
#2  0x0000000000a747e1 in vec_safe_grow<rtx_def const*, va_heap> (len=17,
v=@0x7fffffffd830: 0x1c84950)
    at /home/uros/gcc-svn/trunk/gcc/vec.h:618
#3  generic_subrtx_iterator<const_rtx_accessor>::add_single_to_queue
(array=..., base=0x7fffffffd7b0, i=i@entry=16, x=<optimized out>)
    at /home/uros/gcc-svn/trunk/gcc/rtlanal.c:107
#4  0x0000000000a7498a in
generic_subrtx_iterator<const_rtx_accessor>::add_subrtxes_to_queue (array=...,
base=<optimized out>, 
    base@entry=0x7fffffffd7b0, end=17, end@entry=1, x=0x7ffff1a1f010) at
/home/uros/gcc-svn/trunk/gcc/rtlanal.c:174
#5  0x0000000000daa055 in next (this=<synthetic pointer>) at
/home/uros/gcc-svn/trunk/gcc/rtl-iter.h:196
#6  ix86_loop_unroll_adjust (nunroll=1, loop=0x7ffff19cb510) at
/home/uros/gcc-svn/trunk/gcc/config/i386/i386.c:51449
#7  0x000000000097f367 in decide_unroll_constant_iterations (flags=<optimized
out>, loop=0x7ffff19cb510)
    at /home/uros/gcc-svn/trunk/gcc/loop-unroll.c:403
#8  decide_unrolling (flags=<optimized out>) at
/home/uros/gcc-svn/trunk/gcc/loop-unroll.c:293
#9  unroll_loops (flags=<optimized out>) at
/home/uros/gcc-svn/trunk/gcc/loop-unroll.c:311

While following patch should be used, it doesn't help. It looks that some
internal limit in RTX iterator is triggered for quite big RTX.

--cut here--
Index: config/i386/i386.c
===================================================================
--- config/i386/i386.c  (revision 222981)
+++ config/i386/i386.c  (working copy)
@@ -51446,7 +51446,7 @@ ix86_loop_unroll_adjust (unsigned nunroll, struct
   for (i = 0; i < loop->num_nodes; i++)
     FOR_BB_INSNS (bbs[i], insn)
       if (NONDEBUG_INSN_P (insn))
-       FOR_EACH_SUBRTX (iter, array, insn, NONCONST)
+       FOR_EACH_SUBRTX (iter, array, PATTERN (insn), NONCONST)
          if (const_rtx x = *iter)
            if (MEM_P (x))
              {
--cut here--

(gdb) f 6
#6  ix86_loop_unroll_adjust (nunroll=1, loop=0x7ffff19cb510) at
/home/uros/gcc-svn/trunk/gcc/config/i386/i386.c:51449
51449           FOR_EACH_SUBRTX (iter, array, PATTERN (insn), NONCONST)
(gdb) p debug_rtx (insn)
(insn 120 119 123 5 (set (reg:V32QI 230)
        (vec_select:V32QI (vec_concat:V64QI (subreg:V32QI (reg:V4DI 225) 0)
                (subreg:V32QI (reg:V4DI 225) 0))
            (parallel [
                    (const_int 8 [0x8])
                    (const_int 40 [0x28])
                    (const_int 9 [0x9])
                    (const_int 41 [0x29])
                    (const_int 10 [0xa])
                    (const_int 42 [0x2a])
                    (const_int 11 [0xb])
                    (const_int 43 [0x2b])
                    (const_int 12 [0xc])
                    (const_int 44 [0x2c])
                    (const_int 13 [0xd])
                    (const_int 45 [0x2d])
                    (const_int 14 [0xe])
                    (const_int 46 [0x2e])
                    (const_int 15 [0xf])
                    (const_int 47 [0x2f])
                    (const_int 24 [0x18])
                    (const_int 56 [0x38])
                    (const_int 25 [0x19])
                    (const_int 57 [0x39])
                    (const_int 26 [0x1a])
                    (const_int 58 [0x3a])
                    (const_int 27 [0x1b])
                    (const_int 59 [0x3b])
                    (const_int 28 [0x1c])
                    (const_int 60 [0x3c])
                    (const_int 29 [0x1d])
                    (const_int 61 [0x3d])
                    (const_int 30 [0x1e])
                    (const_int 62 [0x3e])
                    (const_int 31 [0x1f])
                    (const_int 63 [0x3f])
                ]))) pr66076.c:6 3549 {avx2_interleave_highv32qi}
     (expr_list:REG_DEAD (reg:V4DI 225)
        (nil)))
$15 = void

Adding RTX expert to CC.

Reply via email to