diff options
Diffstat (limited to 'flang/lib/Optimizer/CodeGen/LowerRepackArrays.cpp')
| -rw-r--r-- | flang/lib/Optimizer/CodeGen/LowerRepackArrays.cpp | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/flang/lib/Optimizer/CodeGen/LowerRepackArrays.cpp b/flang/lib/Optimizer/CodeGen/LowerRepackArrays.cpp index 7fb713ff1a6c..de97a0bbc184 100644 --- a/flang/lib/Optimizer/CodeGen/LowerRepackArrays.cpp +++ b/flang/lib/Optimizer/CodeGen/LowerRepackArrays.cpp @@ -190,12 +190,10 @@ mlir::Value PackArrayConversion::allocateTempBuffer( if (useStack && canAllocateTempOnStack(origBox)) assert(!isHeapAllocation && "temp must have been allocated on the stack"); - if (isHeapAllocation) - if (auto baseType = mlir::dyn_cast<fir::ReferenceType>(base.getType())) - if (mlir::isa<fir::BaseBoxType>(baseType.getEleTy())) - return builder.create<fir::LoadOp>(loc, base); - mlir::Type ptrType = base.getType(); + if (llvm::isa<fir::BaseBoxType>(ptrType)) + return base; + mlir::Type tempBoxType = fir::BoxType::get(mlir::isa<fir::HeapType>(ptrType) ? ptrType : fir::unwrapRefType(ptrType)); |
