diff --git a/flang/lib/Lower/Bridge.cpp b/flang/lib/Lower/Bridge.cpp --- a/flang/lib/Lower/Bridge.cpp +++ b/flang/lib/Lower/Bridge.cpp @@ -2859,10 +2859,10 @@ // Assignment to/from polymorphic entities are done with the // runtime. - if (lhsType->IsPolymorphic() || - lhsType->IsUnlimitedPolymorphic() || - rhsType->IsPolymorphic() || - rhsType->IsUnlimitedPolymorphic()) { + if (rhsType && (lhsType->IsPolymorphic() || + lhsType->IsUnlimitedPolymorphic() || + rhsType->IsPolymorphic() || + rhsType->IsUnlimitedPolymorphic())) { mlir::Value lhs; if (Fortran::lower::isWholeAllocatable(assign.lhs)) lhs = genExprMutableBox(loc, assign.lhs).getAddr();