- shape: emboxing an array may require shape information (an array's
lower bounds and extents may not be known until runtime),
- slice: an array section can be described with a slice triple,
- - lenParams: for emboxing a derived type with LEN type parameters,
+ - typeparams: for emboxing a derived type with LEN type parameters,
- accessMap: unused/experimental.
}];
AnyReferenceLike:$memref,
Optional<AnyShapeType>:$shape,
Optional<fir_SliceType>:$slice,
- Variadic<AnyIntegerType>:$lenParams,
+ Variadic<AnyIntegerType>:$typeparams,
OptionalAttr<AffineMapAttr>:$accessMap
);
];
let assemblyFormat = [{
- $memref (`(` $shape^ `)`)? (`[` $slice^ `]`)? (`typeparams` $lenParams^)?
+ $memref (`(` $shape^ `)`)? (`[` $slice^ `]`)? (`typeparams` $typeparams^)?
(`map` $accessMap^)? attr-dict `:` functional-type(operands, results)
}];
let extraClassDeclaration = [{
mlir::Value getShape() { return shape(); }
mlir::Value getSlice() { return slice(); }
- bool hasLenParams() { return !lenParams().empty(); }
- unsigned numLenParams() { return lenParams().size(); }
+ bool hasLenParams() { return !typeparams().empty(); }
+ unsigned numLenParams() { return typeparams().size(); }
}];
}
}
auto xbox = rewriter.create<cg::XEmboxOp>(
loc, embox.getType(), embox.memref(), shapeOpers, llvm::None,
- llvm::None, llvm::None, embox.lenParams());
+ llvm::None, llvm::None, embox.typeparams());
LLVM_DEBUG(llvm::dbgs() << "rewriting " << embox << " to " << xbox << '\n');
rewriter.replaceOp(embox, xbox.getOperation()->getResults());
return mlir::success();
}
auto xbox = rewriter.create<cg::XEmboxOp>(
loc, embox.getType(), embox.memref(), shapeOpers, shiftOpers,
- sliceOpers, subcompOpers, embox.lenParams());
+ sliceOpers, subcompOpers, embox.typeparams());
LLVM_DEBUG(llvm::dbgs() << "rewriting " << embox << " to " << xbox << '\n');
rewriter.replaceOp(embox, xbox.getOperation()->getResults());
return mlir::success();
} else {
return op.emitOpError("LEN parameters require CHARACTER or derived type");
}
- for (auto lp : op.lenParams())
+ for (auto lp : op.typeparams())
if (!fir::isa_integer(lp.getType()))
return op.emitOpError("LEN parameters must be integral type");
}