Raf*_*fid 5 memory-management llvm
我正在努力寻找如何释放 LLVM 函数分配的内存。例如,当我调用函数Function::Create()创建LLVM函数时,如何释放分配给它的内存?实际上这同样适用于许多 LLVM 函数IRBuilder::CreateAlloca(),如IRBuilder::CreateStore()、 等。有什么想法吗?
首先,删除任何类型的时Value,请确保它不再包含任何Users。显然,删除使用的值会导致错误(以断言的形式)。getNumUses()这可以通过调用或 better(读:更快) 轻松测试hasNUses(0)。
当您确定不再使用您的值时,不同类型的值有时需要不同的方法来删除它们。对于你的两种情况:
Functions 可以通过调用简单地删除operator delete。这可确保该函数从Module.Instructions 应通过调用 来删除eraseFromParent()。或者,等效地,首先调用removeFromParent()然后手动删除它。