From: Florian Krohm Date: Tue, 3 Sep 2013 21:48:02 +0000 (+0000) Subject: deltaIRExpr cannot handle Iex_VECRET and Iex_BBPTR and X-Git-Tag: svn/VALGRIND_3_9_0^2~45 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=82d52f5dc925c5c24b55a23e3dc59d40d90c55cd;p=thirdparty%2Fvalgrind.git deltaIRExpr cannot handle Iex_VECRET and Iex_BBPTR and needs to be guarded. git-svn-id: svn://svn.valgrind.org/vex/trunk@2750 --- 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)