From 82d52f5dc925c5c24b55a23e3dc59d40d90c55cd Mon Sep 17 00:00:00 2001 From: Florian Krohm Date: Tue, 3 Sep 2013 21:48:02 +0000 Subject: [PATCH] deltaIRExpr cannot handle Iex_VECRET and Iex_BBPTR and needs to be guarded. git-svn-id: svn://svn.valgrind.org/vex/trunk@2750 --- VEX/priv/ir_opt.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/VEX/priv/ir_opt.c b/VEX/priv/ir_opt.c index 5982495e94..b36c2d5a4c 100644 --- a/VEX/priv/ir_opt.c +++ b/VEX/priv/ir_opt.c @@ -4457,8 +4457,11 @@ static void deltaIRStmt ( IRStmt* st, Int delta ) case Ist_Dirty: d = st->Ist.Dirty.details; deltaIRExpr(d->guard, delta); - for (i = 0; d->args[i]; i++) - deltaIRExpr(d->args[i], delta); + for (i = 0; d->args[i]; i++) { + IRExpr* arg = d->args[i]; + if (LIKELY(!is_IRExpr_VECRET_or_BBPTR(arg))) + deltaIRExpr(arg, delta); + } if (d->tmp != IRTemp_INVALID) d->tmp += delta; if (d->mAddr) -- 2.47.2