Как определить модель памяти в llvm?

Рейтинг: 1Ответов: 0Опубликовано: 07.03.2023

Как известно, в С++ нельзя просто так взять адрес указателя как число, увеличить его на размер элемента и получить адрес следующего элемента в памяти.
Как я понимаю, это связано с поддержкой специфических архитектур, где смещение элемента в сегменте может кодироваться не в младших битах.

Но если я хочу написать код на llvm IR и манипулировать адресами указателей как целыми числами "полноценно" (без UB, следующий элемент в памяти всегда располагается по адресу предыдущего + размер элемента), можно ли заставить llvm "определить" это поведение (пусть и ценой производительности/утраты поддержки некоторых архитектур)?

От чего вообще это зависит? От набора команд процессора? От ОС?

Ответы

Ответов пока нет.