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.

Reply via email to