Это не совсем то, что вам нужно, но в LLVM есть механизм для запроса целевой платформы о размерах, называемый DataLayout .Вот некоторый код, который я использую для генерации отладочной информации:
const DataLayout & dl = getModule().getDataLayout();
uint sizeInBits = 0;
if(...)
sizeInBits = dl.getStructLayout(getObjectStructType())->getSizeInBits();
...
DataLayout не предлагает единого размера для целых, потому что ЦП может иметь несколько в качестве текущих членовСемейство Intel 4004 делает.
Все действующие члены IIRC предлагают 8-битные, 16-битные, 32-битные и 64-битные типы с использованием более или менее расширенных версий одних и тех же регистров (AL, AX, EAX, RAX), с одинаковой производительностью для всех операций, кроме чтения / записи в память.Но вы можете спросить LLVM, какие из 16/32/48/64 хороши , а затем выбрать подходящий размер int.