From 86de3e411aa65b273d1123f7260c016f31fc08ec Mon Sep 17 00:00:00 2001 From: nobu Date: Fri, 16 Feb 2018 01:15:35 +0000 Subject: 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 --- compile.c | 3 ++- test/ruby/test_rubyoptions.rb | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/compile.c b/compile.c index 7d065b25d3..ba380ab408 100644 --- a/compile.c +++ b/compile.c @@ -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 -- cgit v1.2.3