@@ -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 ();
@@ -814,11 +812,12 @@ genTaskGroupOp(Fortran::lower::AbstractConverter &converter,
814
812
// clause. Support for such list items in a use_device_ptr clause
815
813
// is deprecated."
816
814
static void promoteNonCPtrUseDevicePtrArgsToUseDeviceAddr (
817
- llvm::SmallVector<mlir::Value> &devicePtrOperands,
818
- llvm::SmallVector<mlir::Value> &deviceAddrOperands,
819
- llvm::SmallVector<mlir::Type> &useDeviceTypes,
820
- llvm::SmallVector<mlir::Location> &useDeviceLocs,
821
- llvm::SmallVector<const Fortran::semantics::Symbol *> &useDeviceSymbols) {
815
+ llvm::SmallVectorImpl<mlir::Value> &devicePtrOperands,
816
+ llvm::SmallVectorImpl<mlir::Value> &deviceAddrOperands,
817
+ llvm::SmallVectorImpl<mlir::Type> &useDeviceTypes,
818
+ llvm::SmallVectorImpl<mlir::Location> &useDeviceLocs,
819
+ llvm::SmallVectorImpl<const Fortran::semantics::Symbol *>
820
+ &useDeviceSymbols) {
822
821
auto moveElementToBack = [](size_t idx, auto &vector) {
823
822
auto *iter = std::next (vector.begin (), idx);
824
823
vector.push_back (*iter);
@@ -951,15 +950,15 @@ genEnterExitUpdateDataOp(Fortran::lower::AbstractConverter &converter,
951
950
952
951
// This functions creates a block for the body of the targetOp's region. It adds
953
952
// all the symbols present in mapSymbols as block arguments to this block.
954
- static void genBodyOfTargetOp (
955
- Fortran::lower::AbstractConverter &converter,
956
- Fortran::semantics::SemanticsContext &semaCtx,
957
- Fortran::lower::pft::Evaluation &eval, bool genNested,
958
- mlir::omp::TargetOp &targetOp,
959
- const llvm::SmallVector <mlir::Type> & mapSymTypes,
960
- const llvm::SmallVector <mlir::Location> & mapSymLocs,
961
- const llvm::SmallVector <const Fortran::semantics::Symbol *> & mapSymbols,
962
- const mlir::Location ¤tLocation) {
953
+ static void
954
+ genBodyOfTargetOp ( Fortran::lower::AbstractConverter &converter,
955
+ Fortran::semantics::SemanticsContext &semaCtx,
956
+ Fortran::lower::pft::Evaluation &eval, bool genNested,
957
+ mlir::omp::TargetOp &targetOp,
958
+ llvm::ArrayRef <mlir::Type> mapSymTypes,
959
+ llvm::ArrayRef <mlir::Location> mapSymLocs,
960
+ llvm::ArrayRef <const Fortran::semantics::Symbol *> mapSymbols,
961
+ const mlir::Location ¤tLocation) {
963
962
assert (mapSymTypes.size () == mapSymLocs.size ());
964
963
965
964
fir::FirOpBuilder &firOpBuilder = converter.getFirOpBuilder ();
@@ -1491,7 +1490,7 @@ static void convertLoopBounds(Fortran::lower::AbstractConverter &converter,
1491
1490
static llvm::SmallVector<const Fortran::semantics::Symbol *>
1492
1491
genLoopVars (mlir::Operation *op, Fortran::lower::AbstractConverter &converter,
1493
1492
mlir::Location &loc,
1494
- const llvm::SmallVector <const Fortran::semantics::Symbol *> & args) {
1493
+ llvm::ArrayRef <const Fortran::semantics::Symbol *> args) {
1495
1494
fir::FirOpBuilder &firOpBuilder = converter.getFirOpBuilder ();
1496
1495
auto ®ion = op->getRegion (0 );
1497
1496
@@ -1512,16 +1511,16 @@ genLoopVars(mlir::Operation *op, Fortran::lower::AbstractConverter &converter,
1512
1511
}
1513
1512
firOpBuilder.setInsertionPointAfter (storeOp);
1514
1513
1515
- return args;
1514
+ return llvm::SmallVector< const Fortran::semantics::Symbol *>( args) ;
1516
1515
}
1517
1516
1518
1517
static llvm::SmallVector<const Fortran::semantics::Symbol *>
1519
1518
genLoopAndReductionVars (
1520
1519
mlir::Operation *op, Fortran::lower::AbstractConverter &converter,
1521
1520
mlir::Location &loc,
1522
- const llvm::SmallVector <const Fortran::semantics::Symbol *> & loopArgs,
1523
- const llvm::SmallVector <const Fortran::semantics::Symbol *> & reductionArgs,
1524
- llvm::SmallVector <mlir::Type> &reductionTypes) {
1521
+ llvm::ArrayRef <const Fortran::semantics::Symbol *> loopArgs,
1522
+ llvm::ArrayRef <const Fortran::semantics::Symbol *> reductionArgs,
1523
+ llvm::SmallVectorImpl <mlir::Type> &reductionTypes) {
1525
1524
fir::FirOpBuilder &firOpBuilder = converter.getFirOpBuilder ();
1526
1525
1527
1526
llvm::SmallVector<mlir::Type> blockArgTypes;
@@ -1564,7 +1563,7 @@ genLoopAndReductionVars(
1564
1563
converter.bindSymbol (*arg, prv);
1565
1564
}
1566
1565
1567
- return loopArgs;
1566
+ return llvm::SmallVector< const Fortran::semantics::Symbol *>( loopArgs) ;
1568
1567
}
1569
1568
1570
1569
static void
0 commit comments