https://github.com/xlauko created https://github.com/llvm/llvm-project/pull/146662
- Adds CIR_ prefix to the definition - Removes redundant builder and cleans up attribute creations This mirrors incubator changes from https://github.com/llvm/clangir/pull/1726 >From 99f74b960a9416c267e4406de1fa8ff3f9bc5691 Mon Sep 17 00:00:00 2001 From: xlauko <xla...@mail.muni.cz> Date: Wed, 2 Jul 2025 09:56:38 +0200 Subject: [PATCH] [CIR] Clean up FPAttr - Adds CIR_ prefix to the definition - Removes redundant builder and cleans up attribute creations This mirrors incubator changes from https://github.com/llvm/clangir/pull/1726 --- clang/include/clang/CIR/Dialect/IR/CIRAttrs.td | 14 +++++++------- clang/lib/CIR/CodeGen/CIRGenBuilder.cpp | 2 +- clang/lib/CIR/CodeGen/CIRGenExprConstant.cpp | 6 +++--- clang/lib/CIR/CodeGen/CIRGenExprScalar.cpp | 3 +-- 4 files changed, 12 insertions(+), 13 deletions(-) diff --git a/clang/include/clang/CIR/Dialect/IR/CIRAttrs.td b/clang/include/clang/CIR/Dialect/IR/CIRAttrs.td index a042f5cd0c19e..569e62ae11612 100644 --- a/clang/include/clang/CIR/Dialect/IR/CIRAttrs.td +++ b/clang/include/clang/CIR/Dialect/IR/CIRAttrs.td @@ -184,34 +184,34 @@ def CIR_IntAttr : CIR_Attr<"Int", "int", [TypedAttrInterface]> { // FPAttr //===----------------------------------------------------------------------===// -def FPAttr : CIR_Attr<"FP", "fp", [TypedAttrInterface]> { +def CIR_FPAttr : CIR_Attr<"FP", "fp", [TypedAttrInterface]> { let summary = "An attribute containing a floating-point value"; let description = [{ An fp attribute is a literal attribute that represents a floating-point value of the specified floating-point type. Supporting only CIR FP types. }]; + let parameters = (ins AttributeSelfTypeParameter<"", "::cir::FPTypeInterface">:$type, APFloatParameter<"">:$value ); + let builders = [ AttrBuilderWithInferredContext<(ins "mlir::Type":$type, "const llvm::APFloat &":$value), [{ return $_get(type.getContext(), mlir::cast<FPTypeInterface>(type), value); - }]>, - AttrBuilder<(ins "mlir::Type":$type, - "const llvm::APFloat &":$value), [{ - return $_get($_ctxt, mlir::cast<FPTypeInterface>(type), value); - }]>, + }]> ]; + let extraClassDeclaration = [{ static FPAttr getZero(mlir::Type type); }]; - let genVerifyDecl = 1; let assemblyFormat = [{ `<` custom<FloatLiteral>($value, ref($type)) `>` }]; + + let genVerifyDecl = 1; } diff --git a/clang/lib/CIR/CodeGen/CIRGenBuilder.cpp b/clang/lib/CIR/CodeGen/CIRGenBuilder.cpp index b94963c71f9c1..4a5a1dd53a05a 100644 --- a/clang/lib/CIR/CodeGen/CIRGenBuilder.cpp +++ b/clang/lib/CIR/CodeGen/CIRGenBuilder.cpp @@ -63,7 +63,7 @@ cir::ConstantOp clang::CIRGen::CIRGenBuilderTy::getConstFP(mlir::Location loc, mlir::Type t, llvm::APFloat fpVal) { assert(mlir::isa<cir::FPTypeInterface>(t) && "expected floating point type"); - return create<cir::ConstantOp>(loc, getAttr<cir::FPAttr>(t, fpVal)); + return create<cir::ConstantOp>(loc, cir::FPAttr::get(t, fpVal)); } // This can't be defined in Address.h because that file is included by diff --git a/clang/lib/CIR/CodeGen/CIRGenExprConstant.cpp b/clang/lib/CIR/CodeGen/CIRGenExprConstant.cpp index 5fc7a92cd00f9..5b3bf85cefbb0 100644 --- a/clang/lib/CIR/CodeGen/CIRGenExprConstant.cpp +++ b/clang/lib/CIR/CodeGen/CIRGenExprConstant.cpp @@ -698,7 +698,7 @@ mlir::Attribute ConstantEmitter::tryEmitPrivate(const APValue &value, mlir::Type ty = cgm.convertType(destType); assert(mlir::isa<cir::FPTypeInterface>(ty) && "expected floating-point type"); - return cgm.getBuilder().getAttr<cir::FPAttr>(ty, init); + return cir::FPAttr::get(ty, init); } case APValue::Array: { const ArrayType *arrayTy = cgm.getASTContext().getAsArrayType(destType); @@ -798,8 +798,8 @@ mlir::Attribute ConstantEmitter::tryEmitPrivate(const APValue &value, llvm::APFloat real = value.getComplexFloatReal(); llvm::APFloat imag = value.getComplexFloatImag(); return builder.getAttr<cir::ConstComplexAttr>( - complexType, builder.getAttr<cir::FPAttr>(complexElemTy, real), - builder.getAttr<cir::FPAttr>(complexElemTy, imag)); + complexType, cir::FPAttr::get(complexElemTy, real), + cir::FPAttr::get(complexElemTy, imag)); } case APValue::FixedPoint: case APValue::AddrLabelDiff: diff --git a/clang/lib/CIR/CodeGen/CIRGenExprScalar.cpp b/clang/lib/CIR/CodeGen/CIRGenExprScalar.cpp index 06827f84f34d4..6eeecca7e7c8f 100644 --- a/clang/lib/CIR/CodeGen/CIRGenExprScalar.cpp +++ b/clang/lib/CIR/CodeGen/CIRGenExprScalar.cpp @@ -165,8 +165,7 @@ class ScalarExprEmitter : public StmtVisitor<ScalarExprEmitter, mlir::Value> { assert(mlir::isa<cir::FPTypeInterface>(type) && "expect floating-point type"); return builder.create<cir::ConstantOp>( - cgf.getLoc(e->getExprLoc()), - builder.getAttr<cir::FPAttr>(type, e->getValue())); + cgf.getLoc(e->getExprLoc()), cir::FPAttr::get(type, e->getValue())); } mlir::Value VisitCharacterLiteral(const CharacterLiteral *e) { _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits