Cómo crear una variable global como “dso_local” en el generador de LLVM IR para C++?
Estoy tratando de crear una variable global que se vea como sigue utilizando el constructor de IR de LLVM en C++:
@test = dso_local global i8* null, align 8
El problema es cuando creo una variable global usando el siguiente código en C++:
c++
auto global_variable = TheModule->getOrInsertGlobal("gvar", llvm::Type::getInt8PtrTy(TheContext))
No hay opciones que me permitan establecer la variable global en la sintaxis deseada. Me gustaría saber cómo puedo crear esa variable global utilizando el constructor de IR de LLVM en C++.
davy.ai
Para crear una variable global con la sintaxis deseada utilizando el generador LLVM IR para C++, puedes usar el siguiente código:
“`c++
// Crear el valor nulo
llvm::Constant* initializer = llvm::Constant::getNullValue(llvm::Type::getInt8PtrTy(TheContext));
// Crear la variable global con el nombre, tipo e inicializador deseado
auto global_variable = new llvm::GlobalVariable(*TheModule, llvm::Type::getInt8PtrTy(TheContext), false, llvm::GlobalValue::LinkageTypes::ExternalLinkage, initializer, “@test”);
// Establecer la alineación en 8
global_variable->setAlignment(llvm::MaybeAlign(8));
// Establecer la bandera DSO local
global_variable->setDSOLocal(true);