================
@@ -1043,55 +1057,42 @@ void printAddressSpaceValue(mlir::AsmPrinter &p,
llvm_unreachable("unexpected address-space attribute kind");
}
-cir::TargetAddressSpaceAttr
-cir::toCIRTargetAddressSpace(mlir::MLIRContext &context, clang::LangAS langAS)
{
- return cir::TargetAddressSpaceAttr::get(
- &context,
- IntegerAttr::get(&context,
- llvm::APSInt(clang::toTargetAddressSpace(langAS))));
-}
+mlir::ptr::MemorySpaceAttrInterface
+cir::toCIRAddressSpaceAttr(mlir::MLIRContext *ctx, clang::LangAS langAS) {
+ using clang::LangAS;
-bool cir::isMatchingAddressSpace(cir::TargetAddressSpaceAttr cirAS,
- clang::LangAS as) {
- // If there is no CIR target attr, consider it "default" and only match
- // when the AST address space is LangAS::Default.
- if (!cirAS)
- return as == clang::LangAS::Default;
+ if (langAS == LangAS::Default)
+ return {}; // Default address space is represented as an empty attribute.
- if (!isTargetAddressSpace(as))
- return false;
+ if (clang::isTargetAddressSpace(langAS)) {
+ unsigned targetAS = clang::toTargetAddressSpace(langAS);
+ return cir::TargetAddressSpaceAttr::get(ctx, targetAS);
+ }
- return cirAS.getValue().getUInt() == toTargetAddressSpace(as);
+ return cir::LangAddressSpaceAttr::get(ctx, toCIRLangAddressSpace(langAS));
}
-mlir::ParseResult parseTargetAddressSpace(mlir::AsmParser &p,
- cir::TargetAddressSpaceAttr &attr) {
- if (failed(p.parseKeyword("target_address_space")))
- return mlir::failure();
-
- if (failed(p.parseLParen()))
- return mlir::failure();
-
- int32_t targetValue;
- if (failed(p.parseInteger(targetValue)))
- return p.emitError(p.getCurrentLocation(),
- "expected integer address space value");
+bool cir::isMatchingAddressSpace(mlir::MLIRContext &ctx,
+ mlir::ptr::MemorySpaceAttrInterface cirAS,
+ clang::LangAS as) {
+ return cir::toCIRAddressSpaceAttr(&ctx, as) == cirAS;
+}
- if (failed(p.parseRParen()))
- return p.emitError(p.getCurrentLocation(),
- "expected ')' after address space value");
+//===----------------------------------------------------------------------===//
+// PointerType Definitions
+//===----------------------------------------------------------------------===//
- mlir::MLIRContext *context = p.getBuilder().getContext();
- attr = cir::TargetAddressSpaceAttr::get(
- context, p.getBuilder().getUI32IntegerAttr(targetValue));
- return mlir::success();
-}
+mlir::LogicalResult cir::PointerType::verify(
+ llvm::function_ref<mlir::InFlightDiagnostic()> emitError,
+ mlir::Type pointee, mlir::ptr::MemorySpaceAttrInterface addrSpace) {
+ if (addrSpace) {
+ if (!isSupportedCIRMemorySpaceAttr(addrSpace)) {
+ return emitError() << "unsupported address space attribute; expected "
+ "'target_address_space' or 'lang_address_space'";
+ }
+ }
-// The custom printer for the `addrspace` parameter in `!cir.ptr`.
-// in the format of `target_address_space(N)`.
-void printTargetAddressSpace(mlir::AsmPrinter &p,
- cir::TargetAddressSpaceAttr attr) {
- p << "target_address_space(" << attr.getValue().getUInt() << ")";
----------------
koparasy wrote:
Why do we not need this anymore?
https://github.com/llvm/llvm-project/pull/179073
_______________________________________________
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits