diff --git a/src/bin/maple b/src/bin/maple index 8bd382bbc3263aa0333034107ddd4f481a5cd43f..79506de0bf33614c9be1a31be5435f4b2c9090bb 100755 Binary files a/src/bin/maple and b/src/bin/maple differ diff --git a/src/maple_be/src/cg/eh_func.cpp b/src/maple_be/src/cg/eh_func.cpp index f05fba58b3c6dda43d73a3745657bb8ff0914252..01e4554e7285dbc92c2b1602f9c472d932869f5f 100644 --- a/src/maple_be/src/cg/eh_func.cpp +++ b/src/maple_be/src/cg/eh_func.cpp @@ -375,6 +375,16 @@ void EHFunc::LowerThrow() { rethrow->ConvertThrowToRuntime(*cgFunc, *newNode); break; } + case OP_cvt: { + TypeCvtNode *cvtNode = static_cast(opnd0); + PrimType prmType = cvtNode->GetPrimType(); + // prmType supposed to be Pointer. + if ((prmType == PTY_ptr) || (prmType == PTY_ref) || (prmType == PTY_a32) || (prmType == PTY_a64)) { + BaseNode *newNode = cvtNode->CloneTree(mirFunc.GetModule()->GetCurFuncCodeMPAllocator()); + rethrow->ConvertThrowToRuntime(*cgFunc, *newNode); + } + break; + } default: ASSERT(false, "unexpected or NYI"); }