Объекты LLVM String Value: Как получить строку из значения?

При построении IR из существующего AST, мой AST имеет некоторые строковые значения (при компиляции они строятся из std::string) и я хочу безопасно установить их как llvm::Value для использования в качестве части выражения.

В этом случае мне не нужно связывать строку во время выполнения, потому что строковые значения предназначены только для того, чтобы разрешать вещи как переменные, функции или классы во время компиляции (язык не поддерживает собственный строковый тип).

Каков наилучший способ сохранить содержимое моей строки как llvm::Value и по-прежнему иметь возможность извлечь его на более поздних этапах компиляции (когда строятся вложенные выражения)?

Более конкретно, если я задам llvm::Value с:

 llvm::Value* v = llvm::ConstantArray::get(llvmContext, myString.c_str());

Как мне безопасно извлечь значение строки? Является ли llvm::ConstantArray подходящим способом обертывания строк?

10
задан Flow 30 April 2015 в 10:12
поделиться