Al construir el IR desde un AST existente, mi AST tiene algunos valores de cadena (en tiempo de compilación están construidos desde std::string
) y quiero configurarlos de manera segura como llvm::Value
para usar como parte de una expresión.Objetos de valor de cadena LLVM: ¿Cómo puedo recuperar la cadena de un valor?
En este caso, no es necesario vincular la cadena en tiempo de ejecución, porque los valores de cadena solo sirven para resolver cosas como variables, funciones o clases en tiempo de compilación (el lenguaje no admite una versión nativa tipo de cuerda).
Cuál es la mejor manera de mantener el contenido de mi cadena como llvm::Value
y todavía ser capaz de recuperarlo en etapas posteriores de la compilación (cuando las expresiones de anidación se construyen)?
Más concretamente, si fijo el llvm::Value
con:
llvm::Value* v = llvm::ConstantArray::get(llvmContext, myString.c_str());
¿Cómo puedo recuperar con seguridad el valor de la cadena? ¿Es llvm::ConstantArray
la forma adecuada de ajustar cadenas?