http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52855
Steinar Midtskogen <stemidts at cisco dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |stemidts at cisco dot com --- Comment #4 from Steinar Midtskogen <stemidts at cisco dot com> 2012-11-16 09:48:36 UTC --- I've run into the same bug. The code below reproduces it: #include <arm_neon.h> static const __attribute__((aligned(16))) int16_t c[][2][8] = { { { 0 }, { 0 } }, { { 0 }, { 0 } }, { { 0 }, { 0 } }, { { 0 }, { 0 } }, { { 0 }, { 0 } }, { { 0 }, { 0 } }, { { 0 }, { 0 } }, { { 0 }, { 0 } } }; int16x8_t test2(int off) { return vld1q_u8((uint8_t*)c[off][0]); } int16x8_t test(int off, uint8_t **c) { static int8_t m[] = { 1, 2, 3 }; long long cf = m[off]; return vld1q_u8((uint8_t*)c[cf]); } Version: 4.6.3 Options: -mapcs-frame -mfloat-abi=softfp -mfpu=neon -flax-vector-conversions -O1 Changing "long long cf" into "int cf" eliminates the crash.