From: Matthias Braun Date: Fri, 14 Oct 2011 14:48:27 +0000 (+0200) Subject: generate nicer emitter code X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=52e0c37ffbc6c9c19b0055a57501aa7768e52255;p=libfirm generate nicer emitter code --- diff --git a/ir/be/scripts/generate_emitter_new.pl b/ir/be/scripts/generate_emitter_new.pl index 7aff4d150..a51cae20f 100755 --- a/ir/be/scripts/generate_emitter_new.pl +++ b/ir/be/scripts/generate_emitter_new.pl @@ -85,16 +85,18 @@ foreach my $op (keys(%nodes)) { $line = "static void emit_${arch}_${op}(const ir_node *node)"; - push(@obst_register, " BE_EMIT($op);\n"); + push(@obst_register, " ${arch}_register_emitter(op_${arch}_${op}, emit_${arch}_${op});\n"); if($n{"emit"} eq "") { - push(@obst_func, $line." {\n"); + push(@obst_func, $line."\n"); + push(@obst_func, "{\n"); push(@obst_func, "\t(void) node;\n"); push(@obst_func, "}\n\n"); next; } - push(@obst_func, $line." {\n"); + push(@obst_func, $line."\n"); + push(@obst_func, "{\n"); my @emit = split(/\n/, $n{"emit"}); @@ -156,6 +158,7 @@ print OUT< +#include #include "irnode.h" #include "irop_t.h" @@ -171,22 +174,26 @@ EOF print OUT @obst_func; print OUT<ops.generic == NULL); + op->ops.generic = (op_func)func; +} + /** * Enters the emitter functions for handled nodes into the generic * pointer of an opcode. */ -void $arch\_register_spec_emitters(void) { - -#define BE_EMIT(a) op_$arch\_##a->ops.generic = (op_func)emit_$arch\_##a - - /* generated emitter functions */ +void $arch\_register_spec_emitters(void) +{ EOF print OUT @obst_register; print OUT<