X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmini%2Fmini-codegen.c;h=4482640343b38ca252d75d3e0665ceeea4de7caa;hb=HEAD;hp=a8bf46b288661920056b90f3db2aa85be401c448;hpb=8784e2e1cbbd88b4872536d3a8077702dc547216;p=mono.git diff --git a/mono/mini/mini-codegen.c b/mono/mini/mini-codegen.c index a8bf46b2886..4482640343b 100644 --- a/mono/mini/mini-codegen.c +++ b/mono/mini/mini-codegen.c @@ -1,5 +1,6 @@ -/* - * mini-codegen.c: Arch independent code generation functionality +/** + * \file + * Arch independent code generation functionality * * (C) 2003 Ximian, Inc. */ @@ -2635,6 +2636,19 @@ mono_peephole_ins (MonoBasicBlock *bb, MonoInst *ins) ins->sreg1 = last_ins->sreg1; } break; + case OP_LOADX_MEMBASE: + if (last_ins && last_ins->opcode == OP_STOREX_MEMBASE && + ins->inst_basereg == last_ins->inst_destbasereg && + ins->inst_offset == last_ins->inst_offset) { + if (ins->dreg == last_ins->sreg1) { + MONO_DELETE_INS (bb, ins); + break; + } else { + ins->opcode = OP_XMOVE; + ins->sreg1 = last_ins->sreg1; + } + } + break; case OP_MOVE: case OP_FMOVE: /*