diff --git a/flang/lib/Optimizer/CodeGen/CodeGen.cpp b/flang/lib/Optimizer/CodeGen/CodeGen.cpp index 1714b9e191db7..7bee0232b0d46 100644 --- a/flang/lib/Optimizer/CodeGen/CodeGen.cpp +++ b/flang/lib/Optimizer/CodeGen/CodeGen.cpp @@ -1613,12 +1613,13 @@ struct EmboxCommonConversion : public fir::FIROpConversion { if (gepArgs.size() != 1) fir::emitFatalError(loc, "corrupted substring GEP in fir.embox/fir.rebox"); - mlir::Type outterOffsetTy = gepArgs[0].get().getType(); + mlir::Type outterOffsetTy = + llvm::cast(gepArgs[0]).getType(); mlir::Value cast = this->integerCast(loc, rewriter, outterOffsetTy, *substringOffset); gepArgs[0] = rewriter.create( - loc, outterOffsetTy, gepArgs[0].get(), cast); + loc, outterOffsetTy, llvm::cast(gepArgs[0]), cast); } } mlir::Type llvmPtrTy = ::getLlvmPtrType(resultTy.getContext()); diff --git a/flang/lib/Optimizer/Transforms/AddAliasTags.cpp b/flang/lib/Optimizer/Transforms/AddAliasTags.cpp index f1e70875de0ba..e6fc2ed992e38 100644 --- a/flang/lib/Optimizer/Transforms/AddAliasTags.cpp +++ b/flang/lib/Optimizer/Transforms/AddAliasTags.cpp @@ -227,7 +227,7 @@ void AddAliasTagsPass::runOnAliasInterface(fir::FirAliasTagOpInterface op, source.kind == fir::AliasAnalysis::SourceKind::Argument) { LLVM_DEBUG(llvm::dbgs().indent(2) << "Found reference to dummy argument at " << *op << "\n"); - std::string name = getFuncArgName(source.origin.u.get()); + std::string name = getFuncArgName(llvm::cast(source.origin.u)); if (!name.empty()) tag = state.getFuncTreeWithScope(func, scopeOp) .dummyArgDataTree.getTag(name); @@ -240,7 +240,7 @@ void AddAliasTagsPass::runOnAliasInterface(fir::FirAliasTagOpInterface op, } else if (enableGlobals && source.kind == fir::AliasAnalysis::SourceKind::Global && !source.isBoxData()) { - mlir::SymbolRefAttr glbl = source.origin.u.get(); + mlir::SymbolRefAttr glbl = llvm::cast(source.origin.u); const char *name = glbl.getRootReference().data(); LLVM_DEBUG(llvm::dbgs().indent(2) << "Found reference to global " << name << " at " << *op << "\n"); @@ -250,8 +250,7 @@ void AddAliasTagsPass::runOnAliasInterface(fir::FirAliasTagOpInterface op, } else if (enableDirect && source.kind == fir::AliasAnalysis::SourceKind::Global && source.isBoxData()) { - if (source.origin.u.is()) { - mlir::SymbolRefAttr glbl = source.origin.u.get(); + if (auto glbl = llvm::dyn_cast(source.origin.u)) { const char *name = glbl.getRootReference().data(); LLVM_DEBUG(llvm::dbgs().indent(2) << "Found reference to direct " << name << " at " << *op << "\n"); @@ -269,7 +268,7 @@ void AddAliasTagsPass::runOnAliasInterface(fir::FirAliasTagOpInterface op, source.kind == fir::AliasAnalysis::SourceKind::Allocate) { std::optional name; mlir::Operation *sourceOp = - source.origin.u.get().getDefiningOp(); + llvm::cast(source.origin.u).getDefiningOp(); if (auto alloc = mlir::dyn_cast_or_null(sourceOp)) name = alloc.getUniqName(); else if (auto alloc = mlir::dyn_cast_or_null(sourceOp)) diff --git a/flang/lib/Optimizer/Transforms/StackArrays.cpp b/flang/lib/Optimizer/Transforms/StackArrays.cpp index f9281000d21f0..bdcb8199b790d 100644 --- a/flang/lib/Optimizer/Transforms/StackArrays.cpp +++ b/flang/lib/Optimizer/Transforms/StackArrays.cpp @@ -76,8 +76,9 @@ class InsertionPoint { /// Get contained pointer type or nullptr template T *tryGetPtr() const { - if (location.is()) - return location.get(); + // Use llvm::dyn_cast_if_present because location may be null here. + if (T *ptr = llvm::dyn_cast_if_present(location)) + return ptr; return nullptr; }