projects
/
uebersetzerbau-ss10.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
e9d7cd6
)
codea: bessere registerbelegung fuer multiplikation bzw. subtraktion
author
Bernhard Urban
<lewurm@gmail.com>
Mon, 17 May 2010 17:56:22 +0000
(19:56 +0200)
committer
Bernhard Urban
<lewurm@gmail.com>
Mon, 17 May 2010 17:56:22 +0000
(19:56 +0200)
codea/parser.y
patch
|
blob
|
history
diff --git
a/codea/parser.y
b/codea/parser.y
index b3b3726c781697c1d42ed2b62065141651ae78e5..c01bee7d93c7480451077e00ce4f2f346b74a563 100644
(file)
--- a/
codea/parser.y
+++ b/
codea/parser.y
@@
-235,11
+235,14
@@
Expr:
@i @Expr.imm@ = @Term.imm@ && @Minusterm.imm@;
@reg {
@i @Expr.imm@ = @Term.imm@ && @Minusterm.imm@;
@reg {
- /* TODO */
if(!(@Expr.node@->kids[0] == TREENULL && @Expr.node@->kids[1] == TREENULL)) {
@Term.node@->reg = @Expr.node@->reg;
@Term.node@->skip = 0;
if(!(@Expr.node@->kids[0] == TREENULL && @Expr.node@->kids[1] == TREENULL)) {
@Term.node@->reg = @Expr.node@->reg;
@Term.node@->skip = 0;
- @Minusterm.node@->reg = next_reg(@Term.node@->reg, @Expr.node@->skip, @Expr.gparamges@);
+ if(@Minusterm.imm@) {
+ @Minusterm.node@->reg = @Expr.node@->reg;
+ } else {
+ @Minusterm.node@->reg = next_reg(@Term.node@->reg, @Expr.node@->skip, @Expr.gparamges@);
+ }
}
}
@}
}
}
@}
@@
-251,10
+254,13
@@
Expr:
@i @Expr.imm@ = @Term.imm@ && @Multerm.imm@;
@reg {
@i @Expr.imm@ = @Term.imm@ && @Multerm.imm@;
@reg {
- /* TODO */
@Term.node@->reg = @Expr.node@->reg;
@Term.node@->skip = 0;
@Term.node@->reg = @Expr.node@->reg;
@Term.node@->skip = 0;
- @Multerm.node@->reg = next_reg(@Term.node@->reg, @Expr.node@->skip, @Expr.gparamges@);
+ if(@Term.imm@) {
+ @Multerm.node@->reg = @Expr.node@->reg;
+ } else {
+ @Multerm.node@->reg = next_reg(@Term.node@->reg, @Expr.node@->skip, @Expr.gparamges@);
+ }
}
@}
}
@}