forked from OSchip/llvm-project
Add support for llvm.constant with StringAttr as value.
These are translated to an llvm::ConstantDataArray on translation to llvm IR proper. -- PiperOrigin-RevId: 249813111
This commit is contained in:
parent
22f1af4400
commit
cb348dff8a
|
@ -110,6 +110,11 @@ llvm::Constant *ModuleTranslation::getLLVMConstant(llvm::Type *llvmType,
|
|||
}
|
||||
return llvm::ConstantVector::get(constants);
|
||||
}
|
||||
if (auto stringAttr = attr.dyn_cast<StringAttr>()) {
|
||||
return llvm::ConstantDataArray::get(
|
||||
llvmModule->getContext(), ArrayRef<char>{stringAttr.getValue().data(),
|
||||
stringAttr.getValue().size()});
|
||||
}
|
||||
mlirModule.getContext()->emitError(loc, "unsupported constant value");
|
||||
return nullptr;
|
||||
}
|
||||
|
|
|
@ -819,3 +819,9 @@ func @intpointerconversion(%arg0 : !llvm.i32) -> !llvm.i32 {
|
|||
llvm.return %2 : !llvm.i32
|
||||
}
|
||||
|
||||
func @stringconstant() -> !llvm<"i8*"> {
|
||||
%1 = llvm.constant("Hello world!") : !llvm<"i8*">
|
||||
// CHECK: ret [12 x i8] c"Hello world!"
|
||||
llvm.return %1 : !llvm<"i8*">
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue