Язык LLVM задает целочисленные типы как iN, где N - битовая ширина целого числа и составляет от 1 до 2 ^ 23-1 (Согласно: http://llvm.org/docs/LangRef.html#integer-type)
У меня есть 2 вопроса:
-
При компиляции программы на C до уровня LLVM IR, какие типы могут быть снижены до i1, i2, i3 и т.д.? Кажется, что типов i8, i16, i32, i64 должно быть достаточно, поэтому мне было интересно, для чего все остальные около 8 миллионов целых типов.
-
Верно ли, что как подписанные, так и беззнаковые целочисленные типы опускаются до i32? В чем причина этого и почему это не относится к чему-то вроде 32-битного float (который представлен как f32 в LLVM)?