@@ -166,15 +166,11 @@ getIfClauseOperand(lower::AbstractConverter &converter,
166166static void addUseDeviceClause (
167167 lower::AbstractConverter &converter, const omp::ObjectList &objects,
168168 llvm::SmallVectorImpl<mlir::Value> &operands,
169- llvm::SmallVectorImpl<mlir::Type> &useDeviceTypes,
170- llvm::SmallVectorImpl<mlir::Location> &useDeviceLocs,
171169 llvm::SmallVectorImpl<const semantics::Symbol *> &useDeviceSyms) {
172170 genObjectList (objects, converter, operands);
173- for (mlir::Value &operand : operands) {
171+ for (mlir::Value &operand : operands)
174172 checkMapType (operand.getLoc (), operand.getType ());
175- useDeviceTypes.push_back (operand.getType ());
176- useDeviceLocs.push_back (operand.getLoc ());
177- }
173+
178174 for (const omp::Object &object : objects)
179175 useDeviceSyms.push_back (object.sym ());
180176}
@@ -832,14 +828,12 @@ bool ClauseProcessor::processDepend(mlir::omp::DependClauseOps &result) const {
832828
833829bool ClauseProcessor::processHasDeviceAddr (
834830 mlir::omp::HasDeviceAddrClauseOps &result,
835- llvm::SmallVectorImpl<mlir::Type> &isDeviceTypes,
836- llvm::SmallVectorImpl<mlir::Location> &isDeviceLocs,
837- llvm::SmallVectorImpl<const semantics::Symbol *> &isDeviceSymbols) const {
831+ llvm::SmallVectorImpl<const semantics::Symbol *> &isDeviceSyms) const {
838832 return findRepeatableClause<omp::clause::HasDeviceAddr>(
839833 [&](const omp::clause::HasDeviceAddr &devAddrClause,
840834 const parser::CharBlock &) {
841835 addUseDeviceClause (converter, devAddrClause.v , result.hasDeviceAddrVars ,
842- isDeviceTypes, isDeviceLocs, isDeviceSymbols );
836+ isDeviceSyms );
843837 });
844838}
845839
@@ -864,14 +858,12 @@ bool ClauseProcessor::processIf(
864858
865859bool ClauseProcessor::processIsDevicePtr (
866860 mlir::omp::IsDevicePtrClauseOps &result,
867- llvm::SmallVectorImpl<mlir::Type> &isDeviceTypes,
868- llvm::SmallVectorImpl<mlir::Location> &isDeviceLocs,
869- llvm::SmallVectorImpl<const semantics::Symbol *> &isDeviceSymbols) const {
861+ llvm::SmallVectorImpl<const semantics::Symbol *> &isDeviceSyms) const {
870862 return findRepeatableClause<omp::clause::IsDevicePtr>(
871863 [&](const omp::clause::IsDevicePtr &devPtrClause,
872864 const parser::CharBlock &) {
873865 addUseDeviceClause (converter, devPtrClause.v , result.isDevicePtrVars ,
874- isDeviceTypes, isDeviceLocs, isDeviceSymbols );
866+ isDeviceSyms );
875867 });
876868}
877869
@@ -892,9 +884,7 @@ void ClauseProcessor::processMapObjects(
892884 std::map<const semantics::Symbol *,
893885 llvm::SmallVector<OmpMapMemberIndicesData>> &parentMemberIndices,
894886 llvm::SmallVectorImpl<mlir::Value> &mapVars,
895- llvm::SmallVectorImpl<const semantics::Symbol *> *mapSyms,
896- llvm::SmallVectorImpl<mlir::Location> *mapSymLocs,
897- llvm::SmallVectorImpl<mlir::Type> *mapSymTypes) const {
887+ llvm::SmallVectorImpl<const semantics::Symbol *> &mapSyms) const {
898888 fir::FirOpBuilder &firOpBuilder = converter.getFirOpBuilder ();
899889 for (const omp::Object &object : objects) {
900890 llvm::SmallVector<mlir::Value> bounds;
@@ -927,22 +917,15 @@ void ClauseProcessor::processMapObjects(
927917 addChildIndexAndMapToParent (object, parentMemberIndices, mapOp, semaCtx);
928918 } else {
929919 mapVars.push_back (mapOp);
930- if (mapSyms)
931- mapSyms->push_back (object.sym ());
932- if (mapSymTypes)
933- mapSymTypes->push_back (baseOp.getType ());
934- if (mapSymLocs)
935- mapSymLocs->push_back (baseOp.getLoc ());
920+ mapSyms.push_back (object.sym ());
936921 }
937922 }
938923}
939924
940925bool ClauseProcessor::processMap (
941926 mlir::Location currentLocation, lower::StatementContext &stmtCtx,
942927 mlir::omp::MapClauseOps &result,
943- llvm::SmallVectorImpl<const semantics::Symbol *> *mapSyms,
944- llvm::SmallVectorImpl<mlir::Location> *mapSymLocs,
945- llvm::SmallVectorImpl<mlir::Type> *mapSymTypes) const {
928+ llvm::SmallVectorImpl<const semantics::Symbol *> *mapSyms) const {
946929 // We always require tracking of symbols, even if the caller does not,
947930 // so we create an optionally used local set of symbols when the mapSyms
948931 // argument is not present.
@@ -999,12 +982,11 @@ bool ClauseProcessor::processMap(
999982 }
1000983 processMapObjects (stmtCtx, clauseLocation,
1001984 std::get<omp::ObjectList>(clause.t ), mapTypeBits,
1002- parentMemberIndices, result.mapVars , ptrMapSyms,
1003- mapSymLocs, mapSymTypes);
985+ parentMemberIndices, result.mapVars , *ptrMapSyms);
1004986 });
1005987
1006988 insertChildMapInfoIntoParent (converter, parentMemberIndices, result.mapVars ,
1007- *ptrMapSyms, mapSymTypes, mapSymLocs );
989+ *ptrMapSyms);
1008990
1009991 return clauseFound;
1010992}
@@ -1027,16 +1009,15 @@ bool ClauseProcessor::processMotionClauses(lower::StatementContext &stmtCtx,
10271009
10281010 processMapObjects (stmtCtx, clauseLocation, std::get<ObjectList>(clause.t ),
10291011 mapTypeBits, parentMemberIndices, result.mapVars ,
1030- & mapSymbols);
1012+ mapSymbols);
10311013 };
10321014
10331015 bool clauseFound = findRepeatableClause<omp::clause::To>(callbackFn);
10341016 clauseFound =
10351017 findRepeatableClause<omp::clause::From>(callbackFn) || clauseFound;
10361018
10371019 insertChildMapInfoIntoParent (converter, parentMemberIndices, result.mapVars ,
1038- mapSymbols,
1039- /* mapSymTypes=*/ nullptr , /* mapSymLocs=*/ nullptr );
1020+ mapSymbols);
10401021 return clauseFound;
10411022}
10421023
@@ -1054,34 +1035,24 @@ bool ClauseProcessor::processNontemporal(
10541035
10551036bool ClauseProcessor::processReduction (
10561037 mlir::Location currentLocation, mlir::omp::ReductionClauseOps &result,
1057- llvm::SmallVectorImpl<mlir::Type> *outReductionTypes,
1058- llvm::SmallVectorImpl<const semantics::Symbol *> *outReductionSyms) const {
1038+ llvm::SmallVectorImpl<const semantics::Symbol *> &outReductionSyms) const {
10591039 return findRepeatableClause<omp::clause::Reduction>(
10601040 [&](const omp::clause::Reduction &clause, const parser::CharBlock &) {
10611041 llvm::SmallVector<mlir::Value> reductionVars;
10621042 llvm::SmallVector<bool > reduceVarByRef;
10631043 llvm::SmallVector<mlir::Attribute> reductionDeclSymbols;
10641044 llvm::SmallVector<const semantics::Symbol *> reductionSyms;
10651045 ReductionProcessor rp;
1066- rp.addDeclareReduction (
1067- currentLocation, converter, clause, reductionVars, reduceVarByRef,
1068- reductionDeclSymbols, outReductionSyms ? &reductionSyms : nullptr );
1046+ rp.addDeclareReduction (currentLocation, converter, clause,
1047+ reductionVars, reduceVarByRef,
1048+ reductionDeclSymbols, reductionSyms );
10691049
10701050 // Copy local lists into the output.
10711051 llvm::copy (reductionVars, std::back_inserter (result.reductionVars ));
10721052 llvm::copy (reduceVarByRef, std::back_inserter (result.reductionByref ));
10731053 llvm::copy (reductionDeclSymbols,
10741054 std::back_inserter (result.reductionSyms ));
1075-
1076- if (outReductionTypes) {
1077- outReductionTypes->reserve (outReductionTypes->size () +
1078- reductionVars.size ());
1079- llvm::transform (reductionVars, std::back_inserter (*outReductionTypes),
1080- [](mlir::Value v) { return v.getType (); });
1081- }
1082-
1083- if (outReductionSyms)
1084- llvm::copy (reductionSyms, std::back_inserter (*outReductionSyms));
1055+ llvm::copy (reductionSyms, std::back_inserter (outReductionSyms));
10851056 });
10861057}
10871058
@@ -1107,8 +1078,6 @@ bool ClauseProcessor::processEnter(
11071078
11081079bool ClauseProcessor::processUseDeviceAddr (
11091080 lower::StatementContext &stmtCtx, mlir::omp::UseDeviceAddrClauseOps &result,
1110- llvm::SmallVectorImpl<mlir::Type> &useDeviceTypes,
1111- llvm::SmallVectorImpl<mlir::Location> &useDeviceLocs,
11121081 llvm::SmallVectorImpl<const semantics::Symbol *> &useDeviceSyms) const {
11131082 std::map<const semantics::Symbol *,
11141083 llvm::SmallVector<OmpMapMemberIndicesData>>
@@ -1122,19 +1091,16 @@ bool ClauseProcessor::processUseDeviceAddr(
11221091 llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_FROM;
11231092 processMapObjects (stmtCtx, location, clause.v , mapTypeBits,
11241093 parentMemberIndices, result.useDeviceAddrVars ,
1125- & useDeviceSyms, &useDeviceLocs, &useDeviceTypes );
1094+ useDeviceSyms);
11261095 });
11271096
11281097 insertChildMapInfoIntoParent (converter, parentMemberIndices,
1129- result.useDeviceAddrVars , useDeviceSyms,
1130- &useDeviceTypes, &useDeviceLocs);
1098+ result.useDeviceAddrVars , useDeviceSyms);
11311099 return clauseFound;
11321100}
11331101
11341102bool ClauseProcessor::processUseDevicePtr (
11351103 lower::StatementContext &stmtCtx, mlir::omp::UseDevicePtrClauseOps &result,
1136- llvm::SmallVectorImpl<mlir::Type> &useDeviceTypes,
1137- llvm::SmallVectorImpl<mlir::Location> &useDeviceLocs,
11381104 llvm::SmallVectorImpl<const semantics::Symbol *> &useDeviceSyms) const {
11391105 std::map<const semantics::Symbol *,
11401106 llvm::SmallVector<OmpMapMemberIndicesData>>
@@ -1148,12 +1114,11 @@ bool ClauseProcessor::processUseDevicePtr(
11481114 llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_FROM;
11491115 processMapObjects (stmtCtx, location, clause.v , mapTypeBits,
11501116 parentMemberIndices, result.useDevicePtrVars ,
1151- & useDeviceSyms, &useDeviceLocs, &useDeviceTypes );
1117+ useDeviceSyms);
11521118 });
11531119
11541120 insertChildMapInfoIntoParent (converter, parentMemberIndices,
1155- result.useDevicePtrVars , useDeviceSyms,
1156- &useDeviceTypes, &useDeviceLocs);
1121+ result.useDevicePtrVars , useDeviceSyms);
11571122 return clauseFound;
11581123}
11591124
0 commit comments