ПМСМ, кроме того, чтобы явно задать размещение константы, нужно объяснить компилятору, что она нужна тебе зачем-то ещё, чего компилятор не видит. Я за агрессивную оптимизацию. Пусть выкидывает. А если, как у ТС, константу необходимо использовать, то необходимо квалифицировать её как
volatile. Например, я могу разместить константу в ПЗУ нарочно и только лишь потому, что знаю, что у меня ОЗУ маловато. А если компилятор придумает как её вообще выкинуть - пожалуйста, пусть выкидывает! А если будет нужно, чтобы использовал принудительно, у меня будет volatile const. И лишь если так всё равно выкидывает, то ругаться с техподдержкой.
-=-
Как я понимаю, ТС нужно всё-таки поругаться, проблема не в том, что компилятор что-то выкидывает, а в том, что вызывает исключение неверным обращением к памяти, не учитывая должным образом размещение константы в ПЗУ, из-за чего используется недействительный указатель. Правильно было бы назвать тему: "IAR версия такая-то, hardfault указателя на константу в ПЗУ".
ТС сообщил, что у него "не работает", оказывается, hard fault, лишь здесь:
http://caxapa.ru/919504.html, когда уже обсуждение разгорелось.