@@ -3550,24 +3550,26 @@ static void collectMapDataFromMapOperands(
35503550 mapOp, mapOp.getMapperIdAttr ()));
35513551 else
35523552 mapData.Mappers .push_back (nullptr );
3553- mapData.IsAMapping .push_back (true );
3553+ bool hasMapDescriptor =
3554+ (mapData.Types .back () &
3555+ llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_DESCRIPTOR) ==
3556+ llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_DESCRIPTOR;
3557+ mapData.IsAMapping .push_back (!hasMapDescriptor);
35543558 mapData.IsAMember .push_back (checkIsAMember (mapVars, mapOp));
35553559 }
35563560
35573561 auto findMapInfo = [&mapData](llvm::Value *val,
3558- llvm::OpenMPIRBuilder::DeviceInfoTy devInfoTy,
3559- size_t memberCount) {
3562+ llvm::OpenMPIRBuilder::DeviceInfoTy devInfoTy) {
3563+ unsigned index = 0 ;
35603564 bool found = false ;
3561- for (size_t index = 0 ; index < mapData.OriginalValue .size (); ++index) {
3562- auto mapInfoOp = dyn_cast<omp::MapInfoOp>(mapData.MapClause [index]);
3563- if (mapData.IsAMapping [index] && mapData.Pointers [index] == val &&
3564- mapData.BasePointers [index] == val &&
3565- memberCount == mapInfoOp.getMembers ().size ()) {
3565+ for (llvm::Value *basePtr : mapData.OriginalValue ) {
3566+ if (basePtr == val && mapData.IsAMapping [index]) {
35663567 found = true ;
35673568 mapData.Types [index] |=
35683569 llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_RETURN_PARAM;
35693570 mapData.DevicePointers [index] = devInfoTy;
35703571 }
3572+ index++;
35713573 }
35723574 return found;
35733575 };
@@ -3582,7 +3584,7 @@ static void collectMapDataFromMapOperands(
35823584 llvm::Value *origValue = moduleTranslation.lookupValue (offloadPtr);
35833585
35843586 // Check if map info is already present for this entry.
3585- if (!findMapInfo (origValue, devInfoTy, mapOp. getMembers (). size () )) {
3587+ if (!findMapInfo (origValue, devInfoTy)) {
35863588 mapData.OriginalValue .push_back (origValue);
35873589 mapData.Pointers .push_back (mapData.OriginalValue .back ());
35883590 mapData.IsDeclareTarget .push_back (false );
0 commit comments