Безболезненно изменить тип GlobalVariable - PullRequest
0 голосов
/ 25 апреля 2018

В моем IR есть строковая глобальная константа:

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

Эта константа используется в разных местах по всему модулю.Мне нужно расширить его инициализатор на несколько байтов.Существует метод GlobalVariable для его изменения (setInitializer()), но он не работает, поскольку новый инициализатор имеет другой размер и, следовательно, тип.

Невозможно сделать str->RAUW(newStr)из-за одинаковой разницы в типах.Тем не менее, мой код не использует эту информацию о размере массива, поэтому было бы безопасно просто «взломать» изменение типа.

Есть ли простой способ сделать это без переписывания всего моего IR?

1 Ответ

0 голосов
/ 27 июля 2018

Я не нашел способа сделать это простым способом, но отрицательный ответ также является ответом.

В итоге я тщательно переписал весь модуль.PHIInst с были особенно неприятными.

...