Just after posting this, I found this application note
http://supp.iar.com/Support/?note=37778&from=search+result
If the application has much (over 4k) of global initialized data, then the initialization within cstartup will not be finished before the watchdog times out (and the device is reset).
and
The solution
The Watchdog timer must be turned off before the initialization phase. This should preferably be done in __low_level_init.
The steps (for F1610, F1611 or F1612)
Copy of the file "low_level_init.c" (from ...\430\src\lib\) to your project directory.
Add the copied "low_level_init.c" file to your project.
Edit your copy of the "low_level_init.c" file
In the file you need to add, either...
#include <msp430x16x.h>
...or add...
#include <io430x16x.h>
You should add, in the __low_level_init() function.
WDTCTL = WDTPW + WDTHOLD;