@@ -362,16 +362,18 @@ mlir::Value createParentSymAndGenIntermediateMaps(
362
362
clauseLocation, firOpBuilder.getRefType (memberTy), curValue,
363
363
llvm::SmallVector<fir::IntOrValue, 1 >{idxConst});
364
364
365
- // Skip mapping and the subsequent load if we're the final member or not
366
- // a type with a descriptor such as a pointer/allocatable. If we're a
367
- // final member, the map will be generated by the processMap call that
368
- // invoked this function, and if we're not a type with a descriptor then
369
- // we have no need of generating an intermediate map for it, as we only
370
- // need to generate a map if a member is a descriptor type (and thus
371
- // obscures the members it contains via a pointer in which it's data needs
372
- // mapped)
373
- if ((currentIndicesIdx == indices.size () - 1 ) ||
374
- !fir::isTypeWithDescriptor (memberTy)) {
365
+ // If we're a final member, the map will be generated by the processMap
366
+ // call that invoked this function.
367
+ if (currentIndicesIdx == indices.size () - 1 )
368
+ break ;
369
+
370
+ // Skip mapping and the subsequent load if we're not
371
+ // a type with a descriptor such as a pointer/allocatable. If we're not a
372
+ // type with a descriptor then we have no need of generating an
373
+ // intermediate map for it, as we only need to generate a map if a member
374
+ // is a descriptor type (and thus obscures the members it contains via a
375
+ // pointer in which it's data needs mapped).
376
+ if (!fir::isTypeWithDescriptor (memberTy)) {
375
377
currentIndicesIdx++;
376
378
continue ;
377
379
}
0 commit comments