Я пытаюсь реализовать язык Kaleidoscope , используя чистый C API.Учебное пособие использует следующий код c ++ для создания условия if
:
...
BasicBlock *ThenBB = BasicBlock::Create(TheContext, "then", TheFunction);
BasicBlock *ElseBB = BasicBlock::Create(TheContext, "else");
...
TheFunction->getBasicBlockList().push_back(ElseBB);
ThenBB
базовый блок создается с непосредственной вставкой в TheFunction
.Блок ElseBB
создается и вставляется в функцию после некоторого кода.
Я пытаюсь выяснить, как вставить существующий базовый блок в TheFunction
, используя чистый C API.Я не могу найти альтернативную функцию.
Существует функция void LLVMGetBasicBlocks(LLVMValueRef Fn, LLVMBasicBlockRef *BasicBlocks)
, которая может помочь вам получить все основные блоки, но я уверен, что основной блок не будет добавлен к TheFunction
, если я добавлю ElseBB
кBasicBlocks
.