ICE in reload_cse_simplify_operands, at postreload.c:402 with neon optimized code
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Linaro GCC |
Fix Released
|
Medium
|
Ramana Radhakrishnan | ||
gcc |
Confirmed
|
Medium
|
Bug Description
While building neon optimized code
$ cat insn-unsat-constr.c
#include <arm_neon.h>
void test(signed int *output)
{
int16_t * out = (int16_t *) output;
{
int16x4_t a = {0, };
int16x4_t b = {1, };
int16x4x4_t z;
z.val[0] = vadd_s16(a, b);
z.val[1] = vadd_s16(a, b);
z.val[2] = vsub_s16(a, b);
z.val[3] = vadd_s16(a, b);
vst4_
vst4_
}
}
$ arm-linux-
insn-unsat-
insn-unsat-
(insn 40 38 26 2 /usr/lib/
(mem/s/c:OI (pre_dec:SI (reg/f:SI 3 r3 [151])) [0 __b+0 S32 A64])) 786 {*neon_movoi} (expr_list:REG_INC (reg/f:SI 3 r3 [151])
(nil)))
insn-unsat-
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:/
$ arm-linux-
Using built-in specs.
COLLECT_
COLLECT_
Target: arm-linux-gnueabi
Configured with: ../src/configure -v --with-
Thread model: posix
gcc version 4.5.2 (Ubuntu/Linaro 4.5.2-5ubuntu2~
Related branches
- Michael Hope: Disapprove
- Ramana Radhakrishnan (community): Needs Fixing
-
Diff: 32 lines (+15/-0)2 files modifiedChangeLog.linaro (+10/-0)
gcc/config/arm/arm.c (+5/-0)
- Ulrich Weigand (community): Approve
-
Diff: 31 lines (+14/-0)2 files modifiedChangeLog.linaro (+9/-0)
gcc/config/arm/arm.c (+5/-0)
- Ulrich Weigand (community): Approve
-
Diff: 31 lines (+14/-0)2 files modifiedChangeLog.linaro (+9/-0)
gcc/config/arm/arm.c (+5/-0)
Changed in gcc: | |
importance: | Unknown → Medium |
status: | Unknown → Confirmed |
Changed in gcc-linaro: | |
status: | Triaged → In Progress |
assignee: | nobody → Chung-Lin Tang (cltang) |
Changed in gcc-linaro: | |
status: | Fix Committed → Fix Released |
Changed in gcc-linaro: | |
milestone: | 4.5-2011.06-0 → 4.6-2011.07 |
Changed in gcc-linaro: | |
status: | Fix Released → Fix Committed |
assignee: | Chung-Lin Tang (cltang) → Ramana Radhakrishnan (ramana) |
Changed in gcc-linaro: | |
status: | Fix Committed → Fix Released |
Created attachment 23794
preprocessed file
I have following error while building neon optimized code.
$ cat insn-unsat-constr.c
#include <arm_neon.h>
void test(signed int *output)
{
int16_t * out = (int16_t *) output;
{
int16x4_t a = {0, };
int16x4_t b = {1, };
int16x4x4_t z;
z.val[0] = vadd_s16(a, b);
z.val[1] = vadd_s16(a, b);
z.val[2] = vsub_s16(a, b);
z.val[3] = vadd_s16(a, b);
vst4_ lane_s16( &out[0] +0*4, z, 0); lane_s16( &out[8] +0*4, z, 1);
vst4_
}
}
$ arm-none- linux-gnueabi- gcc -mfloat-abi=softfp -mfpu=neon -O1 -o insn-unsat-constr.o -c insn-unsat-constr.c constr. c: In function 'test': constr. c:19:1: error: insn does not satisfy its constraints: compilers/ arm-linux- gnueabi- gcc4.5. 1-2010. 09-50/bin/ ../lib/ gcc/arm- none-linux- gnueabi/ 4.5.1/include/ arm_neon. h:10277 (set (reg:OI 95 d16 [orig:152 __b ] [152]) constr. c:19:1: internal compiler error: in reload_ cse_simplify_ operands, at postreload.c:403
insn-unsat-
insn-unsat-
(insn 40 38 26 2 /scratchbox/
(mem/s/c:OI (pre_dec:SI (reg/f:SI 3 r3 [151])) [0 __b+0 S32 A64])) 740 {*neon_movoi} (expr_list:REG_INC (reg/f:SI 3 r3 [151])
(nil)))
insn-unsat-
Please submit a full bug report,
with preprocessed source if appropriate.
$ arm-none- linux-gnueabi- gcc -v GCC=/scratchbox /compilers/ arm-linux- gnueabi- gcc4.5. 1-2010. 09-50/bin/ arm-none- linux-gnueabi- gcc LTO_WRAPPER= /scratchbox/ compilers/ arm-linux- gnueabi- gcc4.5. 1-2010. 09-50/bin/ ../libexec/ gcc/arm- none-linux- gnueabi/ 4.5.1/lto- wrapper linux-gnueabi nathan/ arm-lite/ src/gcc- 4.5-2010. 09/configure --build= i686-pc- linux-gnu --host= i686-pc- linux-gnu --target= arm-none- linux-gnueabi --enable-threads --disable- libmudflap --disable-libssp --disable- libstdcxx- pch --enable- extra-sgxxlite- multilibs --with-arch=armv5te --with-gnu-as --with-gnu-ld --with- specs=' %{save- temps: -fverbose-asm} %{funwind- tables| fno-unwind- tables| mabi=*| ffreestanding| nostdlib: ;:-funwind- tables} -D__CS_ SOURCERYGXX_ MAJ__=2010 -D__CS_ SOURCERYGXX_ MIN__=9 -D__CS_ SOURCERYGXX_ REV__=50 %{O2:%{ !fno-remove- local-statics: -fremove- local-statics} } %{O*:%{ O|O0|O1| O2|Os:; :%{!fno- remove- local-statics: -fremove- local-statics} }}' --enable- languages= c,c++ --enable-shared --enable-lto --enable- symvers= gnu --enable- __cxa_atexit --with- pkgversion= 'Sourcery G++ Lite 2010.09-50' --with-bugurl=https:/ /support. codesourcery. com/GNUToolchai n/ --disable-nls --prefix= /opt/codesource ry --with- sysroot= /opt/codesource ry/arm- none-linux- gnueabi/ libc --with- build-sysroot= /scratch/ nathan/ arm-lite/ install/ arm-none- linux-gnueabi/ libc --with- gmp=/scratch/ nathan/ arm-lite/ obj/host- libs-2010. 09-50-arm- none-linux- gnueabi- i686-pc- linux-gnu/ usr --with- mpfr=/scratch/ nathan/ arm-lite/ obj/host- libs-2010. 09-50-arm- none-linux- gnueabi- i686-pc- linux-gnu/ usr --with- mpc=/scratch/ nathan/ arm-lite/ obj/host- libs-2010. 09-50-arm- none-linux- gnueabi- i686-pc- linux-gnu/ usr --with- ppl=/scratch/ nathan/ arm-lite/ obj/host- libs-2010. 09-50-arm- none-linux- gnueabi- i686-pc- linux-gnu/ usr --with- host-libstdcxx= '-static- libgcc -Wl,-Bstatic, -lstdc+ +,-Bdynamic -lm' --with- cloog=/ scratch/ nathan/ arm-lite/ obj/host- libs-2010. 09-50-arm- none-linu. ..
Using built-in specs.
COLLECT_
COLLECT_
Target: arm-none-
Configured with: /scratch/