http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59273
Bug ID: 59273 Summary: [4.9 Regression] ICE in expand_expr_real_2, at expr.c:9188 on alpha Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: middle-end Assignee: unassigned at gcc dot gnu.org Reporter: ubizjak at gmail dot com Recent change introduced following new testsuite failure (and several others) on alpha-linux-gnu [1]: FAIL: gcc.dg/torture/pr46723.c -O3 -fomit-frame-pointer (internal compiler error) FAIL: gcc.dg/torture/pr46723.c -O3 -fomit-frame-pointer (test for excess errors) ... The failure can be triggered on a crosscompiler from x86_64 to alpha-linux-gnu: $ gcc-build-alpha/gcc/cc1 -O3 -fpreprocessed pr46723.c pr46723.c: In function ‘test’: pr46723.c:4:6: internal compiler error: in expand_expr_real_2, at expr.c:9188 void test() ^ 0x6beb38 expand_expr_real_2(separate_ops*, rtx_def*, machine_mode, expand_modifier) /home/uros/gcc-svn/trunk/gcc/expr.c:9188 0x5e8ed9 expand_gimple_stmt_1 /home/uros/gcc-svn/trunk/gcc/cfgexpand.c:3235 0x5e8ed9 expand_gimple_stmt /home/uros/gcc-svn/trunk/gcc/cfgexpand.c:3295 0x5eafda expand_gimple_basic_block /home/uros/gcc-svn/trunk/gcc/cfgexpand.c:5135 0x5ecf3c gimple_expand_cfg /home/uros/gcc-svn/trunk/gcc/cfgexpand.c:5701 0x5ecf3c execute /home/uros/gcc-svn/trunk/gcc/cfgexpand.c:5921 Please submit a full bug report, (gdb) up #2 0x00000000006beb39 in expand_expr_real_2 (ops=ops@entry=0x7fffffffd9b0, target=0x7ffff19c5100, tmode=<optimized out>, modifier=modifier@entry=EXPAND_NORMAL) at /home/uros/gcc-svn/trunk/gcc/expr.c:9188 9188 gcc_assert (temp); (gdb) list 9183 binop3: 9184 if (modifier == EXPAND_STACK_PARM) 9185 target = 0; 9186 temp = expand_binop (mode, this_optab, op0, op1, target, 9187 unsignedp, OPTAB_LIB_WIDEN); 9188 gcc_assert (temp); 9189 /* Bitwise operations do not need bitfield reduction as we expect their 9190 operands being properly truncated. */ 9191 if (code == BIT_XOR_EXPR 9192 || code == BIT_AND_EXPR (gdb) p debug_rtx (target) (reg:V4HI 130 [ vect_vec_iv_.17 ]) $1 = void (gdb) p debug_rtx (op0) (reg:V4HI 174 [ D.1496 ]) $2 = void (gdb) p debug_rtx (op1) (const_vector:V4HI [ (const_int 0 [0]) (const_int 1 [0x1]) (const_int 2 [0x2]) (const_int 3 [0x3]) ]) $3 = void (gdb) p code $4 = PLUS_EXPR The compiler is trying to blindly generate V4HImode vector addition without checking if the target supports it (alpha doesn't, while it supports V4HImode moves). [1] http://gcc.gnu.org/ml/gcc-testresults/2013-11/msg01763.html