gpt4 book ai didi

llvm - 为什么 Module::getOrInsertFunction 返回一个指向 Constant 的指针

转载 作者:行者123 更新时间:2023-12-02 02:33:42 31 4
gpt4 key购买 nike

LLVM 中的 Module::getOrInsertFunction 有如下 4 种变体,它们都返回 Constant*。为什么在创建 Function 时返回指向 Constant 的指针?

常量 * getOrInsertFunction (StringRef Name, FunctionType *T, AttributeSet AttributeList)

最佳答案

documentation阅读:

Four possibilities: 1. If it does not exist, add a prototype for the function and return it. 2. If it exists, and has a local linkage, the existing function is renamed and a new one is inserted. 3. Otherwise, if the existing function has the correct prototype, return the existing function. 4. Finally, the function exists but has the wrong prototype: return the function with a constantexpr cast to the right prototype.

对于情况 4,返回值是 ConstantExpr*,而不是 Function*。因此,返回类型是 Constant*,即公共(public)父类(super class)。

关于llvm - 为什么 Module::getOrInsertFunction 返回一个指向 Constant 的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35163367/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com