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.