diff options
Diffstat (limited to 'flang/lib/Optimizer/CodeGen/FIROpPatterns.cpp')
| -rw-r--r-- | flang/lib/Optimizer/CodeGen/FIROpPatterns.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/flang/lib/Optimizer/CodeGen/FIROpPatterns.cpp b/flang/lib/Optimizer/CodeGen/FIROpPatterns.cpp index b9a28b89d9a5..5db9d8ac528e 100644 --- a/flang/lib/Optimizer/CodeGen/FIROpPatterns.cpp +++ b/flang/lib/Optimizer/CodeGen/FIROpPatterns.cpp @@ -102,9 +102,11 @@ mlir::Value ConvertFIRToLLVMPattern::getValueFromBox( auto p = rewriter.create<mlir::LLVM::GEPOp>( loc, pty, boxTy.llvm, box, llvm::ArrayRef<mlir::LLVM::GEPArg>{0, boxValue}); - auto loadOp = rewriter.create<mlir::LLVM::LoadOp>(loc, resultTy, p); + auto fldTy = getBoxEleTy(boxTy.llvm, {boxValue}); + auto loadOp = rewriter.create<mlir::LLVM::LoadOp>(loc, fldTy, p); + auto castOp = integerCast(loc, rewriter, resultTy, loadOp); attachTBAATag(loadOp, boxTy.fir, nullptr, p); - return loadOp; + return castOp; } return rewriter.create<mlir::LLVM::ExtractValueOp>(loc, box, boxValue); } |
