diff --git a/targets/TARGET_NXP/TARGET_LPC11UXX/device/cmsis_nvic.c b/targets/TARGET_NXP/TARGET_LPC11UXX/device/cmsis_nvic.c index 4127988d62..5f6802e6d2 100644 --- a/targets/TARGET_NXP/TARGET_LPC11UXX/device/cmsis_nvic.c +++ b/targets/TARGET_NXP/TARGET_LPC11UXX/device/cmsis_nvic.c @@ -60,7 +60,8 @@ void NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) { // Copy and switch to dynamic vectors if first time called if((LPC_SYSCON->SYSMEMREMAP & 0x3) != 0x1) { - uint32_t *old_vectors = (uint32_t *)0; // FLASH vectors are at 0x0 + // Add volatile qualifier to avoid armclang aggressive optimization + volatile uint32_t *old_vectors = (uint32_t *)0; // FLASH vectors are at 0x0 for(i = 0; i < NVIC_NUM_VECTORS; i++) { vectors[i] = old_vectors[i]; }