http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60947
--- Comment #5 from YuFan <yufan8.chen at gmail dot com> --- (In reply to Andrew Pinski from comment #4) > Could there be an out of bounds access in that loop? I traced the code, and the following code is equal to the original one with replacing inline functions. In C code, there would be no possibility to get an out of bounds access. #SNDRV_PCM_HW_PARAM_FIRST_MASK 0 #SNDRV_PCM_HW_PARAM_LAST_MASK 2 for (k = SNDRV_PCM_HW_PARAM_FIRST_MASK; k <= SNDRV_PCM_HW_PARAM_LAST_MASK; k++) { memset(&constrs->masks[k - SNDRV_PCM_HW_PARAM_FIRST_MASK], 0xff, SNDRV_MASK_SIZE * sizeof(u_int32_t)); } > Can you try adding -fno-vrp? I supposed you mean -fno-tree-vrp. I tried it but still has the same issue. The following assembly code snippet is the same as the original one without -fno-tree-vrp =============================================== snd_pcm_hw_constraints_init: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 1, uses_anonymous_args = 0 mov ip, sp stmfd sp!, {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc} sub fp, ip, #4 sub sp, sp, #20 ldr r8, [r0, #112] add r3, r8, #232 add r4, r8, #328 .L1062: mov r0, r3 mov r1, #255 mov r2, #8 bl memset add r3, r0, #32 cmp r3, r4 bne .L1062 mov r3, #0 mov r2, r8 mov r5, r3 mov r4, #12 mvn lr, #0 ===============================================