Tool/software:
We have observed that the compiler does not continue compiling functions if the address 0x00000000 (NULL) is written within them.
This behaviour occurs when compiling with optimization level "-O1" (we have not tested with higher optimization levels):

The optimization level "-O0" is not affected by this:

We are aware that writing to the address 0x00000000 (reset vector) is not allowed, but we do not assume such behavior.
In particular, the compiler does not report any warnings or errors in this case.
To reproduce this issue on your side, we have modified the example "led_ex1_blinky.c" of the SDK:
#include "board.h"
int main (void)
{
Device_init();
Board_init();
/* Compiler stops compilation of `main()` at this point when compiling with optimization level `-O1`.
* No compilation warning or error is reported. However, compiling with `-O0` works as expected. */
uint32_t *const addr = NULL;
(*addr) = 0xdeadbeef;
for(;;)
{
GPIO_writePin(myBoardLED1_GPIO, 0);
DEVICE_DELAY_US(1000000);
GPIO_writePin(myBoardLED1_GPIO, 1);
DEVICE_DELAY_US(1000000);
}
}
We use the makefile-based build to build the example: "gmake -s led_ex1_blinky.c PROFILE={debug_O0|debug_O1} CONFIG=FLASH"
Used compiler: "TI C29 Clang Compiler 1.0.0.LTS"
Many thanks in advance.