轻松更改 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
特别讨厌。
在我的 IR 中有一个字符串全局常量:
@.str = private unnamed_addr constant [6 x i8] c"Hello[=10=]", align 1
此常量用于整个模块的不同位置。我需要将它的初始值设定项扩展几个字节。有一个 GlobalVariable 方法可以更改它 (setInitializer()
),但它不起作用,因为新的初始化程序具有不同的大小,因此类型也不同。
无法做到str->RAUW(newStr)
,因为相同的类型不同。但是,我的代码不使用该数组大小信息,因此仅 "hack" 类型更改应该是安全的。
有没有一种简单的方法可以做到这一点而无需重写我的整个 IR?
我还没有找到任何简单的方法来做到这一点,但否定的答案也是一个答案。
我最终仔细地重写了整个模块。 PHIInst
特别讨厌。