轻松更改 GlobalVariable 的类型

Painlessly change type of a GlobalVariable

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

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

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

无法做到str->RAUW(newStr),因为相同的类型不同。但是,我的代码不使用该数组大小信息,因此仅 "hack" 类型更改应该是安全的。

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

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

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