Как получить DataLayout из TargetMachine в LLVM 5.0?

В этот коммит, getDataLayout был удален после устаревания. Каков текущий способ получения DataLayout?

0

Решение

DataLayout также должен быть в модуле, поэтому вытащить его из TargetMachine больше нельзя. То есть в основном все, что строит модуль, должно знать достаточно для построения DataLayout.

1

Другие решения

Я полагаю TargetMachine::createDataLayout() может быть использован.

TargetMachine.h:

const DataLayout createDataLayout() const { return DL; }

Это возвращает копию макета данных, а не константную ссылку.

Во всяком случае, это можно использовать более безопасно, поскольку копия макета данных остается действительной после уничтожения объекта TargetMachine.

Если я правильно помню, DataLyaout не особо большой класс, поэтому накладные расходы на копирование должны быть приемлемыми. Если это окажется проблемой, я рекомендую сохранить копию для очень частого доступа.

1

По вопросам рекламы [email protected]