From: Christoph Mallon Date: Wed, 8 Oct 2008 08:54:21 +0000 (+0000) Subject: Simplify emit_CopyB_prolog() and remove an unnecessary bit filter before calling it. X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;ds=sidebyside;h=b644c35fa89324522c70d601a2582a22d66098fb;p=libfirm Simplify emit_CopyB_prolog() and remove an unnecessary bit filter before calling it. [r22598] --- diff --git a/ir/be/ia32/ia32_emitter.c b/ir/be/ia32/ia32_emitter.c index c4eabd86a..af53e41e3 100644 --- a/ir/be/ia32/ia32_emitter.c +++ b/ir/be/ia32/ia32_emitter.c @@ -1373,21 +1373,13 @@ static void emit_CopyB_prolog(unsigned size) be_emit_cstring("\tcld"); be_emit_finish_line_gas(NULL); - switch (size) { - case 1: - be_emit_cstring("\tmovsb"); - be_emit_finish_line_gas(NULL); - break; - case 2: - be_emit_cstring("\tmovsw"); - be_emit_finish_line_gas(NULL); - break; - case 3: + if (size & 1) { be_emit_cstring("\tmovsb"); be_emit_finish_line_gas(NULL); + } + if (size & 2) { be_emit_cstring("\tmovsw"); be_emit_finish_line_gas(NULL); - break; } } @@ -1411,7 +1403,7 @@ static void emit_ia32_CopyB_i(const ir_node *node) { unsigned size = get_ia32_copyb_size(node); - emit_CopyB_prolog(size & 0x3); + emit_CopyB_prolog(size); size >>= 2; while (size--) {