From 1ff4c6d45adffcda43d7984df279f478a08a4181 Mon Sep 17 00:00:00 2001 From: Michael Beck Date: Wed, 12 Apr 2006 13:16:11 +0000 Subject: [PATCH] factor out: ia32_emit_align() --- ir/be/ia32/ia32_emitter.c | 49 ++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 26 deletions(-) diff --git a/ir/be/ia32/ia32_emitter.c b/ir/be/ia32/ia32_emitter.c index e9df948dd..b08943700 100644 --- a/ir/be/ia32/ia32_emitter.c +++ b/ir/be/ia32/ia32_emitter.c @@ -1564,65 +1564,62 @@ static void ia32_emit_node(const ir_node *irn, void *env) { } /** - * Emits gas alignment directives for Functions dependend on cpu architecture. + * Emits gas alignment directives + */ +static void ia32_emit_alignment(FILE *F, unsigned align, unsigned skip) { + fprintf(F, "\t.p2align %u,,%u\n", align, skip); +} + +/** + * Emits gas alignment directives for Functions depended on cpu architecture. */ static void ia32_emit_align_func(FILE *F, cpu_support cpu) { + unsigned align; unsigned maximum_skip; + /* gcc doesn't emit alignment for p4 ?*/ if (cpu == arch_pentium_4) return; - fprintf(F, "\t.p2align "); - switch (cpu) { case arch_i386: - /* align 4 bytes, maximum skip 3 bytes */ - fprintf(F, "2,,3"); + align = 2; maximum_skip = 3; break; case arch_i486: - /* align 16 bytes, maximum skip 15 bytes */ - fprintf(F, "4,,15"); + align = 4; maximum_skip = 15; break; case arch_k6: - /* align 32 bytes, maximum skip 31 bytes */ - fprintf(F, "5,,31"); + align = 5; maximum_skip = 31; break; default: - /* align 16 bytes, maximum skip 15 bytes */ - fprintf(F, "4,,15"); + align = 4; maximum_skip = 15; } - - fprintf(F, "\n"); + ia32_emit_alignment(F, align, maximum_skip); } /** - * Emits gas alignment directives for Labels dependend on cpu architecture. + * Emits gas alignment directives for Labels depended on cpu architecture. */ static void ia32_emit_align_label(FILE *F, cpu_support cpu) { + unsigned align; unsigned maximum_skip; + /* gcc doesn't emit alignment for p4 ?*/ if (cpu == arch_pentium_4) return; - fprintf(F, "\t.p2align "); - switch (cpu) { case arch_i386: - /* align 4 bytes, maximum skip 3 bytes */ - fprintf(F, "2,,3"); + align = 2; maximum_skip = 3; break; case arch_i486: - /* align 16 bytes, maximum skip 15 bytes */ - fprintf(F, "4,,15"); + align = 4; maximum_skip = 15; break; case arch_k6: - /* align 32 bytes, maximum skip 7 bytes */ - fprintf(F, "5,,7"); + align = 5; maximum_skip = 7; break; default: - /* align 16 bytes, maximum skip 7 bytes */ - fprintf(F, "4,,7"); + align = 4; maximum_skip = 7; } - - fprintf(F, "\n"); + ia32_emit_alignment(F, align, maximum_skip); } /** -- 2.20.1