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