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.