Lines Matching defs:fir

25 namespace fir {
28 } // namespace fir
30 using namespace fir;
36 if (fir::isAllocatableType(boxType))
38 if (fir::isPointerType(boxType))
44 getLowerBoundModifier(fir::LowerBoundModifierAttribute modifier) {
46 case fir::LowerBoundModifierAttribute::Preserve:
48 case fir::LowerBoundModifierAttribute::SetToOnes:
50 case fir::LowerBoundModifierAttribute::SetToZeroes:
57 : public mlir::OpRewritePattern<fir::ReboxAssumedRankOp> {
62 mlir::SymbolTable *symbolTable, fir::KindMapping kindMap)
63 : mlir::OpRewritePattern<fir::ReboxAssumedRankOp>(context),
67 matchAndRewrite(fir::ReboxAssumedRankOp rebox,
69 fir::FirOpBuilder builder{rewriter, kindMap, symbolTable};
71 auto newBoxType = mlir::cast<fir::BaseBoxType>(rebox.getType());
75 // !fir.ref<fir.box> input which is expensive with assumed-rank. It could
79 if (fir::isBoxAddress(rebox.getBox().getType()))
80 TODO(loc, "fir.rebox_assumed_rank codegen with fir.ref<fir.box<>> input");
84 auto oldBoxType = mlir::cast<fir::BaseBoxType>(
85 fir::unwrapRefType(rebox.getBox().getType()));
86 auto newDerivedType = mlir::dyn_cast<fir::RecordType>(newEleType);
87 if (newDerivedType && !fir::isPolymorphicType(newBoxType) &&
88 (fir::isPolymorphicType(oldBoxType) ||
90 !fir::isPolymorphicType(newBoxType)) {
91 newDtype = builder.create<fir::TypeDescOp>(
102 fir::runtime::genCopyAndUpdateDescriptor(builder, loc, tempDesc,
106 mlir::Value descValue = builder.create<fir::LoadOp>(loc, tempDesc);
114 fir::KindMapping kindMap;
117 class IsAssumedSizeConv : public mlir::OpRewritePattern<fir::IsAssumedSizeOp> {
122 fir::KindMapping kindMap)
123 : mlir::OpRewritePattern<fir::IsAssumedSizeOp>(context),
127 matchAndRewrite(fir::IsAssumedSizeOp isAssumedSizeOp,
129 fir::FirOpBuilder builder{rewriter, kindMap, symbolTable};
132 fir::runtime::genIsAssumedSize(builder, loc, isAssumedSizeOp.getVal());
139 fir::KindMapping kindMap;
144 : public fir::impl::AssumedRankOpConversionBase<AssumedRankOpConversion> {
150 fir::KindMapping kindMap = fir::getKindMapping(mod);