X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fscripts%2Fgenerate_emitter.pl;h=ebbf7a35695ede27a2bd0fea44611c59e7215ae0;hb=1161999117f5c0f56b3af2dc9bb7150e03761905;hp=2262bdaa713b74eb3764348ade0af8afb40e4749;hpb=88209e771a7f2f0409e1d563bc126e4174728944;p=libfirm diff --git a/ir/be/scripts/generate_emitter.pl b/ir/be/scripts/generate_emitter.pl index 2262bdaa7..ebbf7a356 100755 --- a/ir/be/scripts/generate_emitter.pl +++ b/ir/be/scripts/generate_emitter.pl @@ -28,6 +28,8 @@ unless ($return = do $specfile) { } use strict "subs"; +my $comment_string_quoted = quotemeta($comment_string); + my $target_c = $target_dir."/gen_".$arch."_emitter.c"; my $target_h = $target_dir."/gen_".$arch."_emitter.h"; @@ -62,7 +64,8 @@ foreach my $op (keys(%nodes)) { my $cnt = 0; my $buf = 'cmd_buf'; - foreach $template (split(/$comment_string/, $fmt, 2)) { + push(@obst_func, " cmnt_buf[0] = '\\0';\n"); + foreach $template (split(/$comment_string_quoted/, $fmt, 2)) { my @params; my $res = ""; $cnt++; @@ -76,7 +79,7 @@ foreach my $op (keys(%nodes)) { } # substitute all format parameter - while ($template =~ /\%([ASD])(\d)|\%([COM])|\%(\w+)/) { + while ($template =~ /\%([ASDX])(\d)|\%([COM])|\%(\w+)/) { $res .= $`; # get everything before the match if ($1 && $1 eq "S") { @@ -87,6 +90,10 @@ foreach my $op (keys(%nodes)) { push(@params, "n"); $res .= "%".$2."D"; # substitute %Dx with %xD } + elsif ($1 && $1 eq "X") { + push(@params, "n"); + $res .= "%".$2."X"; # substitute %Xx with %xX + } elsif ($1 && $1 eq "A") { push(@params, "get_irn_n(n, ".($2 - 1).")"); $res .= "%+F"; @@ -115,7 +122,7 @@ foreach my $op (keys(%nodes)) { } } - push(@obst_func, ' lc_efprintf(arg_env, F, "\t%-35s %-60s /* %+F */\n", cmd_buf, cmnt_buf, n);'."\n"); + push(@obst_func, ' lc_efprintf(arg_env, F, "\t%-35s %-60s /* %+F (%+G) */\n", cmd_buf, cmnt_buf, n, n);'."\n"); push(@obst_func, "}\n\n"); }