LLVM 7.0.0中GetElementPtrTypeIterator的FIXME注释含义及处理疑问
关于LLVM GetElementPtrTypeIterator中FIXME注释的说明
- 这个FIXME是LLVM开发团队在4.0版本周期前留下的待办标记,原本计划在4.0版本发布后,将
getIndexedType()的功能迁移到迭代器的operator*()方法中,替换掉旧版operator*()的语义。 - 之所以到7.0.0版本还没落实,是因为早期版本的
operator*()返回的是迭代器指向的索引值,和getIndexedType()的功能完全不同。直接修改会导致依赖旧语义的代码编译失败或行为异常,为了保持向后兼容性,开发团队一直推迟了这个变更。 - 针对你的疑问:
- 如果你只是使用LLVM的普通开发者:完全不用管这个FIXME,继续用
getIndexedType()就好,这是当前版本下获取索引类型的标准方式,不会有任何问题。 - 如果你是LLVM代码贡献者:可以考虑发起这个修改——把
getIndexedType()的实现逻辑移到operator*()里,同时可以保留getIndexedType()作为兼容接口(比如用inline函数包装operator*()),但要遵循LLVM社区的兼容性规范,确保不会破坏现有项目的编译和运行。
- 如果你只是使用LLVM的普通开发者:完全不用管这个FIXME,继续用
- 额外说明:LLVM源码里的FIXME大多是开发团队的内部待办项,除非你是参与LLVM核心开发,否则不需要用户自行处理这类涉及API变更的标记。
内容的提问来源于stack exchange,提问作者user10144801
相关产品推荐
相关产品推荐

