@@ -287,9 +287,9 @@ struct OpWithBodyGenInfo {
287
287
return *this ;
288
288
}
289
289
290
- OpWithBodyGenInfo &
291
- setReductions ( llvm::SmallVector <const Fortran::semantics::Symbol *> *value1,
292
- llvm::SmallVector <mlir::Type> *value2) {
290
+ OpWithBodyGenInfo &setReductions (
291
+ llvm::SmallVectorImpl <const Fortran::semantics::Symbol *> *value1,
292
+ llvm::SmallVectorImpl <mlir::Type> *value2) {
293
293
reductionSymbols = value1;
294
294
reductionTypes = value2;
295
295
return *this ;
@@ -317,10 +317,10 @@ struct OpWithBodyGenInfo {
317
317
// / [in] if provided, processes the construct's data-sharing attributes.
318
318
DataSharingProcessor *dsp = nullptr ;
319
319
// / [in] if provided, list of reduction symbols
320
- llvm::SmallVector <const Fortran::semantics::Symbol *> *reductionSymbols =
320
+ llvm::SmallVectorImpl <const Fortran::semantics::Symbol *> *reductionSymbols =
321
321
nullptr ;
322
322
// / [in] if provided, list of reduction types
323
- llvm::SmallVector <mlir::Type> *reductionTypes = nullptr ;
323
+ llvm::SmallVectorImpl <mlir::Type> *reductionTypes = nullptr ;
324
324
// / [in] if provided, emits the op's region entry. Otherwise, an emtpy block
325
325
// / is created in the region.
326
326
GenOMPRegionEntryCBFn genRegionEntryCB = nullptr ;
@@ -465,11 +465,9 @@ static void genBodyOfTargetDataOp(
465
465
Fortran::lower::AbstractConverter &converter,
466
466
Fortran::semantics::SemanticsContext &semaCtx,
467
467
Fortran::lower::pft::Evaluation &eval, bool genNested,
468
- mlir::omp::DataOp &dataOp,
469
- const llvm::SmallVector<mlir::Type> &useDeviceTypes,
470
- const llvm::SmallVector<mlir::Location> &useDeviceLocs,
471
- const llvm::SmallVector<const Fortran::semantics::Symbol *>
472
- &useDeviceSymbols,
468
+ mlir::omp::DataOp &dataOp, llvm::ArrayRef<mlir::Type> useDeviceTypes,
469
+ llvm::ArrayRef<mlir::Location> useDeviceLocs,
470
+ llvm::ArrayRef<const Fortran::semantics::Symbol *> useDeviceSymbols,
473
471
const mlir::Location ¤tLocation) {
474
472
fir::FirOpBuilder &firOpBuilder = converter.getFirOpBuilder ();
475
473
mlir::Region ®ion = dataOp.getRegion ();
@@ -816,11 +814,12 @@ genTaskGroupOp(Fortran::lower::AbstractConverter &converter,
816
814
// clause. Support for such list items in a use_device_ptr clause
817
815
// is deprecated."
818
816
static void promoteNonCPtrUseDevicePtrArgsToUseDeviceAddr (
819
- llvm::SmallVector<mlir::Value> &devicePtrOperands,
820
- llvm::SmallVector<mlir::Value> &deviceAddrOperands,
821
- llvm::SmallVector<mlir::Type> &useDeviceTypes,
822
- llvm::SmallVector<mlir::Location> &useDeviceLocs,
823
- llvm::SmallVector<const Fortran::semantics::Symbol *> &useDeviceSymbols) {
817
+ llvm::SmallVectorImpl<mlir::Value> &devicePtrOperands,
818
+ llvm::SmallVectorImpl<mlir::Value> &deviceAddrOperands,
819
+ llvm::SmallVectorImpl<mlir::Type> &useDeviceTypes,
820
+ llvm::SmallVectorImpl<mlir::Location> &useDeviceLocs,
821
+ llvm::SmallVectorImpl<const Fortran::semantics::Symbol *>
822
+ &useDeviceSymbols) {
824
823
auto moveElementToBack = [](size_t idx, auto &vector) {
825
824
auto *iter = std::next (vector.begin (), idx);
826
825
vector.push_back (*iter);
@@ -957,15 +956,15 @@ genEnterExitUpdateDataOp(Fortran::lower::AbstractConverter &converter,
957
956
958
957
// This functions creates a block for the body of the targetOp's region. It adds
959
958
// all the symbols present in mapSymbols as block arguments to this block.
960
- static void genBodyOfTargetOp (
961
- Fortran::lower::AbstractConverter &converter,
962
- Fortran::semantics::SemanticsContext &semaCtx,
963
- Fortran::lower::pft::Evaluation &eval, bool genNested,
964
- mlir::omp::TargetOp &targetOp,
965
- const llvm::SmallVector <mlir::Type> & mapSymTypes,
966
- const llvm::SmallVector <mlir::Location> & mapSymLocs,
967
- const llvm::SmallVector <const Fortran::semantics::Symbol *> & mapSymbols,
968
- const mlir::Location ¤tLocation) {
959
+ static void
960
+ genBodyOfTargetOp ( Fortran::lower::AbstractConverter &converter,
961
+ Fortran::semantics::SemanticsContext &semaCtx,
962
+ Fortran::lower::pft::Evaluation &eval, bool genNested,
963
+ mlir::omp::TargetOp &targetOp,
964
+ llvm::ArrayRef <mlir::Type> mapSymTypes,
965
+ llvm::ArrayRef <mlir::Location> mapSymLocs,
966
+ llvm::ArrayRef <const Fortran::semantics::Symbol *> mapSymbols,
967
+ const mlir::Location ¤tLocation) {
969
968
assert (mapSymTypes.size () == mapSymLocs.size ());
970
969
971
970
fir::FirOpBuilder &firOpBuilder = converter.getFirOpBuilder ();
@@ -1498,7 +1497,7 @@ static void convertLoopBounds(Fortran::lower::AbstractConverter &converter,
1498
1497
static llvm::SmallVector<const Fortran::semantics::Symbol *>
1499
1498
genLoopVars (mlir::Operation *op, Fortran::lower::AbstractConverter &converter,
1500
1499
mlir::Location &loc,
1501
- const llvm::SmallVector <const Fortran::semantics::Symbol *> & args) {
1500
+ llvm::ArrayRef <const Fortran::semantics::Symbol *> args) {
1502
1501
fir::FirOpBuilder &firOpBuilder = converter.getFirOpBuilder ();
1503
1502
auto ®ion = op->getRegion (0 );
1504
1503
@@ -1519,16 +1518,16 @@ genLoopVars(mlir::Operation *op, Fortran::lower::AbstractConverter &converter,
1519
1518
}
1520
1519
firOpBuilder.setInsertionPointAfter (storeOp);
1521
1520
1522
- return args;
1521
+ return llvm::SmallVector< const Fortran::semantics::Symbol *>( args) ;
1523
1522
}
1524
1523
1525
1524
static llvm::SmallVector<const Fortran::semantics::Symbol *>
1526
1525
genLoopAndReductionVars (
1527
1526
mlir::Operation *op, Fortran::lower::AbstractConverter &converter,
1528
1527
mlir::Location &loc,
1529
- const llvm::SmallVector <const Fortran::semantics::Symbol *> & loopArgs,
1530
- const llvm::SmallVector <const Fortran::semantics::Symbol *> & reductionArgs,
1531
- llvm::SmallVector <mlir::Type> &reductionTypes) {
1528
+ llvm::ArrayRef <const Fortran::semantics::Symbol *> loopArgs,
1529
+ llvm::ArrayRef <const Fortran::semantics::Symbol *> reductionArgs,
1530
+ llvm::SmallVectorImpl <mlir::Type> &reductionTypes) {
1532
1531
fir::FirOpBuilder &firOpBuilder = converter.getFirOpBuilder ();
1533
1532
1534
1533
llvm::SmallVector<mlir::Type> blockArgTypes;
@@ -1571,7 +1570,7 @@ genLoopAndReductionVars(
1571
1570
converter.bindSymbol (*arg, prv);
1572
1571
}
1573
1572
1574
- return loopArgs;
1573
+ return llvm::SmallVector< const Fortran::semantics::Symbol *>( loopArgs) ;
1575
1574
}
1576
1575
1577
1576
static void
0 commit comments