From 009473757550894ecc0579006a8a590eb81435fa Mon Sep 17 00:00:00 2001 From: nobu Date: Fri, 1 Jan 2016 03:05:55 +0000 Subject: compile.c: remove unreferred label * compile.c (remove_unreachable_chunk): remove unreferred label to optimize away unreachable chunk. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53402 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ compile.c | 3 +++ 2 files changed, 8 insertions(+) diff --git a/ChangeLog b/ChangeLog index f1a15d5145..37e61de052 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Fri Jan 1 12:05:53 2016 Nobuyoshi Nakada + + * compile.c (remove_unreachable_chunk): remove unreferred label + to optimize away unreachable chunk. + Fri Jan 1 11:42:57 2016 James Edward Gray II * lib/csv.rb (CSV): Add a liberal_parsing option. diff --git a/compile.c b/compile.c index 5c6c5f5f32..b361da1164 100644 --- a/compile.c +++ b/compile.c @@ -1968,6 +1968,9 @@ remove_unreachable_chunk(LINK_ELEMENT *i) break; } } + else if (i->type == ISEQ_ELEMENT_LABEL) { + if (((LABEL *)i)->refcnt > 0) break; + } else break; REMOVE_ELEM(i); removed = 1; -- cgit v1.2.3