c++ - 轻松更改 GlobalVariable 的类型

标签 c++ compiler-construction global-variables llvm

在我的 IR 中我有一个字符串全局常量:

@.str = private unnamed_addr constant [6 x i8] c"Hello\00", align 1

这个常量在整个模块的不同地方使用。我需要将它的初始值设定项扩展几个字节。有一个 GlobalVariable 方法可以更改它 (setInitializer()),但它不起作用,因为新的初始化程序具有不同的大小,因此具有不同的类型。

不可能执行 str->RAUW(newStr) 因为相同的类型差异。但是,我的代码不使用该数组大小信息,因此仅“破解”类型更改应该是安全的。

有没有一种简单的方法可以做到这一点而无需重写我的整个 IR?

最佳答案

我还没有找到任何简单的方法来做到这一点,但否定的答案也是一个答案。

我最终仔细地重写了整个模块。 PHIInst 特别讨厌。

关于c++ - 轻松更改 GlobalVariable 的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50027905/

相关文章:

c++ - Cin对象返回值c++

python字符串到函数: globals() vs sys.模块与字典

javascript - Node.js 全局变量属性被清除

python - 如何让终端更新脚本中的变量?

c++ - 自动创建 C++ 构造函数?

visual-studio - Visual Studio 2005 : is there a compiler option to initialize all stack-based variables to zero?

c++ - C++11 中的统一初始化和默认构造函数参数

c++ - curl_easy_perform() 失败 : Couldn't connect to server

c++ - blowfish 和 twofish 是逐字节加密的吗?

java - 继承中的循环检测