Skip to content

Commit accd5eb

Browse files
committed
fix nullptr deref bug
1 parent a6fad01 commit accd5eb

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

flang/lib/Lower/ConvertExpr.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1264,9 +1264,16 @@ class ExprLowering {
12641264
return std::visit([&](const auto &x) { return genval(x); }, des.u);
12651265
}
12661266

1267+
mlir::Type genType(const Fortran::evaluate::DynamicType &dt) {
1268+
if (dt.category() != Fortran::common::TypeCategory::Derived)
1269+
return converter.genType(dt.category(), dt.kind());
1270+
llvm::report_fatal_error("derived types not implemented");
1271+
}
1272+
12671273
template <typename A>
12681274
fir::ExtendedValue gen(const Fortran::evaluate::FunctionRef<A> &func) {
1269-
auto resTy = converter.genType(*func.proc().GetSymbol());
1275+
assert(func.GetType().has_value() && "function has no type");
1276+
auto resTy = genType(*func.GetType());
12701277
auto retVal = genProcedureRef(func, llvm::ArrayRef<mlir::Type>{resTy});
12711278
auto mem = builder.create<fir::AllocaOp>(getLoc(), resTy);
12721279
builder.create<fir::StoreOp>(getLoc(), fir::getBase(retVal), mem);

0 commit comments

Comments
 (0)