projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fixed bug: keep %% instead of translating it into a function
[libfirm]
/
ir
/
be
/
scripts
/
generate_emitter.pl
diff --git
a/ir/be/scripts/generate_emitter.pl
b/ir/be/scripts/generate_emitter.pl
index
8c367d1
..
a927edb
100755
(executable)
--- 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';
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 = "";
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
}
# substitute all format parameter
- while ($template =~ /
\%([ASD
])(\d)|\%([COM])|\%(\w+)/) {
+ while ($template =~ /
(\%\%)|\%([ASDX
])(\d)|\%([COM])|\%(\w+)/) {
$res .= $`; # get everything before the match
$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");
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");
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";
}
$res .= "%+F";
}
- elsif ($
3
) {
+ elsif ($
4
) {
push(@params, "n");
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";
}
$res .= "\%s";
}
@@
-117,7
+125,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");
}
push(@obst_func, "}\n\n");
}