правила упаковки битовых полей - PullRequest
0 голосов
/ 29 ноября 2018

Я создаю проход LLVM, который должен знать, какой тип используется для размещения нескольких битовых полей в LLVM IR.Я провел несколько экспериментов и получил следующий результат:

enter image description here

enter image description here

Этот результат ожидается, поскольку llvm IR может использовать для упаковки тип i8два поля.Однако следующий эксперимент смущает меня.

enter image description here

enter image description here

Разве эти поля не должны подходить в {i8, i8} вместо одного i16?

Более интересный эксперимент с кодом ядра:

enter image description here

enter image description here

Как показано выше, все битовые поля помещаются в один i32,

Итак, существуют ли какие-либо правила для clang, чтобы решить, какой тип следует использовать для размещения в нескольких битовых полях?

Большое спасибо.

...