Как создать именованные метаданные через API llvm-c? - PullRequest
4 голосов
/ 03 ноября 2011

Я хочу добавить отладочные метаданные в мой сгенерированный llvm IR, который создается через C API. Однако я не могу понять, как создавать именованные узлы метаданных (например,! Llvm.dbg.cu) или даже как создавать узлы метаданных с уникальными номерами (т. Е.! 0,! 1 и т. Д.). Добавление операндов метаданных в инструкции выглядит довольно просто, но я не могу понять, как создавать автономные узлы метаданных.

1 Ответ

4 голосов
/ 24 декабря 2011

Как и в LLVM 3.0, в C API отсутствует функция для создания или изменения именованных метаданных. Новая функция (LLVMAddNamedMetadataOperand) была недавно добавлена ​​в API после выпуска 3.0.

Если вам удобно собирать LLVM из исходного кода, вы можете получить эту поддержку из магистрали. См. Страницу Getting Started о том, как построить LLVM. В противном случае вам придется подождать, пока не выйдет LLVM 3.1.

Когда функция будет доступна, вызов будет простым:

LLVMAddNamedMetadataOperand(module, "named_md_name", mdnode);

Если нет именованных метаданных с именем "named_md_name", то они будут созданы. В противном случае существующий объект будет обновлен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...