diff --git a/third_party/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td b/third_party/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td index 573542ba838..66d9ba3f750 100644 --- a/third_party/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td +++ b/third_party/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td @@ -509,8 +509,9 @@ def LLVM_AddressOfOp OpBuilder<"Builder *builder, OperationState &result, GlobalOp global, " "ArrayRef attrs = {}", [{ - build(builder, result, global.getType().getPointerTo(), global.sym_name(), - attrs);}]> + build(builder, result, + global.getType().getPointerTo(global.addr_space().getZExtValue()), + global.sym_name(), attrs);}]> ]; let extraClassDeclaration = [{ diff --git a/third_party/mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp b/third_party/mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp index 00911012c1d..fb4555674eb 100644 --- a/third_party/mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp +++ b/third_party/mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp @@ -825,7 +825,8 @@ static LogicalResult verify(AddressOfOp op) { return op.emitOpError( "must reference a global defined by 'llvm.mlir.global'"); - if (global.getType().getPointerTo() != op.getResult()->getType()) + if (global.getType().getPointerTo(global.addr_space().getZExtValue()) != + op.getResult()->getType()) return op.emitOpError( "the type must be a pointer to the type of the referred global");