This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Hello! Attached patch fixes an oversight, introduced in Revision 192641 [1] that caused following testsuite failure on i686: FAIL: gcc.target/i386/pr44948-2a.c (internal compiler error) FAIL: gcc.target/i386/pr44948-2a.c (test for excess errors) As shown in the PR [2], the referred patch activated the call to emit_block_move that was previously effectively dead code (see how modes of temp and target are checked). emit_block_move ICEs when constant is passed to it, so we got ICE for following arguments: (gdb) p debug_rtx (x) (mem/j/c:BLK (plus:SI (reg/f:SI 54 virtual-stack-vars) (const_int -16 [0xfffffffffffffff0])) [0 a.V4SF+0 S16 A128]) $1 = void (gdb) p debug_rtx (y) (const_vector:V4SF [ (const_double:SF 0.0 [0x0.0p+0]) (const_double:SF 1.0e+0 [0x0.8p+1]) (const_double:SF 2.0e+0 [0x0.8p+2]) (const_double:SF 3.0e+0 [0x0.cp+2]) ]) $2 = void The patch simply removes the call to emit_block_move, while still calling copy_blkmode_from_reg when appropriate. The patch fixes the testsuite failure and produces the same code as gcc-4.7. 2012-11-07 Uros Bizjak <ubizjak@gmail.com> PR middle-end/55235 * expr.c (store_expr): Do not call emit_block_move for non-BLKmode values. Patch was bootstrapped and regression tested on x86_64-pc-linux-gnu {,-m32}. OK for mainline? [1] http://gcc.gnu.org/ml/gcc-cvs/2012-10/msg00764.html [2] http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55235#c3 Uros.
Attachment:
p.diff.txt
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |