ICE on code that uses vld4q_s16() NEON intrinsic
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Linaro GCC |
Fix Released
|
Medium
|
Richard Sandiford | ||
4.5 |
Fix Released
|
Medium
|
Richard Sandiford | ||
4.6 |
Fix Released
|
Medium
|
Richard Sandiford | ||
Linaro GCC Tracking |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
ICE found in a compiler built from source very close to Linaro GCC 4.6 2011.06, when compiling a reimplementation of libjpeg-turbo trunk's iDCT using GCC NEON intrinsics (instead of hand-coded assembly). Attachments: original preprocessed source code, the result of stripping it down with delta, and the latter with enough missing bits restored to remove compiler warnings. The latter exhibits a somewhat different ICE. I was able to compile the original with an otherwise similarly patched variant of Linaro GCC 4.5 2011.05.
Original ICE:
build@ctbu-
linux-gnueabi/
jsimd_arm.
jsimd_arm.i: In function 'jsimd_idct_ifast':
jsimd_arm.
ICE on the delta-stripped version:
build@ctbu-
jsimd_arm-min13.i: In function 'vdupq_n_s16':
jsimd_arm-
jsimd_arm-min13.i: At top level:
jsimd_arm-
jsimd_arm-min13.i: In function 'jsimd_idct_ifast':
jsimd_arm-
jsimd_arm-
jsimd_arm-
jsimd_arm-
jsimd_arm-
jsimd_arm-
jsimd_arm-
jsimd_arm-
jsimd_arm-
jsimd_arm-
ICE on the repaired version:
build@ctbu-
jsimd_arm-min12.i: In function 'jsimd_idct_ifast':
jsimd_arm-
(insn 107 21 22 2 (set (mem/s/c:XI (post_inc:SI (reg/f:SI 4 r4 [182])) [0 MEM[(struct int8x8x4_t *)&coef].__o+0 S64 A128])
(reg:XI 63 s0)) jsimd_arm-
(expr_
(nil)))
jsimd_arm-
Related branches
- Linaro Toolchain Developers: Pending requested
-
Diff: 126 lines (+78/-13)3 files modifiedChangeLog.linaro (+14/-0)
gcc/reload1.c (+3/-13)
gcc/testsuite/gcc.target/arm/neon-modes-3.c (+61/-0)
- Linaro Toolchain Developers: Pending requested
-
Diff: 126 lines (+78/-13)3 files modifiedChangeLog.linaro (+14/-0)
gcc/reload1.c (+3/-13)
gcc/testsuite/gcc.target/arm/neon-modes-3.c (+61/-0)
Changed in gcc-linaro: | |
status: | New → Triaged |
Changed in gcc-linaro: | |
status: | Triaged → In Progress |
importance: | Undecided → Medium |
assignee: | nobody → Richard Sandiford (rsandifo) |
Changed in gcc-linaro: | |
status: | In Progress → Fix Committed |
milestone: | none → 4.6-2011.07 |
Result of repeated delta runs: 52-line minimal test case (with uninitialized variables and other compiler warnings).