mirror of https://github.com/aamine/cbc
* net/loveruby/cflat/compiler/IRGenerator.java: must compile initializer.
* net/loveruby/cflat/compiler/IRGenerator.java: f = &puts generated addr(addr(puts)), so remove redundant AddressNode. * net/loveruby/cflat/compiler/CodeGenerator.java: now --verbose-asm works. git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4151 1b9489fe-b721-0410-924e-b54b9192deb8
This commit is contained in:
parent
41e5e61c16
commit
f23dd70dd2
11
ChangeLog
11
ChangeLog
|
|
@ -1,3 +1,14 @@
|
|||
Sun Apr 26 17:24:42 2009 Minero Aoki <aamine@loveruby.net>
|
||||
|
||||
* net/loveruby/cflat/compiler/IRGenerator.java: must compile
|
||||
initializer.
|
||||
|
||||
* net/loveruby/cflat/compiler/IRGenerator.java: f = &puts
|
||||
generated addr(addr(puts)), so remove redundant AddressNode.
|
||||
|
||||
* net/loveruby/cflat/compiler/CodeGenerator.java: now
|
||||
--verbose-asm works.
|
||||
|
||||
Sun Apr 26 16:51:02 2009 Minero Aoki <aamine@loveruby.net>
|
||||
|
||||
* net/loveruby/cflat/compiler/IRGenerator.java: treat LHS
|
||||
|
|
|
|||
|
|
@ -752,7 +752,12 @@ public class CodeGenerator implements ASTVisitor<Void,Void>, ELFConstants {
|
|||
// #@@range/compileStmt{
|
||||
protected void compileStmt(StmtNode node) {
|
||||
if (options.isVerboseAsm()) {
|
||||
comment(node.location().numberedLine());
|
||||
if (node.location() == null) {
|
||||
comment("(null)");
|
||||
}
|
||||
else {
|
||||
comment(node.location().numberedLine());
|
||||
}
|
||||
}
|
||||
node.accept(this);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -154,7 +154,7 @@ class IRGenerator implements ASTVisitor<Void, ExprNode> {
|
|||
public Void visit(BlockNode node) {
|
||||
for (DefinedVariable var : node.variables()) {
|
||||
if (var.initializer() != null) {
|
||||
assign(var.location(), ref(var), var.initializer());
|
||||
assign(var.location(), ref(var), transform(var.initializer()));
|
||||
}
|
||||
}
|
||||
scopeStack.add(node.scope());
|
||||
|
|
@ -612,7 +612,14 @@ class IRGenerator implements ASTVisitor<Void, ExprNode> {
|
|||
}
|
||||
|
||||
public ExprNode visit(AddressNode node) {
|
||||
node.setExpr(transform(node.expr()));
|
||||
ExprNode e = transform(node.expr());
|
||||
if (node.expr().shouldEvaluatedToAddress()
|
||||
&& e instanceof AddressNode) {
|
||||
node.setExpr(((AddressNode)e).expr());
|
||||
}
|
||||
else {
|
||||
node.setExpr(e);
|
||||
}
|
||||
return node;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue