aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--compile.c3
2 files changed, 7 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 811ba85d77..0722072129 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Mon Nov 16 17:40:39 2015 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_peephole_optimize): optimize replaced leave
+ instruction copied to jump instruction too.
+
Mon Nov 16 16:39:38 2015 Akinori MUSHA <knu@iDaemons.org>
* lib/set.rb: Enable frozen_string_literal.
diff --git a/compile.c b/compile.c
index c34126a3c1..ce0b932c81 100644
--- a/compile.c
+++ b/compile.c
@@ -1956,7 +1956,8 @@ iseq_peephole_optimize(rb_iseq_t *iseq, LINK_ELEMENT *list, const int do_tailcal
unref_destination(iobj);
REPLACE_ELEM((LINK_ELEMENT *)iobj, (LINK_ELEMENT *)eiobj);
INSERT_ELEM_NEXT((LINK_ELEMENT *)eiobj, (LINK_ELEMENT *)popiobj);
- iobj = popiobj;
+ iobj = eiobj;
+ goto again;
}
/*
* useless jump elimination (if/unless destination):