无痛地改变全球视体的类型

Painlessly change type of a GlobalVariable

本文关键字:视体 类型 改变 无痛      更新时间:2023-10-16

在我的ir中,我有一个字符串全局常数:

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

这个常数用于整个模块的各个位置。我需要将其初始化器扩展到几个字节。有一种更改它的全局变量方法(setInitializer()(,但它不起作用,因为新的初始化器具有不同的大小,因此类型。

由于类型的差异相同,因此不可能进行str->RAUW(newStr)。但是,我的代码不使用该数组尺寸信息,因此仅" hack"类型更改应该是安全的。

有没有简单的方法可以在不重写我的整个IR?

的情况下进行此操作。

我没有找到任何简单的方法,但是负面答案也是答案。

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