================ @@ -55,15 +55,19 @@ class MapsForPrivatizedSymbolsPass std::underlying_type_t<llvm::omp::OpenMPOffloadMappingFlags>>( llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_TO); Operation *definingOp = var.getDefiningOp(); - auto declOp = llvm::dyn_cast_or_null<hlfir::DeclareOp>(definingOp); - assert(declOp && - "Expected defining Op of privatized var to be hlfir.declare"); + assert(definingOp && + "Privatizing a block argument without any hlfir.declare"); + Value varPtr = var; // We want the first result of the hlfir.declare op because our goal // is to map the descriptor (fir.box or fir.boxchar) and the first // result for hlfir.declare is the descriptor if a the symbol being // decalred needs a descriptor. - Value varPtr = declOp.getBase(); + // Some types are boxed immediately before privatization. These have other + // operations in between the privatization and the declaration. It is safe + // to use var directly here because they will be boxed anyay. ---------------- ergawy wrote:
```suggestion // to use var directly here because they will be boxed anyway. ``` https://github.com/llvm/llvm-project/pull/124019 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits