diff --git a/net/loveruby/cflat/compiler/IRGenerator.java b/net/loveruby/cflat/compiler/IRGenerator.java index 70f9a10..6a96132 100644 --- a/net/loveruby/cflat/compiler/IRGenerator.java +++ b/net/loveruby/cflat/compiler/IRGenerator.java @@ -90,9 +90,11 @@ class IRGenerator implements ASTVisitor { } // #@@} + // #@@range/assign{ private void assign(Location loc, Expr lhs, Expr rhs) { stmts.add(new Assign(loc, addressOf(lhs), rhs)); } + // #@@} private DefinedVariable tmpVar(Type t) { return scopeStack.getLast().allocateTmp(t); @@ -692,7 +694,9 @@ class IRGenerator implements ASTVisitor { Expr expr = addressOf(transformExpr(node.expr())); Expr offset = ptrdiff(node.offset()); Expr addr = new Bin(ptr_t(), Op.ADD, expr, offset); + // #@@range/Member_ret{ return node.isLoadable() ? mem(addr, node.type()) : addr; + // #@@} } // #@@} @@ -801,9 +805,11 @@ class IRGenerator implements ASTVisitor { } // mem(expr) -> (Mem expr) + // #@@range/mem{ private Mem mem(Expr expr, Type t) { return new Mem(asmType(t), expr); } + // #@@} // #@@range/ptrdiff{ private Int ptrdiff(long n) {