В такой структуре:
struct point{
int x0;
int y0;
};
Как передать имена x0 и y0 в llvm, когда я создаю llvm :: StructType с API C++?
Вы не можете; в LLVM IR поля структур не имеют имен.
То, что вы можете сделать, зависит от того, чего вы пытаетесь достичь:
Если вы хотите включить отладочную информацию для этих полей, это не совсем правильный подход, вместо этого используйте DIBuilder
для определения типа структуры.
Если вы хотите, чтобы текстовое представление IR (dll) и dump()
более читабельными, вы можете сделать что-то другое - всякий раз, когда к полю обращаются, используйте frontend имя поля для этого значения поля. Например:
%p.py0 = getelementptr %point* %p, i32 0, i32 1
%p.y0 = load i32* %p.py0
getelementptr
который обращается ко getelementptr
полю, имеет имя, которое указывает на его указатель на поле с именем y0
, а нагрузка имеет имя, которое указывает на фактическое поле. Также обратите внимание на то, как имя включает имя переменной, к которой обращаются, для дополнительной удобочитаемости.
AllocaInst
который создает локальную переменную в стеке.