From 0f1ed68f4d5c06cb6fbecb6fbcafb92b11b0fe60 Mon Sep 17 00:00:00 2001 From: Florian Krohm Date: Tue, 16 Sep 2014 22:33:52 +0000 Subject: [PATCH] Couple of fixes: - deepCopyIRConst failed to copy Ico_V256 constants - deepCopyIRExpr did not copy Iex_Binder expressions - handle_gets_Stmt should also handle an Ist_Put statement git-svn-id: svn://svn.valgrind.org/vex/trunk@2953 --- VEX/priv/ir_defs.c | 4 ++++ VEX/priv/ir_opt.c | 9 +++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/VEX/priv/ir_defs.c b/VEX/priv/ir_defs.c index 5b840b9867..80d273c1be 100644 --- a/VEX/priv/ir_defs.c +++ b/VEX/priv/ir_defs.c @@ -2231,6 +2231,7 @@ IRConst* deepCopyIRConst ( IRConst* c ) case Ico_F64: return IRConst_F64(c->Ico.F64); case Ico_F64i: return IRConst_F64i(c->Ico.F64i); case Ico_V128: return IRConst_V128(c->Ico.V128); + case Ico_V256: return IRConst_V256(c->Ico.V256); default: vpanic("deepCopyIRConst"); } } @@ -2303,6 +2304,9 @@ IRExpr* deepCopyIRExpr ( IRExpr* e ) case Iex_BBPTR: return IRExpr_BBPTR(); + case Iex_Binder: + return IRExpr_Binder(e->Iex.Binder.binder); + default: vpanic("deepCopyIRExpr"); } diff --git a/VEX/priv/ir_opt.c b/VEX/priv/ir_opt.c index 817f270374..d132efca27 100644 --- a/VEX/priv/ir_opt.c +++ b/VEX/priv/ir_opt.c @@ -803,6 +803,10 @@ static void handle_gets_Stmt ( vassert(isIRAtom(st->Ist.Exit.guard)); break; + case Ist_Put: + vassert(isIRAtom(st->Ist.Put.data)); + break; + case Ist_PutI: vassert(isIRAtom(st->Ist.PutI.details->ix)); vassert(isIRAtom(st->Ist.PutI.details->data)); @@ -849,9 +853,10 @@ static void handle_gets_Stmt ( env->inuse[j] = False; } break; - default: + case VexRegUpdAllregsAtEachInsn: // VexRegUpdAllregsAtEachInsn cannot happen here. - // Neither any rubbish other value. + // fall through + default: vassert(0); } } /* if (memRW) */ -- 2.47.2