C++ LLVM错误:找到已损坏的函数,编译已中止!在移除父对象()之后
我有一个test.c文件,其中包含以下函数调用:C++ LLVM错误:找到已损坏的函数,编译已中止!在移除父对象()之后,c++,c,llvm,llvm-clang,llvm-ir,C++,C,Llvm,Llvm Clang,Llvm Ir,我有一个test.c文件,其中包含以下函数调用: functiontest(2,x); 我想删除此函数调用(使用llvm过程),当我尝试使用removeFromParent()函数时,如下所示: calledFunction1->removeFromParent(); 这会导致LLVM产生以下错误: 引用其他模块中的函数 调用functiontest时无效(i32 2,浮点%tmp15) LLVM错误:找到已损坏的函数,编译已中止 我还尝试调用了橡皮擦fromParent(),但这会触
functiontest(2,x);
我想删除此函数调用(使用llvm过程),当我尝试使用removeFromParent()函数时,如下所示:
calledFunction1->removeFromParent();
这会导致LLVM产生以下错误:
引用其他模块中的函数调用functiontest时无效(i32 2,浮点%tmp15) LLVM错误:找到已损坏的函数,编译已中止 我还尝试调用了橡皮擦fromParent(),但这会触发断言: 断言'use_empty()&&“值销毁时保留使用!”“失败 我更喜欢使用removeFromParent()
有什么问题吗?首先,如果您能发布一个最小的代码示例来演示您的问题,这将非常有帮助。否则,我们只能猜测。尽管有一些意见:
?调用指令也必须被删除,这就是eraseFromParent
所做的
replaceAllosesWith
?否则,使用粘住我只想删除此呼叫,不想删除function@strayrebel:是的,但我不确定你在那里做得对。来自LLVM验证器的错误消息表明所有权已断开。这就是为什么如果你能把你的问题减少到一个最小的代码样本,并向我展示它,那将是最好的选择。是的,当然,我可能没有做正确的事情。也许,我可以试着删除只调用函数的指令。