У меня есть код, который ДОЛЖЕН иметь активную оптимизацию времени соединения. Мне нужно постоянное выражение оценки:
extern const char[] PROGMEM constantTable = {1,2,3,4,5};
:
char x = constantTable[4];
(PROGMEM - это конструкция avr-gcc, которая помещает константу в отдельный раздел памяти, который впоследствии загружается во флэш-память, а не в оперативную память, и во время выполнения потребуется особый уход для доступа. Но не в время компиляции ...)
Есть ли какой-нибудь способ, которым я могу обнаружить во время компиляции (или соединения), что -flto НЕ был указан, чтобы я мог выдать сообщение об ошибке?
Я уже сравнил предопределенные символы с -flto и без него, используя трюк "-dM -E", и, похоже, нет никаких отличий. Есть идеи для других трюков?
(должен ли __builtin_constant_p () быть "оценен" во время ссылки для -flto? Это не по состоянию на gcc 5.4.0 (последний компилятор "поддерживаемый вендором").))