diff --git a/llvm/lib/CodeGen/TypePromotion.cpp b/llvm/lib/CodeGen/TypePromotion.cpp --- a/llvm/lib/CodeGen/TypePromotion.cpp +++ b/llvm/lib/CodeGen/TypePromotion.cpp @@ -257,7 +257,8 @@ if (auto *Store = dyn_cast(V)) return LessOrEqualTypeSize(Store->getValueOperand()); if (auto *Return = dyn_cast(V)) - return LessOrEqualTypeSize(Return->getReturnValue()); + if (auto *Val = Return->getReturnValue()) + return LessOrEqualTypeSize(Val); if (auto *ZExt = dyn_cast(V)) return GreaterThanTypeSize(ZExt); if (auto *Switch = dyn_cast(V))