http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45847
belagod at gcc dot gnu.org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |belagod at gcc dot gnu.org --- Comment #1 from belagod at gcc dot gnu.org 2010-10-05 13:36:16 UTC --- (In reply to comment #0) > The following sample causes gcc ICE on arm > > int decode_subframe_lpc(int channel, int pred_order) > { > int i, j; > int qlevel; > int coeffs[pred_order]; > int *decoded = channel; > long long sum; > for (i = pred_order; i < channel; i++) { > for (j = 0; j < pred_order; j++) > sum += (long long)coeffs[j] * decoded[i-j-1]; > decoded[i] += sum >> qlevel; > } > > return 0; > } > > here is the commandline to reproduce it, it only happens at O3 > > arm-none-linux-gnueabi-gcc-4.6.0 -march=armv7-a -mtune=cortex-a8 -mfpu=neon > -mfloat-abi=softfp flacdec.i -c -O3 > > > here is backtrace > > Analyzing compilation unit > Performing interprocedural optimizations > <*free_lang_data> <visibility> <early_local_cleanups> <increase_alignment> > <whole-program> <ipa-profile> <cp> <inline> <pure-const> > <static-var>Assembling > functions: > decode_subframe_lpc > Program received signal SIGSEGV, Segmentation fault. > 0x085bfa6a in supportable_widening_operation (code=WIDEN_MULT_EXPR, > stmt=0xb7f942d8, vectype_out=0x0, vectype_in=0xb7de8660, > decl1=0xbffff26c, > decl2=0xbffff26c, code1=0xbffff268, code2=0xbffff268, > multi_step_cvt=0xbffff264, interm_types=0xbffff260) > at > /home/kraj/work/cross/arm-none-linux-gnueabi/../../gcc-trunk/gcc/tree-vect-stmts.c:5193 > 5193 if (insn_data[icode1].operand[0].mode != TYPE_MODE (wide_vectype) > > > here is the compiler configure > > $ arm-none-linux-gnueabi-gcc-4.6.0 -v > Using built-in specs. > COLLECT_GCC=arm-none-linux-gnueabi-gcc-4.6.0 > COLLECT_LTO_WRAPPER=/home/kraj/work/cross/arm-none-linux-gnueabi/tools/libexec/gcc/arm-none-linux-gnueabi/4.6.0/lto-wrapper > Target: arm-none-linux-gnueabi > Configured with: > /home/kraj/work/cross/arm-none-linux-gnueabi/../../gcc-trunk/configure > --target=arm-none-linux-gnueabi > --prefix=/home/kraj/work/cross/arm-none-linux-gnueabi/tools > --with-sysroot=/home/kraj/work/cross/arm-none-linux-gnueabi/sysroot > --enable-__cxa_atexit --disable-libssp --disable-libgomp --disable-libmudflap > --enable-languages=c,c++ > Thread model: posix > gcc version 4.6.0 20100927 (experimental) (GCC) I've just posted a patch that fixes this. See http://gcc.gnu.org/ml/gcc-patches/2010-10/msg00323.html