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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2015-07-20
     Ever confirmed|0                           |1
      Known to fail|                            |6.0

--- Comment #2 from Uroš Bizjak <ubizjak at gmail dot com> ---
Confirmed  with [trunk revision 225993]

~/cc1plus -m32 -mno-sse pr66931.C
pr66931.C:5:1: warning: always_inline function might not be inlinable
[-Wattributes]
 counter(tcounter *self, long, long) {
 ^
ppr66931.C: In function ‘bool test_sp()’:
pr66931.C:6:25: internal compiler error: in convert_move, at expr.c:281
   *(v2di *)self + v2di{};
                         ^
0xb83e07 convert_move(rtx_def*, rtx_def*, int)
        /home/uros/gcc-svn/trunk/gcc/expr.c:281
0xb9aa13 store_expr_with_bounds(tree_node*, rtx_def*, int, bool, tree_node*)
        /home/uros/gcc-svn/trunk/gcc/expr.c:5475
[...]


(gdb) f 2
#2  0x0000000000b83e08 in convert_move (to=0x2aaaae960eb8, from=0x2aaaae9621e0,
unsignedp=0) at /home/uros/gcc-svn/trunk/gcc/expr.c:281
281       gcc_assert (from_mode != BLKmode);
(gdb) list
276                                   : (unsignedp ? ZERO_EXTEND :
SIGN_EXTEND));
277
278
279       gcc_assert (to_real == from_real);
280       gcc_assert (to_mode != BLKmode);
281       gcc_assert (from_mode != BLKmode);
282
283       /* If the source and destination are already the same, then there's
284          nothing to do.  */
285       if (to == from)
(gdb) p debug_rtx (to)
(reg:V4SI 92 [ D.2412 ])
$1 = void
(gdb) p debug_rtx (from)
(mem/c:BLK (plus:SI (reg/f:SI 82 virtual-stack-vars)
        (const_int -32 [0xffffffffffffffe0])) [0 D.2405+0 S16 A128])
$2 = void

This happens due to ISA mismatch, and the compiler warns with:

pr66931.C: At global scope:
pr66931.C:5:1: warning: always_inline function might not be inlinable
[-Wattributes]
 counter(tcounter *self, long, long) {

There is no V4SImode available without -msse, so BLKmode is used instead. IIRC,
we already have a PR about this issue.

Reply via email to