@@ -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
@@ -891,9 +883,7 @@ void ClauseProcessor::processMapObjects(
891
883
llvm::omp::OpenMPOffloadMappingFlags mapTypeBits,
892
884
std::map<Object, OmpMapParentAndMemberData> &parentMemberIndices,
893
885
llvm::SmallVectorImpl<mlir::Value> &mapVars,
894
- llvm::SmallVectorImpl<const semantics::Symbol *> *mapSyms,
895
- llvm::SmallVectorImpl<mlir::Location> *mapSymLocs,
896
- llvm::SmallVectorImpl<mlir::Type> *mapSymTypes) const {
886
+ llvm::SmallVectorImpl<const semantics::Symbol *> &mapSyms) const {
897
887
fir::FirOpBuilder &firOpBuilder = converter.getFirOpBuilder ();
898
888
899
889
for (const omp::Object &object : objects) {
@@ -948,21 +938,15 @@ void ClauseProcessor::processMapObjects(
948
938
object, parentMemberIndices[parentObj.value ()], mapOp, semaCtx);
949
939
} else {
950
940
mapVars.push_back (mapOp);
951
- mapSyms->push_back (object.sym ());
952
- if (mapSymTypes)
953
- mapSymTypes->push_back (baseOp.getType ());
954
- if (mapSymLocs)
955
- mapSymLocs->push_back (baseOp.getLoc ());
941
+ mapSyms.push_back (object.sym ());
956
942
}
957
943
}
958
944
}
959
945
960
946
bool ClauseProcessor::processMap (
961
947
mlir::Location currentLocation, lower::StatementContext &stmtCtx,
962
948
mlir::omp::MapClauseOps &result,
963
- llvm::SmallVectorImpl<const semantics::Symbol *> *mapSyms,
964
- llvm::SmallVectorImpl<mlir::Location> *mapSymLocs,
965
- llvm::SmallVectorImpl<mlir::Type> *mapSymTypes) const {
949
+ llvm::SmallVectorImpl<const semantics::Symbol *> *mapSyms) const {
966
950
// We always require tracking of symbols, even if the caller does not,
967
951
// so we create an optionally used local set of symbols when the mapSyms
968
952
// argument is not present.
@@ -1018,13 +1002,11 @@ bool ClauseProcessor::processMap(
1018
1002
1019
1003
processMapObjects (stmtCtx, clauseLocation,
1020
1004
std::get<omp::ObjectList>(clause.t ), mapTypeBits,
1021
- parentMemberIndices, result.mapVars , ptrMapSyms,
1022
- mapSymLocs, mapSymTypes);
1005
+ parentMemberIndices, result.mapVars , *ptrMapSyms);
1023
1006
});
1024
1007
1025
1008
insertChildMapInfoIntoParent (converter, semaCtx, stmtCtx, parentMemberIndices,
1026
- result.mapVars , mapSymTypes, mapSymLocs,
1027
- ptrMapSyms);
1009
+ result.mapVars , *ptrMapSyms);
1028
1010
return clauseFound;
1029
1011
}
1030
1012
@@ -1044,7 +1026,7 @@ bool ClauseProcessor::processMotionClauses(lower::StatementContext &stmtCtx,
1044
1026
1045
1027
processMapObjects (stmtCtx, clauseLocation, std::get<ObjectList>(clause.t ),
1046
1028
mapTypeBits, parentMemberIndices, result.mapVars ,
1047
- & mapSymbols);
1029
+ mapSymbols);
1048
1030
};
1049
1031
1050
1032
bool clauseFound = findRepeatableClause<omp::clause::To>(callbackFn);
@@ -1053,7 +1035,7 @@ bool ClauseProcessor::processMotionClauses(lower::StatementContext &stmtCtx,
1053
1035
1054
1036
insertChildMapInfoIntoParent (
1055
1037
converter, semaCtx, stmtCtx, parentMemberIndices, result.mapVars ,
1056
- /* mapSymTypes= */ nullptr , /* mapSymLocs= */ nullptr , & mapSymbols);
1038
+ mapSymbols);
1057
1039
return clauseFound;
1058
1040
}
1059
1041
@@ -1071,34 +1053,24 @@ bool ClauseProcessor::processNontemporal(
1071
1053
1072
1054
bool ClauseProcessor::processReduction (
1073
1055
mlir::Location currentLocation, mlir::omp::ReductionClauseOps &result,
1074
- llvm::SmallVectorImpl<mlir::Type> *outReductionTypes,
1075
- llvm::SmallVectorImpl<const semantics::Symbol *> *outReductionSyms) const {
1056
+ llvm::SmallVectorImpl<const semantics::Symbol *> &outReductionSyms) const {
1076
1057
return findRepeatableClause<omp::clause::Reduction>(
1077
1058
[&](const omp::clause::Reduction &clause, const parser::CharBlock &) {
1078
1059
llvm::SmallVector<mlir::Value> reductionVars;
1079
1060
llvm::SmallVector<bool > reduceVarByRef;
1080
1061
llvm::SmallVector<mlir::Attribute> reductionDeclSymbols;
1081
1062
llvm::SmallVector<const semantics::Symbol *> reductionSyms;
1082
1063
ReductionProcessor rp;
1083
- rp.addDeclareReduction (
1084
- currentLocation, converter, clause, reductionVars, reduceVarByRef,
1085
- reductionDeclSymbols, outReductionSyms ? &reductionSyms : nullptr );
1064
+ rp.addDeclareReduction (currentLocation, converter, clause,
1065
+ reductionVars, reduceVarByRef,
1066
+ reductionDeclSymbols, reductionSyms );
1086
1067
1087
1068
// Copy local lists into the output.
1088
1069
llvm::copy (reductionVars, std::back_inserter (result.reductionVars ));
1089
1070
llvm::copy (reduceVarByRef, std::back_inserter (result.reductionByref ));
1090
1071
llvm::copy (reductionDeclSymbols,
1091
1072
std::back_inserter (result.reductionSyms ));
1092
-
1093
- if (outReductionTypes) {
1094
- outReductionTypes->reserve (outReductionTypes->size () +
1095
- reductionVars.size ());
1096
- llvm::transform (reductionVars, std::back_inserter (*outReductionTypes),
1097
- [](mlir::Value v) { return v.getType (); });
1098
- }
1099
-
1100
- if (outReductionSyms)
1101
- llvm::copy (reductionSyms, std::back_inserter (*outReductionSyms));
1073
+ llvm::copy (reductionSyms, std::back_inserter (outReductionSyms));
1102
1074
});
1103
1075
}
1104
1076
@@ -1124,8 +1096,6 @@ bool ClauseProcessor::processEnter(
1124
1096
1125
1097
bool ClauseProcessor::processUseDeviceAddr (
1126
1098
lower::StatementContext &stmtCtx, mlir::omp::UseDeviceAddrClauseOps &result,
1127
- llvm::SmallVectorImpl<mlir::Type> &useDeviceTypes,
1128
- llvm::SmallVectorImpl<mlir::Location> &useDeviceLocs,
1129
1099
llvm::SmallVectorImpl<const semantics::Symbol *> &useDeviceSyms) const {
1130
1100
std::map<Object, OmpMapParentAndMemberData> parentMemberIndices;
1131
1101
bool clauseFound = findRepeatableClause<omp::clause::UseDeviceAddr>(
@@ -1137,19 +1107,16 @@ bool ClauseProcessor::processUseDeviceAddr(
1137
1107
llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_FROM;
1138
1108
processMapObjects (stmtCtx, location, clause.v , mapTypeBits,
1139
1109
parentMemberIndices, result.useDeviceAddrVars ,
1140
- & useDeviceSyms, &useDeviceLocs, &useDeviceTypes );
1110
+ useDeviceSyms);
1141
1111
});
1142
1112
1143
1113
insertChildMapInfoIntoParent (converter, semaCtx, stmtCtx, parentMemberIndices,
1144
- result.useDeviceAddrVars , &useDeviceTypes,
1145
- &useDeviceLocs, &useDeviceSyms);
1114
+ result.useDeviceAddrVars , useDeviceSyms);
1146
1115
return clauseFound;
1147
1116
}
1148
1117
1149
1118
bool ClauseProcessor::processUseDevicePtr (
1150
1119
lower::StatementContext &stmtCtx, mlir::omp::UseDevicePtrClauseOps &result,
1151
- llvm::SmallVectorImpl<mlir::Type> &useDeviceTypes,
1152
- llvm::SmallVectorImpl<mlir::Location> &useDeviceLocs,
1153
1120
llvm::SmallVectorImpl<const semantics::Symbol *> &useDeviceSyms) const {
1154
1121
std::map<Object, OmpMapParentAndMemberData> parentMemberIndices;
1155
1122
@@ -1162,12 +1129,11 @@ bool ClauseProcessor::processUseDevicePtr(
1162
1129
llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_FROM;
1163
1130
processMapObjects (stmtCtx, location, clause.v , mapTypeBits,
1164
1131
parentMemberIndices, result.useDevicePtrVars ,
1165
- & useDeviceSyms, &useDeviceLocs, &useDeviceTypes );
1132
+ useDeviceSyms);
1166
1133
});
1167
1134
1168
1135
insertChildMapInfoIntoParent (converter, semaCtx, stmtCtx, parentMemberIndices,
1169
- result.useDevicePtrVars , &useDeviceTypes,
1170
- &useDeviceLocs, &useDeviceSyms);
1136
+ result.useDevicePtrVars , useDeviceSyms);
1171
1137
return clauseFound;
1172
1138
}
1173
1139
0 commit comments