@@ -166,15 +166,11 @@ getIfClauseOperand(lower::AbstractConverter &converter,
166
166
static void addUseDeviceClause (
167
167
lower::AbstractConverter &converter, const omp::ObjectList &objects,
168
168
llvm::SmallVectorImpl<mlir::Value> &operands,
169
- llvm::SmallVectorImpl<mlir::Type> &useDeviceTypes,
170
- llvm::SmallVectorImpl<mlir::Location> &useDeviceLocs,
171
169
llvm::SmallVectorImpl<const semantics::Symbol *> &useDeviceSyms) {
172
170
genObjectList (objects, converter, operands);
173
- for (mlir::Value &operand : operands) {
171
+ for (mlir::Value &operand : operands)
174
172
checkMapType (operand.getLoc (), operand.getType ());
175
- useDeviceTypes.push_back (operand.getType ());
176
- useDeviceLocs.push_back (operand.getLoc ());
177
- }
173
+
178
174
for (const omp::Object &object : objects)
179
175
useDeviceSyms.push_back (object.sym ());
180
176
}
@@ -832,14 +828,12 @@ bool ClauseProcessor::processDepend(mlir::omp::DependClauseOps &result) const {
832
828
833
829
bool ClauseProcessor::processHasDeviceAddr (
834
830
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 {
838
832
return findRepeatableClause<omp::clause::HasDeviceAddr>(
839
833
[&](const omp::clause::HasDeviceAddr &devAddrClause,
840
834
const parser::CharBlock &) {
841
835
addUseDeviceClause (converter, devAddrClause.v , result.hasDeviceAddrVars ,
842
- isDeviceTypes, isDeviceLocs, isDeviceSymbols );
836
+ isDeviceSyms );
843
837
});
844
838
}
845
839
@@ -864,14 +858,12 @@ bool ClauseProcessor::processIf(
864
858
865
859
bool ClauseProcessor::processIsDevicePtr (
866
860
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 {
870
862
return findRepeatableClause<omp::clause::IsDevicePtr>(
871
863
[&](const omp::clause::IsDevicePtr &devPtrClause,
872
864
const parser::CharBlock &) {
873
865
addUseDeviceClause (converter, devPtrClause.v , result.isDevicePtrVars ,
874
- isDeviceTypes, isDeviceLocs, isDeviceSymbols );
866
+ isDeviceSyms );
875
867
});
876
868
}
877
869
@@ -892,9 +884,7 @@ void ClauseProcessor::processMapObjects(
892
884
std::map<const semantics::Symbol *,
893
885
llvm::SmallVector<OmpMapMemberIndicesData>> &parentMemberIndices,
894
886
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 {
898
888
fir::FirOpBuilder &firOpBuilder = converter.getFirOpBuilder ();
899
889
for (const omp::Object &object : objects) {
900
890
llvm::SmallVector<mlir::Value> bounds;
@@ -927,22 +917,15 @@ void ClauseProcessor::processMapObjects(
927
917
addChildIndexAndMapToParent (object, parentMemberIndices, mapOp, semaCtx);
928
918
} else {
929
919
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 ());
936
921
}
937
922
}
938
923
}
939
924
940
925
bool ClauseProcessor::processMap (
941
926
mlir::Location currentLocation, lower::StatementContext &stmtCtx,
942
927
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 {
946
929
// We always require tracking of symbols, even if the caller does not,
947
930
// so we create an optionally used local set of symbols when the mapSyms
948
931
// argument is not present.
@@ -999,12 +982,11 @@ bool ClauseProcessor::processMap(
999
982
}
1000
983
processMapObjects (stmtCtx, clauseLocation,
1001
984
std::get<omp::ObjectList>(clause.t ), mapTypeBits,
1002
- parentMemberIndices, result.mapVars , ptrMapSyms,
1003
- mapSymLocs, mapSymTypes);
985
+ parentMemberIndices, result.mapVars , *ptrMapSyms);
1004
986
});
1005
987
1006
988
insertChildMapInfoIntoParent (converter, parentMemberIndices, result.mapVars ,
1007
- *ptrMapSyms, mapSymTypes, mapSymLocs );
989
+ *ptrMapSyms);
1008
990
1009
991
return clauseFound;
1010
992
}
@@ -1027,16 +1009,15 @@ bool ClauseProcessor::processMotionClauses(lower::StatementContext &stmtCtx,
1027
1009
1028
1010
processMapObjects (stmtCtx, clauseLocation, std::get<ObjectList>(clause.t ),
1029
1011
mapTypeBits, parentMemberIndices, result.mapVars ,
1030
- & mapSymbols);
1012
+ mapSymbols);
1031
1013
};
1032
1014
1033
1015
bool clauseFound = findRepeatableClause<omp::clause::To>(callbackFn);
1034
1016
clauseFound =
1035
1017
findRepeatableClause<omp::clause::From>(callbackFn) || clauseFound;
1036
1018
1037
1019
insertChildMapInfoIntoParent (converter, parentMemberIndices, result.mapVars ,
1038
- mapSymbols,
1039
- /* mapSymTypes=*/ nullptr , /* mapSymLocs=*/ nullptr );
1020
+ mapSymbols);
1040
1021
return clauseFound;
1041
1022
}
1042
1023
@@ -1054,34 +1035,24 @@ bool ClauseProcessor::processNontemporal(
1054
1035
1055
1036
bool ClauseProcessor::processReduction (
1056
1037
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 {
1059
1039
return findRepeatableClause<omp::clause::Reduction>(
1060
1040
[&](const omp::clause::Reduction &clause, const parser::CharBlock &) {
1061
1041
llvm::SmallVector<mlir::Value> reductionVars;
1062
1042
llvm::SmallVector<bool > reduceVarByRef;
1063
1043
llvm::SmallVector<mlir::Attribute> reductionDeclSymbols;
1064
1044
llvm::SmallVector<const semantics::Symbol *> reductionSyms;
1065
1045
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 );
1069
1049
1070
1050
// Copy local lists into the output.
1071
1051
llvm::copy (reductionVars, std::back_inserter (result.reductionVars ));
1072
1052
llvm::copy (reduceVarByRef, std::back_inserter (result.reductionByref ));
1073
1053
llvm::copy (reductionDeclSymbols,
1074
1054
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));
1085
1056
});
1086
1057
}
1087
1058
@@ -1107,8 +1078,6 @@ bool ClauseProcessor::processEnter(
1107
1078
1108
1079
bool ClauseProcessor::processUseDeviceAddr (
1109
1080
lower::StatementContext &stmtCtx, mlir::omp::UseDeviceAddrClauseOps &result,
1110
- llvm::SmallVectorImpl<mlir::Type> &useDeviceTypes,
1111
- llvm::SmallVectorImpl<mlir::Location> &useDeviceLocs,
1112
1081
llvm::SmallVectorImpl<const semantics::Symbol *> &useDeviceSyms) const {
1113
1082
std::map<const semantics::Symbol *,
1114
1083
llvm::SmallVector<OmpMapMemberIndicesData>>
@@ -1122,19 +1091,16 @@ bool ClauseProcessor::processUseDeviceAddr(
1122
1091
llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_FROM;
1123
1092
processMapObjects (stmtCtx, location, clause.v , mapTypeBits,
1124
1093
parentMemberIndices, result.useDeviceAddrVars ,
1125
- & useDeviceSyms, &useDeviceLocs, &useDeviceTypes );
1094
+ useDeviceSyms);
1126
1095
});
1127
1096
1128
1097
insertChildMapInfoIntoParent (converter, parentMemberIndices,
1129
- result.useDeviceAddrVars , useDeviceSyms,
1130
- &useDeviceTypes, &useDeviceLocs);
1098
+ result.useDeviceAddrVars , useDeviceSyms);
1131
1099
return clauseFound;
1132
1100
}
1133
1101
1134
1102
bool ClauseProcessor::processUseDevicePtr (
1135
1103
lower::StatementContext &stmtCtx, mlir::omp::UseDevicePtrClauseOps &result,
1136
- llvm::SmallVectorImpl<mlir::Type> &useDeviceTypes,
1137
- llvm::SmallVectorImpl<mlir::Location> &useDeviceLocs,
1138
1104
llvm::SmallVectorImpl<const semantics::Symbol *> &useDeviceSyms) const {
1139
1105
std::map<const semantics::Symbol *,
1140
1106
llvm::SmallVector<OmpMapMemberIndicesData>>
@@ -1148,12 +1114,11 @@ bool ClauseProcessor::processUseDevicePtr(
1148
1114
llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_FROM;
1149
1115
processMapObjects (stmtCtx, location, clause.v , mapTypeBits,
1150
1116
parentMemberIndices, result.useDevicePtrVars ,
1151
- & useDeviceSyms, &useDeviceLocs, &useDeviceTypes );
1117
+ useDeviceSyms);
1152
1118
});
1153
1119
1154
1120
insertChildMapInfoIntoParent (converter, parentMemberIndices,
1155
- result.useDevicePtrVars , useDeviceSyms,
1156
- &useDeviceTypes, &useDeviceLocs);
1121
+ result.useDevicePtrVars , useDeviceSyms);
1157
1122
return clauseFound;
1158
1123
}
1159
1124
0 commit comments