X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fscripts%2Fgenerate_emitter.pl;h=a927edbf052274d04e404dcbe85cfcaf9fa959fc;hb=516482fa4892951b0f20a507f10cc7488ac6b250;hp=63102df355a84990e59acf82b30e79e8963cfbd2;hpb=8d285c0dc4eb381d7ab56b77d08956bfa7bb62cf;p=libfirm diff --git a/ir/be/scripts/generate_emitter.pl b/ir/be/scripts/generate_emitter.pl index 63102df35..a927edbf0 100755 --- a/ir/be/scripts/generate_emitter.pl +++ b/ir/be/scripts/generate_emitter.pl @@ -64,6 +64,7 @@ foreach my $op (keys(%nodes)) { my $cnt = 0; my $buf = 'cmd_buf'; + push(@obst_func, " cmnt_buf[0] = '\\0';\n"); foreach $template (split(/$comment_string_quoted/, $fmt, 2)) { my @params; my $res = ""; @@ -78,27 +79,34 @@ 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") { + if ($1) { + $res .= "%%"; + } + elsif ($2 && $2 eq "S") { + push(@params, "n"); + $res .= "%".$3."S"; # substitute %Sx with %xS + } + elsif ($2 && $2 eq "D") { push(@params, "n"); - $res .= "%".$2."S"; # substitute %Sx with %xS + $res .= "%".$3."D"; # substitute %Dx with %xD } - elsif ($1 && $1 eq "D") { + elsif ($2 && $2 eq "X") { push(@params, "n"); - $res .= "%".$2."D"; # substitute %Dx with %xD + $res .= "%".$3."X"; # substitute %Xx with %xX } - elsif ($1 && $1 eq "A") { - push(@params, "get_irn_n(n, ".($2 - 1).")"); + elsif ($2 && $2 eq "A") { + push(@params, "get_irn_n(n, ".($3 - 1).")"); $res .= "%+F"; } - elsif ($3) { + elsif ($4) { push(@params, "n"); - $res .= "%".$3; + $res .= "%".$4; } - elsif ($4) { # backend provided function to call, has to return a string - push(@params, $4."(n, env)"); + elsif ($5) { # backend provided function to call, has to return a string + push(@params, $5."(n, env)"); $res .= "\%s"; }