From: Julian Seward Date: Fri, 2 Jul 2004 17:29:14 +0000 (+0000) Subject: Handle case of assignment to IRTemp. X-Git-Tag: svn/VALGRIND_3_0_1^2~1298 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6bf777008df10c481e2131f9514464a542591ec7;p=thirdparty%2Fvalgrind.git Handle case of assignment to IRTemp. git-svn-id: svn://svn.valgrind.org/vex/trunk@36 --- diff --git a/VEX/isel_x86.c b/VEX/isel_x86.c index 90f43c39cd..42bb34d026 100644 --- a/VEX/isel_x86.c +++ b/VEX/isel_x86.c @@ -270,6 +270,19 @@ void iselStmt ( ISelEnv* env, IRStmt* stmt ) return; } + case Ist_Tmp: { + IRTemp tmp = stmt->Ist.Tmp.tmp; + IRType ty = lookupIRTypeEnv(env->type_env, tmp); + if (ty == Ity_I32) { + X86RMI* rmi = iselIntExpr_RMI(env, stmt->Ist.Tmp.expr); + HReg dst = lookupIRTemp(env, tmp); + addInstr(env, + X86Instr_Alu32R(Xalu_MOV,rmi,dst)); + return; + } + + } + default: break; } ppIRStmt(stderr, stmt); @@ -339,7 +352,7 @@ HInstrArray* iselBB ( IRBB* bb ) } env->vregmap[i].vreg = hreg; } - env->ctr = 100; //env->n_vregmap; + env->ctr = env->n_vregmap; /* Ok, finally we can iterate over the statements. */ for (stmt = bb->stmts; stmt; stmt=stmt->link)