diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-02-16 01:15:35 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-02-16 01:15:35 +0000 |
commit | 86de3e411aa65b273d1123f7260c016f31fc08ec (patch) | |
tree | 02532d324d9925c754c326a7f100d5209cab3281 | |
parent | b67f65dbd65f7b672747ab7f7b13693441ca24d8 (diff) | |
download | ruby-86de3e411aa65b273d1123f7260c016f31fc08ec.tar.gz |
compile.c: keep debug info
* compile.c (iseq_peephole_optimize): keep freezestring insn
with debug info. [Bug #14475]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62418 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | compile.c | 3 | ||||
-rw-r--r-- | test/ruby/test_rubyoptions.rb | 2 |
2 files changed, 4 insertions, 1 deletions
@@ -2846,11 +2846,12 @@ iseq_peephole_optimize(rb_iseq_t *iseq, LINK_ELEMENT *list, const int do_tailcal } if (IS_INSN_ID(iobj, freezestring) && + NIL_P(OPERAND_AT(iobj, 0)) && IS_NEXT_INSN_ID(&iobj->link, send)) { INSN *niobj = (INSN *)iobj->link.next; struct rb_call_info *ci = (struct rb_call_info *)OPERAND_AT(niobj, 0); /* - * freezestring debug_info + * freezestring nil # no debug_info * send <:+@, 0, ARG_SIMPLE> # :-@, too * => * send <:+@, 0, ARG_SIMPLE> # :-@, too diff --git a/test/ruby/test_rubyoptions.rb b/test/ruby/test_rubyoptions.rb index 0fc96b5743..083572ca67 100644 --- a/test/ruby/test_rubyoptions.rb +++ b/test/ruby/test_rubyoptions.rb @@ -947,6 +947,8 @@ class TestRubyOptions < Test::Unit::TestCase [ ['"foo" << "bar"', err], ['"foo#{123}bar" << "bar"', err], + ['+"foo#{123}bar" << "bar"', []], + ['-"foo#{123}bar" << "bar"', freeze && debug ? with_debug_pat : wo_debug_pat], ].each do |code, expected| assert_in_out_err(opt, code, [], expected, [opt, code]) end |