From 732ebf51d454c560ff74d50de6e884e8612509db Mon Sep 17 00:00:00 2001 From: Minero Aoki Date: Sun, 26 Apr 2009 07:10:29 +0000 Subject: [PATCH] * net/loveruby/cflat/compiler/Simplifier.java (SwitchNode): missing end label. git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4148 1b9489fe-b721-0410-924e-b54b9192deb8 --- ChangeLog | 5 +++++ net/loveruby/cflat/compiler/Simplifier.java | 8 +++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index bb54f8d..2d6c60c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Sun Apr 26 16:10:27 2009 Minero Aoki + + * net/loveruby/cflat/compiler/Simplifier.java (SwitchNode): + missing end label. + Sun Apr 26 15:48:10 2009 Minero Aoki * net/loveruby/cflat/ast/FuncallNode.java: make a static funcall diff --git a/net/loveruby/cflat/compiler/Simplifier.java b/net/loveruby/cflat/compiler/Simplifier.java index 603f200..a84871d 100644 --- a/net/loveruby/cflat/compiler/Simplifier.java +++ b/net/loveruby/cflat/compiler/Simplifier.java @@ -180,13 +180,18 @@ class Simplifier implements ASTVisitor { } public Void visit(SwitchNode node) { + Label endLabel = new Label(); + stmts.add(node); node.setCond(transform(node.cond())); + pushBreak(endLabel); for (CaseNode c : node.cases()) { label(c.beginLabel()); transform(c.body()); - jump(node.endLabel()); + jump(endLabel); } + popBreak(); + label(endLabel); return null; } @@ -198,6 +203,7 @@ class Simplifier implements ASTVisitor { Label begLabel = new Label(); Label bodyLabel = new Label(); Label endLabel = new Label(); + label(begLabel); branch(transform(node.cond()), bodyLabel, endLabel); label(bodyLabel);