debase-ruby_core_source 3.2.1 → 3.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -0
  3. data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/darray.h +246 -0
  4. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/debug_counter.h +7 -10
  5. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/eval_intern.h +3 -1
  6. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/id.h +44 -0
  7. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/insns_info.inc +68 -94
  8. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/array.h +2 -20
  9. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/bits.h +6 -2
  10. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/class.h +7 -2
  11. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/cmdlineopt.h +3 -1
  12. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/compile.h +0 -1
  13. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/error.h +24 -2
  14. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/gc.h +28 -0
  15. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/hash.h +18 -44
  16. data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/internal/io.h +137 -0
  17. data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/internal/parse.h +133 -0
  18. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/process.h +0 -14
  19. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/range.h +2 -2
  20. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/re.h +1 -1
  21. data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/internal/ruby_parser.h +69 -0
  22. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/signal.h +4 -0
  23. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/string.h +15 -0
  24. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/struct.h +9 -34
  25. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/thread.h +13 -0
  26. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/variable.h +16 -33
  27. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/vm.h +5 -0
  28. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/iseq.h +4 -4
  29. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/method.h +1 -1
  30. data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/node.h +125 -0
  31. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/parse.h +6 -4
  32. data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/parser_bits.h +564 -0
  33. data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/parser_node.h +133 -0
  34. data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/parser_st.h +162 -0
  35. data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/parser_value.h +106 -0
  36. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/ractor_core.h +3 -3
  37. data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/revision.h +5 -0
  38. data/lib/debase/ruby_core_source/ruby-3.3.0-preview2/rubyparser.h +628 -0
  39. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/symbol.h +1 -1
  40. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/thread_pthread.h +11 -13
  41. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/thread_win32.h +0 -5
  42. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/version.h +1 -1
  43. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/vm.inc +303 -404
  44. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/vm_callinfo.h +50 -16
  45. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/vm_core.h +29 -47
  46. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/vm_exec.h +11 -10
  47. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/vm_insnhelper.h +20 -23
  48. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/vm_opts.h +0 -5
  49. data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/yjit.h +4 -6
  50. data/lib/debase/ruby_core_source/version.rb +1 -1
  51. metadata +119 -115
  52. data/lib/debase/ruby_core_source/ruby-3.3.0-preview1/darray.h +0 -179
  53. data/lib/debase/ruby_core_source/ruby-3.3.0-preview1/internal/io.h +0 -38
  54. data/lib/debase/ruby_core_source/ruby-3.3.0-preview1/internal/parse.h +0 -25
  55. data/lib/debase/ruby_core_source/ruby-3.3.0-preview1/node.h +0 -514
  56. data/lib/debase/ruby_core_source/ruby-3.3.0-preview1/opt_sc.inc +0 -109
  57. data/lib/debase/ruby_core_source/ruby-3.3.0-preview1/revision.h +0 -5
  58. data/lib/debase/ruby_core_source/ruby-3.3.0-preview1/transient_heap.h +0 -65
  59. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/addr2line.h +0 -0
  60. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/builtin.h +0 -0
  61. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/ccan/build_assert/build_assert.h +0 -0
  62. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/ccan/check_type/check_type.h +0 -0
  63. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/ccan/container_of/container_of.h +0 -0
  64. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/ccan/list/list.h +0 -0
  65. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/ccan/str/str.h +0 -0
  66. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/constant.h +0 -0
  67. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/dln.h +0 -0
  68. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/encindex.h +0 -0
  69. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/hrtime.h +0 -0
  70. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/id_table.h +0 -0
  71. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/insns.inc +0 -0
  72. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/basic_operators.h +0 -0
  73. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/bignum.h +0 -0
  74. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/compar.h +0 -0
  75. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/compilers.h +0 -0
  76. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/complex.h +0 -0
  77. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/cont.h +0 -0
  78. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/dir.h +0 -0
  79. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/enc.h +0 -0
  80. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/encoding.h +0 -0
  81. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/enum.h +0 -0
  82. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/enumerator.h +0 -0
  83. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/eval.h +0 -0
  84. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/file.h +0 -0
  85. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/fixnum.h +0 -0
  86. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/imemo.h +0 -0
  87. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/inits.h +0 -0
  88. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/load.h +0 -0
  89. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/loadpath.h +0 -0
  90. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/math.h +0 -0
  91. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/missing.h +0 -0
  92. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/numeric.h +0 -0
  93. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/object.h +0 -0
  94. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/proc.h +0 -0
  95. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/ractor.h +0 -0
  96. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/random.h +0 -0
  97. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/rational.h +0 -0
  98. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/sanitizers.h +0 -0
  99. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/serial.h +0 -0
  100. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/static_assert.h +0 -0
  101. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/symbol.h +0 -0
  102. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/time.h +0 -0
  103. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/transcode.h +0 -0
  104. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/util.h +0 -0
  105. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal/warnings.h +0 -0
  106. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/internal.h +0 -0
  107. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/known_errors.inc +0 -0
  108. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/node_name.inc +0 -0
  109. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/optinsn.inc +0 -0
  110. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/optunifs.inc +0 -0
  111. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/probes_helper.h +0 -0
  112. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/regenc.h +0 -0
  113. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/regint.h +0 -0
  114. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/regparse.h +0 -0
  115. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/rjit.h +0 -0
  116. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/rjit_c.h +0 -0
  117. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/ruby_assert.h +0 -0
  118. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/ruby_atomic.h +0 -0
  119. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/shape.h +0 -0
  120. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/siphash.h +0 -0
  121. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/thread_none.h +0 -0
  122. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/timev.h +0 -0
  123. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/transcode_data.h +0 -0
  124. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/variable.h +0 -0
  125. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/vm_call_iseq_optimized.inc +0 -0
  126. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/vm_debug.h +0 -0
  127. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/vm_sync.h +0 -0
  128. /data/lib/debase/ruby_core_source/{ruby-3.3.0-preview1 → ruby-3.3.0-preview2}/vmtc.inc +0 -0
@@ -47,16 +47,15 @@ INSN_ENTRY(nop)
47
47
 
48
48
  /* ### Declare and assign variables. ### */
49
49
  # define INSN_ATTR(x) attr_ ## x ## _nop()
50
- const bool leaf = INSN_ATTR(leaf);
50
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
51
51
 
52
52
  /* ### Instruction preambles. ### */
53
- if (! leaf) ADD_PC(INSN_ATTR(width));
53
+ ADD_PC(INSN_ATTR(width));
54
54
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
55
55
 
56
56
  /* ### Instruction trailers. ### */
57
57
  CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
58
58
  INC_SP(INSN_ATTR(sp_inc));
59
- if (leaf) ADD_PC(INSN_ATTR(width));
60
59
  # undef INSN_ATTR
61
60
 
62
61
  /* ### Leave the instruction. ### */
@@ -74,11 +73,11 @@ INSN_ENTRY(getlocal)
74
73
  lindex_t idx = (lindex_t)GET_OPERAND(1);
75
74
  rb_num_t level = (rb_num_t)GET_OPERAND(2);
76
75
  # define INSN_ATTR(x) attr_ ## x ## _getlocal(idx, level)
77
- const bool leaf = INSN_ATTR(leaf);
76
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
78
77
  VALUE val;
79
78
 
80
79
  /* ### Instruction preambles. ### */
81
- if (! leaf) ADD_PC(INSN_ATTR(width));
80
+ ADD_PC(INSN_ATTR(width));
82
81
  SETUP_CANARY(leaf);
83
82
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
84
83
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, idx);
@@ -92,7 +91,7 @@ INSN_ENTRY(getlocal)
92
91
  RB_DEBUG_COUNTER_INC(lvar_get);
93
92
  (void)RB_DEBUG_COUNTER_INC_IF(lvar_get_dynamic, level > 0);
94
93
  }
95
- # line 96 "vm.inc"
94
+ # line 95 "vm.inc"
96
95
  # undef NAME_OF_CURRENT_INSN
97
96
 
98
97
  /* ### Instruction trailers. ### */
@@ -102,7 +101,6 @@ INSN_ENTRY(getlocal)
102
101
  TOPN(0) = val;
103
102
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
104
103
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
105
- if (leaf) ADD_PC(INSN_ATTR(width));
106
104
  # undef INSN_ATTR
107
105
 
108
106
  /* ### Leave the instruction. ### */
@@ -120,11 +118,11 @@ INSN_ENTRY(setlocal)
120
118
  lindex_t idx = (lindex_t)GET_OPERAND(1);
121
119
  rb_num_t level = (rb_num_t)GET_OPERAND(2);
122
120
  # define INSN_ATTR(x) attr_ ## x ## _setlocal(idx, level)
123
- const bool leaf = INSN_ATTR(leaf);
121
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
124
122
  VALUE val = TOPN(0);
125
123
 
126
124
  /* ### Instruction preambles. ### */
127
- if (! leaf) ADD_PC(INSN_ATTR(width));
125
+ ADD_PC(INSN_ATTR(width));
128
126
  SETUP_CANARY(leaf);
129
127
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
130
128
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, idx);
@@ -138,14 +136,13 @@ INSN_ENTRY(setlocal)
138
136
  RB_DEBUG_COUNTER_INC(lvar_set);
139
137
  (void)RB_DEBUG_COUNTER_INC_IF(lvar_set_dynamic, level > 0);
140
138
  }
141
- # line 142 "vm.inc"
139
+ # line 140 "vm.inc"
142
140
  # undef NAME_OF_CURRENT_INSN
143
141
 
144
142
  /* ### Instruction trailers. ### */
145
143
  CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
146
144
  CHECK_CANARY(leaf, INSN_ATTR(bin));
147
145
  INC_SP(INSN_ATTR(sp_inc));
148
- if (leaf) ADD_PC(INSN_ATTR(width));
149
146
  # undef INSN_ATTR
150
147
 
151
148
  /* ### Leave the instruction. ### */
@@ -163,11 +160,11 @@ INSN_ENTRY(getblockparam)
163
160
  lindex_t idx = (lindex_t)GET_OPERAND(1);
164
161
  rb_num_t level = (rb_num_t)GET_OPERAND(2);
165
162
  # define INSN_ATTR(x) attr_ ## x ## _getblockparam(idx, level)
166
- const bool leaf = INSN_ATTR(leaf);
163
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
167
164
  VALUE val;
168
165
 
169
166
  /* ### Instruction preambles. ### */
170
- if (! leaf) ADD_PC(INSN_ATTR(width));
167
+ ADD_PC(INSN_ATTR(width));
171
168
  SETUP_CANARY(leaf);
172
169
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
173
170
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, idx);
@@ -191,7 +188,7 @@ INSN_ENTRY(getblockparam)
191
188
  (void)RB_DEBUG_COUNTER_INC_IF(lvar_get_dynamic, level > 0);
192
189
  }
193
190
  }
194
- # line 195 "vm.inc"
191
+ # line 192 "vm.inc"
195
192
  # undef NAME_OF_CURRENT_INSN
196
193
 
197
194
  /* ### Instruction trailers. ### */
@@ -201,7 +198,6 @@ INSN_ENTRY(getblockparam)
201
198
  TOPN(0) = val;
202
199
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
203
200
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
204
- if (leaf) ADD_PC(INSN_ATTR(width));
205
201
  # undef INSN_ATTR
206
202
 
207
203
  /* ### Leave the instruction. ### */
@@ -219,11 +215,11 @@ INSN_ENTRY(setblockparam)
219
215
  lindex_t idx = (lindex_t)GET_OPERAND(1);
220
216
  rb_num_t level = (rb_num_t)GET_OPERAND(2);
221
217
  # define INSN_ATTR(x) attr_ ## x ## _setblockparam(idx, level)
222
- const bool leaf = INSN_ATTR(leaf);
218
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
223
219
  VALUE val = TOPN(0);
224
220
 
225
221
  /* ### Instruction preambles. ### */
226
- if (! leaf) ADD_PC(INSN_ATTR(width));
222
+ ADD_PC(INSN_ATTR(width));
227
223
  SETUP_CANARY(leaf);
228
224
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
229
225
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, idx);
@@ -242,14 +238,13 @@ INSN_ENTRY(setblockparam)
242
238
 
243
239
  VM_ENV_FLAGS_SET(ep, VM_FRAME_FLAG_MODIFIED_BLOCK_PARAM);
244
240
  }
245
- # line 246 "vm.inc"
241
+ # line 242 "vm.inc"
246
242
  # undef NAME_OF_CURRENT_INSN
247
243
 
248
244
  /* ### Instruction trailers. ### */
249
245
  CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
250
246
  CHECK_CANARY(leaf, INSN_ATTR(bin));
251
247
  INC_SP(INSN_ATTR(sp_inc));
252
- if (leaf) ADD_PC(INSN_ATTR(width));
253
248
  # undef INSN_ATTR
254
249
 
255
250
  /* ### Leave the instruction. ### */
@@ -267,11 +262,11 @@ INSN_ENTRY(getblockparamproxy)
267
262
  lindex_t idx = (lindex_t)GET_OPERAND(1);
268
263
  rb_num_t level = (rb_num_t)GET_OPERAND(2);
269
264
  # define INSN_ATTR(x) attr_ ## x ## _getblockparamproxy(idx, level)
270
- const bool leaf = INSN_ATTR(leaf);
265
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
271
266
  VALUE val;
272
267
 
273
268
  /* ### Instruction preambles. ### */
274
- if (! leaf) ADD_PC(INSN_ATTR(width));
269
+ ADD_PC(INSN_ATTR(width));
275
270
  SETUP_CANARY(leaf);
276
271
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
277
272
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, idx);
@@ -316,7 +311,7 @@ INSN_ENTRY(getblockparamproxy)
316
311
  (void)RB_DEBUG_COUNTER_INC_IF(lvar_get_dynamic, level > 0);
317
312
  }
318
313
  }
319
- # line 320 "vm.inc"
314
+ # line 315 "vm.inc"
320
315
  # undef NAME_OF_CURRENT_INSN
321
316
 
322
317
  /* ### Instruction trailers. ### */
@@ -326,7 +321,6 @@ INSN_ENTRY(getblockparamproxy)
326
321
  TOPN(0) = val;
327
322
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
328
323
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
329
- if (leaf) ADD_PC(INSN_ATTR(width));
330
324
  # undef INSN_ATTR
331
325
 
332
326
  /* ### Leave the instruction. ### */
@@ -344,11 +338,11 @@ INSN_ENTRY(getspecial)
344
338
  rb_num_t key = (rb_num_t)GET_OPERAND(1);
345
339
  rb_num_t type = (rb_num_t)GET_OPERAND(2);
346
340
  # define INSN_ATTR(x) attr_ ## x ## _getspecial(key, type)
347
- const bool leaf = INSN_ATTR(leaf);
341
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
348
342
  VALUE val;
349
343
 
350
344
  /* ### Instruction preambles. ### */
351
- if (! leaf) ADD_PC(INSN_ATTR(width));
345
+ ADD_PC(INSN_ATTR(width));
352
346
  SETUP_CANARY(leaf);
353
347
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
354
348
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, key);
@@ -360,7 +354,7 @@ INSN_ENTRY(getspecial)
360
354
  {
361
355
  val = vm_getspecial(ec, GET_LEP(), key, type);
362
356
  }
363
- # line 364 "vm.inc"
357
+ # line 358 "vm.inc"
364
358
  # undef NAME_OF_CURRENT_INSN
365
359
 
366
360
  /* ### Instruction trailers. ### */
@@ -370,7 +364,6 @@ INSN_ENTRY(getspecial)
370
364
  TOPN(0) = val;
371
365
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
372
366
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
373
- if (leaf) ADD_PC(INSN_ATTR(width));
374
367
  # undef INSN_ATTR
375
368
 
376
369
  /* ### Leave the instruction. ### */
@@ -387,11 +380,11 @@ INSN_ENTRY(setspecial)
387
380
  /* ### Declare and assign variables. ### */
388
381
  rb_num_t key = (rb_num_t)GET_OPERAND(1);
389
382
  # define INSN_ATTR(x) attr_ ## x ## _setspecial(key)
390
- const bool leaf = INSN_ATTR(leaf);
383
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
391
384
  VALUE obj = TOPN(0);
392
385
 
393
386
  /* ### Instruction preambles. ### */
394
- if (! leaf) ADD_PC(INSN_ATTR(width));
387
+ ADD_PC(INSN_ATTR(width));
395
388
  SETUP_CANARY(leaf);
396
389
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
397
390
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, key);
@@ -402,14 +395,13 @@ INSN_ENTRY(setspecial)
402
395
  {
403
396
  lep_svar_set(ec, GET_LEP(), key, obj);
404
397
  }
405
- # line 406 "vm.inc"
398
+ # line 399 "vm.inc"
406
399
  # undef NAME_OF_CURRENT_INSN
407
400
 
408
401
  /* ### Instruction trailers. ### */
409
402
  CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
410
403
  CHECK_CANARY(leaf, INSN_ATTR(bin));
411
404
  INC_SP(INSN_ATTR(sp_inc));
412
- if (leaf) ADD_PC(INSN_ATTR(width));
413
405
  # undef INSN_ATTR
414
406
 
415
407
  /* ### Leave the instruction. ### */
@@ -427,11 +419,11 @@ INSN_ENTRY(getinstancevariable)
427
419
  ID id = (ID)GET_OPERAND(1);
428
420
  IVC ic = (IVC)GET_OPERAND(2);
429
421
  # define INSN_ATTR(x) attr_ ## x ## _getinstancevariable(id, ic)
430
- const bool leaf = INSN_ATTR(leaf);
422
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
431
423
  VALUE val;
432
424
 
433
425
  /* ### Instruction preambles. ### */
434
- if (! leaf) ADD_PC(INSN_ATTR(width));
426
+ ADD_PC(INSN_ATTR(width));
435
427
  SETUP_CANARY(leaf);
436
428
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
437
429
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, id);
@@ -443,7 +435,7 @@ INSN_ENTRY(getinstancevariable)
443
435
  {
444
436
  val = vm_getinstancevariable(GET_ISEQ(), GET_SELF(), id, ic);
445
437
  }
446
- # line 447 "vm.inc"
438
+ # line 439 "vm.inc"
447
439
  # undef NAME_OF_CURRENT_INSN
448
440
 
449
441
  /* ### Instruction trailers. ### */
@@ -453,7 +445,6 @@ INSN_ENTRY(getinstancevariable)
453
445
  TOPN(0) = val;
454
446
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
455
447
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
456
- if (leaf) ADD_PC(INSN_ATTR(width));
457
448
  # undef INSN_ATTR
458
449
 
459
450
  /* ### Leave the instruction. ### */
@@ -471,11 +462,11 @@ INSN_ENTRY(setinstancevariable)
471
462
  ID id = (ID)GET_OPERAND(1);
472
463
  IVC ic = (IVC)GET_OPERAND(2);
473
464
  # define INSN_ATTR(x) attr_ ## x ## _setinstancevariable(id, ic)
474
- const bool leaf = INSN_ATTR(leaf);
465
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
475
466
  VALUE val = TOPN(0);
476
467
 
477
468
  /* ### Instruction preambles. ### */
478
- if (! leaf) ADD_PC(INSN_ATTR(width));
469
+ ADD_PC(INSN_ATTR(width));
479
470
  SETUP_CANARY(leaf);
480
471
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
481
472
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, id);
@@ -487,14 +478,13 @@ INSN_ENTRY(setinstancevariable)
487
478
  {
488
479
  vm_setinstancevariable(GET_ISEQ(), GET_SELF(), id, val, ic);
489
480
  }
490
- # line 491 "vm.inc"
481
+ # line 482 "vm.inc"
491
482
  # undef NAME_OF_CURRENT_INSN
492
483
 
493
484
  /* ### Instruction trailers. ### */
494
485
  CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
495
486
  CHECK_CANARY(leaf, INSN_ATTR(bin));
496
487
  INC_SP(INSN_ATTR(sp_inc));
497
- if (leaf) ADD_PC(INSN_ATTR(width));
498
488
  # undef INSN_ATTR
499
489
 
500
490
  /* ### Leave the instruction. ### */
@@ -512,11 +502,11 @@ INSN_ENTRY(getclassvariable)
512
502
  ID id = (ID)GET_OPERAND(1);
513
503
  ICVARC ic = (ICVARC)GET_OPERAND(2);
514
504
  # define INSN_ATTR(x) attr_ ## x ## _getclassvariable(id, ic)
515
- const bool leaf = INSN_ATTR(leaf);
505
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
516
506
  VALUE val;
517
507
 
518
508
  /* ### Instruction preambles. ### */
519
- if (! leaf) ADD_PC(INSN_ATTR(width));
509
+ ADD_PC(INSN_ATTR(width));
520
510
  SETUP_CANARY(leaf);
521
511
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
522
512
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, id);
@@ -529,7 +519,7 @@ INSN_ENTRY(getclassvariable)
529
519
  rb_control_frame_t *cfp = GET_CFP();
530
520
  val = vm_getclassvariable(GET_ISEQ(), cfp, id, ic);
531
521
  }
532
- # line 533 "vm.inc"
522
+ # line 523 "vm.inc"
533
523
  # undef NAME_OF_CURRENT_INSN
534
524
 
535
525
  /* ### Instruction trailers. ### */
@@ -539,7 +529,6 @@ INSN_ENTRY(getclassvariable)
539
529
  TOPN(0) = val;
540
530
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
541
531
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
542
- if (leaf) ADD_PC(INSN_ATTR(width));
543
532
  # undef INSN_ATTR
544
533
 
545
534
  /* ### Leave the instruction. ### */
@@ -557,11 +546,11 @@ INSN_ENTRY(setclassvariable)
557
546
  ID id = (ID)GET_OPERAND(1);
558
547
  ICVARC ic = (ICVARC)GET_OPERAND(2);
559
548
  # define INSN_ATTR(x) attr_ ## x ## _setclassvariable(id, ic)
560
- const bool leaf = INSN_ATTR(leaf);
549
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
561
550
  VALUE val = TOPN(0);
562
551
 
563
552
  /* ### Instruction preambles. ### */
564
- if (! leaf) ADD_PC(INSN_ATTR(width));
553
+ ADD_PC(INSN_ATTR(width));
565
554
  SETUP_CANARY(leaf);
566
555
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
567
556
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, id);
@@ -574,14 +563,13 @@ INSN_ENTRY(setclassvariable)
574
563
  vm_ensure_not_refinement_module(GET_SELF());
575
564
  vm_setclassvariable(GET_ISEQ(), GET_CFP(), id, val, ic);
576
565
  }
577
- # line 578 "vm.inc"
566
+ # line 567 "vm.inc"
578
567
  # undef NAME_OF_CURRENT_INSN
579
568
 
580
569
  /* ### Instruction trailers. ### */
581
570
  CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
582
571
  CHECK_CANARY(leaf, INSN_ATTR(bin));
583
572
  INC_SP(INSN_ATTR(sp_inc));
584
- if (leaf) ADD_PC(INSN_ATTR(width));
585
573
  # undef INSN_ATTR
586
574
 
587
575
  /* ### Leave the instruction. ### */
@@ -598,11 +586,11 @@ INSN_ENTRY(opt_getconstant_path)
598
586
  /* ### Declare and assign variables. ### */
599
587
  IC ic = (IC)GET_OPERAND(1);
600
588
  # define INSN_ATTR(x) attr_ ## x ## _opt_getconstant_path(ic)
601
- const bool leaf = INSN_ATTR(leaf);
589
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
602
590
  VALUE val;
603
591
 
604
592
  /* ### Instruction preambles. ### */
605
- if (! leaf) ADD_PC(INSN_ATTR(width));
593
+ ADD_PC(INSN_ATTR(width));
606
594
  SETUP_CANARY(leaf);
607
595
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
608
596
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, ic);
@@ -626,7 +614,7 @@ INSN_ENTRY(opt_getconstant_path)
626
614
  vm_ic_update(GET_ISEQ(), ic, val, GET_EP(), GET_PC() - 2);
627
615
  }
628
616
  }
629
- # line 630 "vm.inc"
617
+ # line 618 "vm.inc"
630
618
  # undef NAME_OF_CURRENT_INSN
631
619
 
632
620
  /* ### Instruction trailers. ### */
@@ -636,7 +624,6 @@ INSN_ENTRY(opt_getconstant_path)
636
624
  TOPN(0) = val;
637
625
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
638
626
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
639
- if (leaf) ADD_PC(INSN_ATTR(width));
640
627
  # undef INSN_ATTR
641
628
 
642
629
  /* ### Leave the instruction. ### */
@@ -653,13 +640,13 @@ INSN_ENTRY(getconstant)
653
640
  /* ### Declare and assign variables. ### */
654
641
  ID id = (ID)GET_OPERAND(1);
655
642
  # define INSN_ATTR(x) attr_ ## x ## _getconstant(id)
656
- const bool leaf = INSN_ATTR(leaf);
643
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
657
644
  VALUE klass = TOPN(1);
658
645
  VALUE allow_nil = TOPN(0);
659
646
  VALUE val;
660
647
 
661
648
  /* ### Instruction preambles. ### */
662
- if (! leaf) ADD_PC(INSN_ATTR(width));
649
+ ADD_PC(INSN_ATTR(width));
663
650
  SETUP_CANARY(leaf);
664
651
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
665
652
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, id);
@@ -670,7 +657,7 @@ INSN_ENTRY(getconstant)
670
657
  {
671
658
  val = vm_get_ev_const(ec, klass, id, allow_nil == Qtrue, 0);
672
659
  }
673
- # line 674 "vm.inc"
660
+ # line 661 "vm.inc"
674
661
  # undef NAME_OF_CURRENT_INSN
675
662
 
676
663
  /* ### Instruction trailers. ### */
@@ -680,7 +667,6 @@ INSN_ENTRY(getconstant)
680
667
  TOPN(0) = val;
681
668
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
682
669
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
683
- if (leaf) ADD_PC(INSN_ATTR(width));
684
670
  # undef INSN_ATTR
685
671
 
686
672
  /* ### Leave the instruction. ### */
@@ -697,12 +683,12 @@ INSN_ENTRY(setconstant)
697
683
  /* ### Declare and assign variables. ### */
698
684
  ID id = (ID)GET_OPERAND(1);
699
685
  # define INSN_ATTR(x) attr_ ## x ## _setconstant(id)
700
- const bool leaf = INSN_ATTR(leaf);
686
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
701
687
  VALUE val = TOPN(1);
702
688
  VALUE cbase = TOPN(0);
703
689
 
704
690
  /* ### Instruction preambles. ### */
705
- if (! leaf) ADD_PC(INSN_ATTR(width));
691
+ ADD_PC(INSN_ATTR(width));
706
692
  SETUP_CANARY(leaf);
707
693
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
708
694
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, id);
@@ -715,14 +701,13 @@ INSN_ENTRY(setconstant)
715
701
  vm_ensure_not_refinement_module(GET_SELF());
716
702
  rb_const_set(cbase, id, val);
717
703
  }
718
- # line 719 "vm.inc"
704
+ # line 705 "vm.inc"
719
705
  # undef NAME_OF_CURRENT_INSN
720
706
 
721
707
  /* ### Instruction trailers. ### */
722
708
  CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
723
709
  CHECK_CANARY(leaf, INSN_ATTR(bin));
724
710
  INC_SP(INSN_ATTR(sp_inc));
725
- if (leaf) ADD_PC(INSN_ATTR(width));
726
711
  # undef INSN_ATTR
727
712
 
728
713
  /* ### Leave the instruction. ### */
@@ -739,11 +724,11 @@ INSN_ENTRY(getglobal)
739
724
  /* ### Declare and assign variables. ### */
740
725
  ID gid = (ID)GET_OPERAND(1);
741
726
  # define INSN_ATTR(x) attr_ ## x ## _getglobal(gid)
742
- const bool leaf = INSN_ATTR(leaf);
727
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
743
728
  VALUE val;
744
729
 
745
730
  /* ### Instruction preambles. ### */
746
- if (! leaf) ADD_PC(INSN_ATTR(width));
731
+ ADD_PC(INSN_ATTR(width));
747
732
  SETUP_CANARY(leaf);
748
733
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
749
734
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, gid);
@@ -754,7 +739,7 @@ INSN_ENTRY(getglobal)
754
739
  {
755
740
  val = rb_gvar_get(gid);
756
741
  }
757
- # line 758 "vm.inc"
742
+ # line 743 "vm.inc"
758
743
  # undef NAME_OF_CURRENT_INSN
759
744
 
760
745
  /* ### Instruction trailers. ### */
@@ -764,7 +749,6 @@ INSN_ENTRY(getglobal)
764
749
  TOPN(0) = val;
765
750
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
766
751
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
767
- if (leaf) ADD_PC(INSN_ATTR(width));
768
752
  # undef INSN_ATTR
769
753
 
770
754
  /* ### Leave the instruction. ### */
@@ -781,11 +765,11 @@ INSN_ENTRY(setglobal)
781
765
  /* ### Declare and assign variables. ### */
782
766
  ID gid = (ID)GET_OPERAND(1);
783
767
  # define INSN_ATTR(x) attr_ ## x ## _setglobal(gid)
784
- const bool leaf = INSN_ATTR(leaf);
768
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
785
769
  VALUE val = TOPN(0);
786
770
 
787
771
  /* ### Instruction preambles. ### */
788
- if (! leaf) ADD_PC(INSN_ATTR(width));
772
+ ADD_PC(INSN_ATTR(width));
789
773
  SETUP_CANARY(leaf);
790
774
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
791
775
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, gid);
@@ -796,14 +780,13 @@ INSN_ENTRY(setglobal)
796
780
  {
797
781
  rb_gvar_set(gid, val);
798
782
  }
799
- # line 800 "vm.inc"
783
+ # line 784 "vm.inc"
800
784
  # undef NAME_OF_CURRENT_INSN
801
785
 
802
786
  /* ### Instruction trailers. ### */
803
787
  CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
804
788
  CHECK_CANARY(leaf, INSN_ATTR(bin));
805
789
  INC_SP(INSN_ATTR(sp_inc));
806
- if (leaf) ADD_PC(INSN_ATTR(width));
807
790
  # undef INSN_ATTR
808
791
 
809
792
  /* ### Leave the instruction. ### */
@@ -819,11 +802,11 @@ INSN_ENTRY(putnil)
819
802
 
820
803
  /* ### Declare and assign variables. ### */
821
804
  # define INSN_ATTR(x) attr_ ## x ## _putnil()
822
- const bool leaf = INSN_ATTR(leaf);
805
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
823
806
  VALUE val;
824
807
 
825
808
  /* ### Instruction preambles. ### */
826
- if (! leaf) ADD_PC(INSN_ATTR(width));
809
+ ADD_PC(INSN_ATTR(width));
827
810
  SETUP_CANARY(leaf);
828
811
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
829
812
 
@@ -833,7 +816,7 @@ INSN_ENTRY(putnil)
833
816
  {
834
817
  val = Qnil;
835
818
  }
836
- # line 837 "vm.inc"
819
+ # line 820 "vm.inc"
837
820
  # undef NAME_OF_CURRENT_INSN
838
821
 
839
822
  /* ### Instruction trailers. ### */
@@ -843,7 +826,6 @@ INSN_ENTRY(putnil)
843
826
  TOPN(0) = val;
844
827
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
845
828
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
846
- if (leaf) ADD_PC(INSN_ATTR(width));
847
829
  # undef INSN_ATTR
848
830
 
849
831
  /* ### Leave the instruction. ### */
@@ -859,11 +841,11 @@ INSN_ENTRY(putself)
859
841
 
860
842
  /* ### Declare and assign variables. ### */
861
843
  # define INSN_ATTR(x) attr_ ## x ## _putself()
862
- const bool leaf = INSN_ATTR(leaf);
844
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
863
845
  VALUE val;
864
846
 
865
847
  /* ### Instruction preambles. ### */
866
- if (! leaf) ADD_PC(INSN_ATTR(width));
848
+ ADD_PC(INSN_ATTR(width));
867
849
  SETUP_CANARY(leaf);
868
850
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
869
851
 
@@ -873,7 +855,7 @@ INSN_ENTRY(putself)
873
855
  {
874
856
  val = GET_SELF();
875
857
  }
876
- # line 877 "vm.inc"
858
+ # line 859 "vm.inc"
877
859
  # undef NAME_OF_CURRENT_INSN
878
860
 
879
861
  /* ### Instruction trailers. ### */
@@ -883,7 +865,6 @@ INSN_ENTRY(putself)
883
865
  TOPN(0) = val;
884
866
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
885
867
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
886
- if (leaf) ADD_PC(INSN_ATTR(width));
887
868
  # undef INSN_ATTR
888
869
 
889
870
  /* ### Leave the instruction. ### */
@@ -900,10 +881,10 @@ INSN_ENTRY(putobject)
900
881
  /* ### Declare and assign variables. ### */
901
882
  VALUE val = (VALUE)GET_OPERAND(1);
902
883
  # define INSN_ATTR(x) attr_ ## x ## _putobject(val)
903
- const bool leaf = INSN_ATTR(leaf);
884
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
904
885
 
905
886
  /* ### Instruction preambles. ### */
906
- if (! leaf) ADD_PC(INSN_ATTR(width));
887
+ ADD_PC(INSN_ATTR(width));
907
888
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
908
889
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, val);
909
890
 
@@ -913,7 +894,6 @@ INSN_ENTRY(putobject)
913
894
  TOPN(0) = val;
914
895
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
915
896
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
916
- if (leaf) ADD_PC(INSN_ATTR(width));
917
897
  # undef INSN_ATTR
918
898
 
919
899
  /* ### Leave the instruction. ### */
@@ -930,11 +910,11 @@ INSN_ENTRY(putspecialobject)
930
910
  /* ### Declare and assign variables. ### */
931
911
  rb_num_t value_type = (rb_num_t)GET_OPERAND(1);
932
912
  # define INSN_ATTR(x) attr_ ## x ## _putspecialobject(value_type)
933
- const bool leaf = INSN_ATTR(leaf);
913
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
934
914
  VALUE val;
935
915
 
936
916
  /* ### Instruction preambles. ### */
937
- if (! leaf) ADD_PC(INSN_ATTR(width));
917
+ ADD_PC(INSN_ATTR(width));
938
918
  SETUP_CANARY(leaf);
939
919
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
940
920
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, value_type);
@@ -948,7 +928,7 @@ INSN_ENTRY(putspecialobject)
948
928
  type = (enum vm_special_object_type)value_type;
949
929
  val = vm_get_special_object(GET_EP(), type);
950
930
  }
951
- # line 952 "vm.inc"
931
+ # line 932 "vm.inc"
952
932
  # undef NAME_OF_CURRENT_INSN
953
933
 
954
934
  /* ### Instruction trailers. ### */
@@ -958,7 +938,6 @@ INSN_ENTRY(putspecialobject)
958
938
  TOPN(0) = val;
959
939
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
960
940
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
961
- if (leaf) ADD_PC(INSN_ATTR(width));
962
941
  # undef INSN_ATTR
963
942
 
964
943
  /* ### Leave the instruction. ### */
@@ -975,11 +954,11 @@ INSN_ENTRY(putstring)
975
954
  /* ### Declare and assign variables. ### */
976
955
  VALUE str = (VALUE)GET_OPERAND(1);
977
956
  # define INSN_ATTR(x) attr_ ## x ## _putstring(str)
978
- const bool leaf = INSN_ATTR(leaf);
957
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
979
958
  VALUE val;
980
959
 
981
960
  /* ### Instruction preambles. ### */
982
- if (! leaf) ADD_PC(INSN_ATTR(width));
961
+ ADD_PC(INSN_ATTR(width));
983
962
  SETUP_CANARY(leaf);
984
963
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
985
964
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, str);
@@ -990,7 +969,7 @@ INSN_ENTRY(putstring)
990
969
  {
991
970
  val = rb_ec_str_resurrect(ec, str);
992
971
  }
993
- # line 994 "vm.inc"
972
+ # line 973 "vm.inc"
994
973
  # undef NAME_OF_CURRENT_INSN
995
974
 
996
975
  /* ### Instruction trailers. ### */
@@ -1000,7 +979,6 @@ INSN_ENTRY(putstring)
1000
979
  TOPN(0) = val;
1001
980
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
1002
981
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
1003
- if (leaf) ADD_PC(INSN_ATTR(width));
1004
982
  # undef INSN_ATTR
1005
983
 
1006
984
  /* ### Leave the instruction. ### */
@@ -1017,11 +995,11 @@ INSN_ENTRY(concatstrings)
1017
995
  /* ### Declare and assign variables. ### */
1018
996
  rb_num_t num = (rb_num_t)GET_OPERAND(1);
1019
997
  # define INSN_ATTR(x) attr_ ## x ## _concatstrings(num)
1020
- const bool leaf = INSN_ATTR(leaf);
998
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
1021
999
  VALUE val;
1022
1000
 
1023
1001
  /* ### Instruction preambles. ### */
1024
- if (! leaf) ADD_PC(INSN_ATTR(width));
1002
+ ADD_PC(INSN_ATTR(width));
1025
1003
  SETUP_CANARY(leaf);
1026
1004
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
1027
1005
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, num);
@@ -1032,7 +1010,7 @@ INSN_ENTRY(concatstrings)
1032
1010
  {
1033
1011
  val = rb_str_concat_literals(num, STACK_ADDR_FROM_TOP(num));
1034
1012
  }
1035
- # line 1036 "vm.inc"
1013
+ # line 1014 "vm.inc"
1036
1014
  # undef NAME_OF_CURRENT_INSN
1037
1015
 
1038
1016
  /* ### Instruction trailers. ### */
@@ -1042,7 +1020,6 @@ INSN_ENTRY(concatstrings)
1042
1020
  TOPN(0) = val;
1043
1021
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
1044
1022
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
1045
- if (leaf) ADD_PC(INSN_ATTR(width));
1046
1023
  # undef INSN_ATTR
1047
1024
 
1048
1025
  /* ### Leave the instruction. ### */
@@ -1058,12 +1035,12 @@ INSN_ENTRY(anytostring)
1058
1035
 
1059
1036
  /* ### Declare and assign variables. ### */
1060
1037
  # define INSN_ATTR(x) attr_ ## x ## _anytostring()
1061
- const bool leaf = INSN_ATTR(leaf);
1038
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
1062
1039
  VALUE val = TOPN(1);
1063
1040
  VALUE str = TOPN(0);
1064
1041
 
1065
1042
  /* ### Instruction preambles. ### */
1066
- if (! leaf) ADD_PC(INSN_ATTR(width));
1043
+ ADD_PC(INSN_ATTR(width));
1067
1044
  SETUP_CANARY(leaf);
1068
1045
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
1069
1046
 
@@ -1073,7 +1050,7 @@ INSN_ENTRY(anytostring)
1073
1050
  {
1074
1051
  val = rb_obj_as_string_result(str, val);
1075
1052
  }
1076
- # line 1077 "vm.inc"
1053
+ # line 1054 "vm.inc"
1077
1054
  # undef NAME_OF_CURRENT_INSN
1078
1055
 
1079
1056
  /* ### Instruction trailers. ### */
@@ -1083,7 +1060,6 @@ INSN_ENTRY(anytostring)
1083
1060
  TOPN(0) = val;
1084
1061
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
1085
1062
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
1086
- if (leaf) ADD_PC(INSN_ATTR(width));
1087
1063
  # undef INSN_ATTR
1088
1064
 
1089
1065
  /* ### Leave the instruction. ### */
@@ -1101,11 +1077,11 @@ INSN_ENTRY(toregexp)
1101
1077
  rb_num_t opt = (rb_num_t)GET_OPERAND(1);
1102
1078
  rb_num_t cnt = (rb_num_t)GET_OPERAND(2);
1103
1079
  # define INSN_ATTR(x) attr_ ## x ## _toregexp(opt, cnt)
1104
- const bool leaf = INSN_ATTR(leaf);
1080
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
1105
1081
  VALUE val;
1106
1082
 
1107
1083
  /* ### Instruction preambles. ### */
1108
- if (! leaf) ADD_PC(INSN_ATTR(width));
1084
+ ADD_PC(INSN_ATTR(width));
1109
1085
  SETUP_CANARY(leaf);
1110
1086
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
1111
1087
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, opt);
@@ -1119,7 +1095,7 @@ INSN_ENTRY(toregexp)
1119
1095
  val = rb_reg_new_ary(ary, (int)opt);
1120
1096
  rb_ary_clear(ary);
1121
1097
  }
1122
- # line 1123 "vm.inc"
1098
+ # line 1099 "vm.inc"
1123
1099
  # undef NAME_OF_CURRENT_INSN
1124
1100
 
1125
1101
  /* ### Instruction trailers. ### */
@@ -1129,7 +1105,6 @@ INSN_ENTRY(toregexp)
1129
1105
  TOPN(0) = val;
1130
1106
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
1131
1107
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
1132
- if (leaf) ADD_PC(INSN_ATTR(width));
1133
1108
  # undef INSN_ATTR
1134
1109
 
1135
1110
  /* ### Leave the instruction. ### */
@@ -1145,12 +1120,12 @@ INSN_ENTRY(intern)
1145
1120
 
1146
1121
  /* ### Declare and assign variables. ### */
1147
1122
  # define INSN_ATTR(x) attr_ ## x ## _intern()
1148
- const bool leaf = INSN_ATTR(leaf);
1123
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
1149
1124
  VALUE str = TOPN(0);
1150
1125
  VALUE sym;
1151
1126
 
1152
1127
  /* ### Instruction preambles. ### */
1153
- if (! leaf) ADD_PC(INSN_ATTR(width));
1128
+ ADD_PC(INSN_ATTR(width));
1154
1129
  SETUP_CANARY(leaf);
1155
1130
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
1156
1131
 
@@ -1160,7 +1135,7 @@ INSN_ENTRY(intern)
1160
1135
  {
1161
1136
  sym = rb_str_intern(str);
1162
1137
  }
1163
- # line 1164 "vm.inc"
1138
+ # line 1139 "vm.inc"
1164
1139
  # undef NAME_OF_CURRENT_INSN
1165
1140
 
1166
1141
  /* ### Instruction trailers. ### */
@@ -1170,7 +1145,6 @@ INSN_ENTRY(intern)
1170
1145
  TOPN(0) = sym;
1171
1146
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
1172
1147
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
1173
- if (leaf) ADD_PC(INSN_ATTR(width));
1174
1148
  # undef INSN_ATTR
1175
1149
 
1176
1150
  /* ### Leave the instruction. ### */
@@ -1187,11 +1161,11 @@ INSN_ENTRY(newarray)
1187
1161
  /* ### Declare and assign variables. ### */
1188
1162
  rb_num_t num = (rb_num_t)GET_OPERAND(1);
1189
1163
  # define INSN_ATTR(x) attr_ ## x ## _newarray(num)
1190
- const bool leaf = INSN_ATTR(leaf);
1164
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
1191
1165
  VALUE val;
1192
1166
 
1193
1167
  /* ### Instruction preambles. ### */
1194
- if (! leaf) ADD_PC(INSN_ATTR(width));
1168
+ ADD_PC(INSN_ATTR(width));
1195
1169
  SETUP_CANARY(leaf);
1196
1170
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
1197
1171
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, num);
@@ -1202,7 +1176,7 @@ INSN_ENTRY(newarray)
1202
1176
  {
1203
1177
  val = rb_ec_ary_new_from_values(ec, num, STACK_ADDR_FROM_TOP(num));
1204
1178
  }
1205
- # line 1206 "vm.inc"
1179
+ # line 1180 "vm.inc"
1206
1180
  # undef NAME_OF_CURRENT_INSN
1207
1181
 
1208
1182
  /* ### Instruction trailers. ### */
@@ -1212,7 +1186,6 @@ INSN_ENTRY(newarray)
1212
1186
  TOPN(0) = val;
1213
1187
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
1214
1188
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
1215
- if (leaf) ADD_PC(INSN_ATTR(width));
1216
1189
  # undef INSN_ATTR
1217
1190
 
1218
1191
  /* ### Leave the instruction. ### */
@@ -1229,11 +1202,11 @@ INSN_ENTRY(newarraykwsplat)
1229
1202
  /* ### Declare and assign variables. ### */
1230
1203
  rb_num_t num = (rb_num_t)GET_OPERAND(1);
1231
1204
  # define INSN_ATTR(x) attr_ ## x ## _newarraykwsplat(num)
1232
- const bool leaf = INSN_ATTR(leaf);
1205
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
1233
1206
  VALUE val;
1234
1207
 
1235
1208
  /* ### Instruction preambles. ### */
1236
- if (! leaf) ADD_PC(INSN_ATTR(width));
1209
+ ADD_PC(INSN_ATTR(width));
1237
1210
  SETUP_CANARY(leaf);
1238
1211
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
1239
1212
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, num);
@@ -1249,7 +1222,7 @@ INSN_ENTRY(newarraykwsplat)
1249
1222
  val = rb_ary_new4(num, STACK_ADDR_FROM_TOP(num));
1250
1223
  }
1251
1224
  }
1252
- # line 1253 "vm.inc"
1225
+ # line 1226 "vm.inc"
1253
1226
  # undef NAME_OF_CURRENT_INSN
1254
1227
 
1255
1228
  /* ### Instruction trailers. ### */
@@ -1259,7 +1232,6 @@ INSN_ENTRY(newarraykwsplat)
1259
1232
  TOPN(0) = val;
1260
1233
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
1261
1234
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
1262
- if (leaf) ADD_PC(INSN_ATTR(width));
1263
1235
  # undef INSN_ATTR
1264
1236
 
1265
1237
  /* ### Leave the instruction. ### */
@@ -1276,11 +1248,11 @@ INSN_ENTRY(duparray)
1276
1248
  /* ### Declare and assign variables. ### */
1277
1249
  VALUE ary = (VALUE)GET_OPERAND(1);
1278
1250
  # define INSN_ATTR(x) attr_ ## x ## _duparray(ary)
1279
- const bool leaf = INSN_ATTR(leaf);
1251
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
1280
1252
  VALUE val;
1281
1253
 
1282
1254
  /* ### Instruction preambles. ### */
1283
- if (! leaf) ADD_PC(INSN_ATTR(width));
1255
+ ADD_PC(INSN_ATTR(width));
1284
1256
  SETUP_CANARY(leaf);
1285
1257
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
1286
1258
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, ary);
@@ -1292,7 +1264,7 @@ INSN_ENTRY(duparray)
1292
1264
  RUBY_DTRACE_CREATE_HOOK(ARRAY, RARRAY_LEN(ary));
1293
1265
  val = rb_ary_resurrect(ary);
1294
1266
  }
1295
- # line 1296 "vm.inc"
1267
+ # line 1268 "vm.inc"
1296
1268
  # undef NAME_OF_CURRENT_INSN
1297
1269
 
1298
1270
  /* ### Instruction trailers. ### */
@@ -1302,7 +1274,6 @@ INSN_ENTRY(duparray)
1302
1274
  TOPN(0) = val;
1303
1275
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
1304
1276
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
1305
- if (leaf) ADD_PC(INSN_ATTR(width));
1306
1277
  # undef INSN_ATTR
1307
1278
 
1308
1279
  /* ### Leave the instruction. ### */
@@ -1319,11 +1290,11 @@ INSN_ENTRY(duphash)
1319
1290
  /* ### Declare and assign variables. ### */
1320
1291
  VALUE hash = (VALUE)GET_OPERAND(1);
1321
1292
  # define INSN_ATTR(x) attr_ ## x ## _duphash(hash)
1322
- const bool leaf = INSN_ATTR(leaf);
1293
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
1323
1294
  VALUE val;
1324
1295
 
1325
1296
  /* ### Instruction preambles. ### */
1326
- if (! leaf) ADD_PC(INSN_ATTR(width));
1297
+ ADD_PC(INSN_ATTR(width));
1327
1298
  SETUP_CANARY(leaf);
1328
1299
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
1329
1300
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, hash);
@@ -1335,7 +1306,7 @@ INSN_ENTRY(duphash)
1335
1306
  RUBY_DTRACE_CREATE_HOOK(HASH, RHASH_SIZE(hash) << 1);
1336
1307
  val = rb_hash_resurrect(hash);
1337
1308
  }
1338
- # line 1339 "vm.inc"
1309
+ # line 1310 "vm.inc"
1339
1310
  # undef NAME_OF_CURRENT_INSN
1340
1311
 
1341
1312
  /* ### Instruction trailers. ### */
@@ -1345,7 +1316,6 @@ INSN_ENTRY(duphash)
1345
1316
  TOPN(0) = val;
1346
1317
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
1347
1318
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
1348
- if (leaf) ADD_PC(INSN_ATTR(width));
1349
1319
  # undef INSN_ATTR
1350
1320
 
1351
1321
  /* ### Leave the instruction. ### */
@@ -1363,11 +1333,11 @@ INSN_ENTRY(expandarray)
1363
1333
  rb_num_t num = (rb_num_t)GET_OPERAND(1);
1364
1334
  rb_num_t flag = (rb_num_t)GET_OPERAND(2);
1365
1335
  # define INSN_ATTR(x) attr_ ## x ## _expandarray(num, flag)
1366
- const bool leaf = INSN_ATTR(leaf);
1336
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
1367
1337
  VALUE ary = TOPN(0);
1368
1338
 
1369
1339
  /* ### Instruction preambles. ### */
1370
- if (! leaf) ADD_PC(INSN_ATTR(width));
1340
+ ADD_PC(INSN_ATTR(width));
1371
1341
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
1372
1342
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, num);
1373
1343
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, flag);
@@ -1378,13 +1348,12 @@ INSN_ENTRY(expandarray)
1378
1348
  {
1379
1349
  vm_expandarray(GET_SP(), ary, num, (int)flag);
1380
1350
  }
1381
- # line 1382 "vm.inc"
1351
+ # line 1352 "vm.inc"
1382
1352
  # undef NAME_OF_CURRENT_INSN
1383
1353
 
1384
1354
  /* ### Instruction trailers. ### */
1385
1355
  CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
1386
1356
  INC_SP(INSN_ATTR(sp_inc));
1387
- if (leaf) ADD_PC(INSN_ATTR(width));
1388
1357
  # undef INSN_ATTR
1389
1358
 
1390
1359
  /* ### Leave the instruction. ### */
@@ -1400,13 +1369,13 @@ INSN_ENTRY(concatarray)
1400
1369
 
1401
1370
  /* ### Declare and assign variables. ### */
1402
1371
  # define INSN_ATTR(x) attr_ ## x ## _concatarray()
1403
- const bool leaf = INSN_ATTR(leaf);
1372
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
1404
1373
  VALUE ary1 = TOPN(1);
1405
1374
  VALUE ary2 = TOPN(0);
1406
1375
  VALUE ary;
1407
1376
 
1408
1377
  /* ### Instruction preambles. ### */
1409
- if (! leaf) ADD_PC(INSN_ATTR(width));
1378
+ ADD_PC(INSN_ATTR(width));
1410
1379
  SETUP_CANARY(leaf);
1411
1380
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
1412
1381
 
@@ -1416,7 +1385,7 @@ INSN_ENTRY(concatarray)
1416
1385
  {
1417
1386
  ary = vm_concat_array(ary1, ary2);
1418
1387
  }
1419
- # line 1420 "vm.inc"
1388
+ # line 1389 "vm.inc"
1420
1389
  # undef NAME_OF_CURRENT_INSN
1421
1390
 
1422
1391
  /* ### Instruction trailers. ### */
@@ -1426,7 +1395,6 @@ INSN_ENTRY(concatarray)
1426
1395
  TOPN(0) = ary;
1427
1396
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
1428
1397
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
1429
- if (leaf) ADD_PC(INSN_ATTR(width));
1430
1398
  # undef INSN_ATTR
1431
1399
 
1432
1400
  /* ### Leave the instruction. ### */
@@ -1443,12 +1411,12 @@ INSN_ENTRY(splatarray)
1443
1411
  /* ### Declare and assign variables. ### */
1444
1412
  VALUE flag = (VALUE)GET_OPERAND(1);
1445
1413
  # define INSN_ATTR(x) attr_ ## x ## _splatarray(flag)
1446
- const bool leaf = INSN_ATTR(leaf);
1414
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
1447
1415
  VALUE ary = TOPN(0);
1448
1416
  VALUE obj;
1449
1417
 
1450
1418
  /* ### Instruction preambles. ### */
1451
- if (! leaf) ADD_PC(INSN_ATTR(width));
1419
+ ADD_PC(INSN_ATTR(width));
1452
1420
  SETUP_CANARY(leaf);
1453
1421
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
1454
1422
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, flag);
@@ -1459,7 +1427,7 @@ INSN_ENTRY(splatarray)
1459
1427
  {
1460
1428
  obj = vm_splat_array(flag, ary);
1461
1429
  }
1462
- # line 1463 "vm.inc"
1430
+ # line 1431 "vm.inc"
1463
1431
  # undef NAME_OF_CURRENT_INSN
1464
1432
 
1465
1433
  /* ### Instruction trailers. ### */
@@ -1469,7 +1437,6 @@ INSN_ENTRY(splatarray)
1469
1437
  TOPN(0) = obj;
1470
1438
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
1471
1439
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
1472
- if (leaf) ADD_PC(INSN_ATTR(width));
1473
1440
  # undef INSN_ATTR
1474
1441
 
1475
1442
  /* ### Leave the instruction. ### */
@@ -1486,11 +1453,11 @@ INSN_ENTRY(newhash)
1486
1453
  /* ### Declare and assign variables. ### */
1487
1454
  rb_num_t num = (rb_num_t)GET_OPERAND(1);
1488
1455
  # define INSN_ATTR(x) attr_ ## x ## _newhash(num)
1489
- const bool leaf = INSN_ATTR(leaf);
1456
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
1490
1457
  VALUE val;
1491
1458
 
1492
1459
  /* ### Instruction preambles. ### */
1493
- if (! leaf) ADD_PC(INSN_ATTR(width));
1460
+ ADD_PC(INSN_ATTR(width));
1494
1461
  SETUP_CANARY(leaf);
1495
1462
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
1496
1463
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, num);
@@ -1509,7 +1476,7 @@ INSN_ENTRY(newhash)
1509
1476
  val = rb_hash_new();
1510
1477
  }
1511
1478
  }
1512
- # line 1513 "vm.inc"
1479
+ # line 1480 "vm.inc"
1513
1480
  # undef NAME_OF_CURRENT_INSN
1514
1481
 
1515
1482
  /* ### Instruction trailers. ### */
@@ -1519,7 +1486,6 @@ INSN_ENTRY(newhash)
1519
1486
  TOPN(0) = val;
1520
1487
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
1521
1488
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
1522
- if (leaf) ADD_PC(INSN_ATTR(width));
1523
1489
  # undef INSN_ATTR
1524
1490
 
1525
1491
  /* ### Leave the instruction. ### */
@@ -1536,13 +1502,13 @@ INSN_ENTRY(newrange)
1536
1502
  /* ### Declare and assign variables. ### */
1537
1503
  rb_num_t flag = (rb_num_t)GET_OPERAND(1);
1538
1504
  # define INSN_ATTR(x) attr_ ## x ## _newrange(flag)
1539
- const bool leaf = INSN_ATTR(leaf);
1505
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
1540
1506
  VALUE low = TOPN(1);
1541
1507
  VALUE high = TOPN(0);
1542
1508
  VALUE val;
1543
1509
 
1544
1510
  /* ### Instruction preambles. ### */
1545
- if (! leaf) ADD_PC(INSN_ATTR(width));
1511
+ ADD_PC(INSN_ATTR(width));
1546
1512
  SETUP_CANARY(leaf);
1547
1513
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
1548
1514
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, flag);
@@ -1553,7 +1519,7 @@ INSN_ENTRY(newrange)
1553
1519
  {
1554
1520
  val = rb_range_new(low, high, (int)flag);
1555
1521
  }
1556
- # line 1557 "vm.inc"
1522
+ # line 1523 "vm.inc"
1557
1523
  # undef NAME_OF_CURRENT_INSN
1558
1524
 
1559
1525
  /* ### Instruction trailers. ### */
@@ -1563,7 +1529,6 @@ INSN_ENTRY(newrange)
1563
1529
  TOPN(0) = val;
1564
1530
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
1565
1531
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
1566
- if (leaf) ADD_PC(INSN_ATTR(width));
1567
1532
  # undef INSN_ATTR
1568
1533
 
1569
1534
  /* ### Leave the instruction. ### */
@@ -1579,11 +1544,11 @@ INSN_ENTRY(pop)
1579
1544
 
1580
1545
  /* ### Declare and assign variables. ### */
1581
1546
  # define INSN_ATTR(x) attr_ ## x ## _pop()
1582
- const bool leaf = INSN_ATTR(leaf);
1547
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
1583
1548
  VALUE val = TOPN(0);
1584
1549
 
1585
1550
  /* ### Instruction preambles. ### */
1586
- if (! leaf) ADD_PC(INSN_ATTR(width));
1551
+ ADD_PC(INSN_ATTR(width));
1587
1552
  SETUP_CANARY(leaf);
1588
1553
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
1589
1554
 
@@ -1594,14 +1559,13 @@ INSN_ENTRY(pop)
1594
1559
  (void)val;
1595
1560
  /* none */
1596
1561
  }
1597
- # line 1598 "vm.inc"
1562
+ # line 1563 "vm.inc"
1598
1563
  # undef NAME_OF_CURRENT_INSN
1599
1564
 
1600
1565
  /* ### Instruction trailers. ### */
1601
1566
  CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
1602
1567
  CHECK_CANARY(leaf, INSN_ATTR(bin));
1603
1568
  INC_SP(INSN_ATTR(sp_inc));
1604
- if (leaf) ADD_PC(INSN_ATTR(width));
1605
1569
  # undef INSN_ATTR
1606
1570
 
1607
1571
  /* ### Leave the instruction. ### */
@@ -1617,13 +1581,13 @@ INSN_ENTRY(dup)
1617
1581
 
1618
1582
  /* ### Declare and assign variables. ### */
1619
1583
  # define INSN_ATTR(x) attr_ ## x ## _dup()
1620
- const bool leaf = INSN_ATTR(leaf);
1584
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
1621
1585
  VALUE val = TOPN(0);
1622
1586
  VALUE val1;
1623
1587
  VALUE val2;
1624
1588
 
1625
1589
  /* ### Instruction preambles. ### */
1626
- if (! leaf) ADD_PC(INSN_ATTR(width));
1590
+ ADD_PC(INSN_ATTR(width));
1627
1591
  SETUP_CANARY(leaf);
1628
1592
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
1629
1593
 
@@ -1633,7 +1597,7 @@ INSN_ENTRY(dup)
1633
1597
  {
1634
1598
  val1 = val2 = val;
1635
1599
  }
1636
- # line 1637 "vm.inc"
1600
+ # line 1601 "vm.inc"
1637
1601
  # undef NAME_OF_CURRENT_INSN
1638
1602
 
1639
1603
  /* ### Instruction trailers. ### */
@@ -1646,7 +1610,6 @@ INSN_ENTRY(dup)
1646
1610
  TOPN(1) = val1;
1647
1611
  VM_ASSERT(!RB_TYPE_P(TOPN(1), T_NONE));
1648
1612
  VM_ASSERT(!RB_TYPE_P(TOPN(1), T_MOVED));
1649
- if (leaf) ADD_PC(INSN_ATTR(width));
1650
1613
  # undef INSN_ATTR
1651
1614
 
1652
1615
  /* ### Leave the instruction. ### */
@@ -1663,10 +1626,10 @@ INSN_ENTRY(dupn)
1663
1626
  /* ### Declare and assign variables. ### */
1664
1627
  rb_num_t n = (rb_num_t)GET_OPERAND(1);
1665
1628
  # define INSN_ATTR(x) attr_ ## x ## _dupn(n)
1666
- const bool leaf = INSN_ATTR(leaf);
1629
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
1667
1630
 
1668
1631
  /* ### Instruction preambles. ### */
1669
- if (! leaf) ADD_PC(INSN_ATTR(width));
1632
+ ADD_PC(INSN_ATTR(width));
1670
1633
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
1671
1634
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, n);
1672
1635
 
@@ -1679,13 +1642,12 @@ INSN_ENTRY(dupn)
1679
1642
 
1680
1643
  MEMCPY(dst, src, VALUE, n);
1681
1644
  }
1682
- # line 1683 "vm.inc"
1645
+ # line 1646 "vm.inc"
1683
1646
  # undef NAME_OF_CURRENT_INSN
1684
1647
 
1685
1648
  /* ### Instruction trailers. ### */
1686
1649
  CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
1687
1650
  INC_SP(INSN_ATTR(sp_inc));
1688
- if (leaf) ADD_PC(INSN_ATTR(width));
1689
1651
  # undef INSN_ATTR
1690
1652
 
1691
1653
  /* ### Leave the instruction. ### */
@@ -1701,12 +1663,12 @@ INSN_ENTRY(swap)
1701
1663
 
1702
1664
  /* ### Declare and assign variables. ### */
1703
1665
  # define INSN_ATTR(x) attr_ ## x ## _swap()
1704
- const bool leaf = INSN_ATTR(leaf);
1666
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
1705
1667
  VALUE val = TOPN(1);
1706
1668
  VALUE obj = TOPN(0);
1707
1669
 
1708
1670
  /* ### Instruction preambles. ### */
1709
- if (! leaf) ADD_PC(INSN_ATTR(width));
1671
+ ADD_PC(INSN_ATTR(width));
1710
1672
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
1711
1673
 
1712
1674
  /* ### Instruction trailers. ### */
@@ -1718,7 +1680,6 @@ INSN_ENTRY(swap)
1718
1680
  TOPN(1) = obj;
1719
1681
  VM_ASSERT(!RB_TYPE_P(TOPN(1), T_NONE));
1720
1682
  VM_ASSERT(!RB_TYPE_P(TOPN(1), T_MOVED));
1721
- if (leaf) ADD_PC(INSN_ATTR(width));
1722
1683
  # undef INSN_ATTR
1723
1684
 
1724
1685
  /* ### Leave the instruction. ### */
@@ -1735,10 +1696,10 @@ INSN_ENTRY(opt_reverse)
1735
1696
  /* ### Declare and assign variables. ### */
1736
1697
  rb_num_t n = (rb_num_t)GET_OPERAND(1);
1737
1698
  # define INSN_ATTR(x) attr_ ## x ## _opt_reverse(n)
1738
- const bool leaf = INSN_ATTR(leaf);
1699
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
1739
1700
 
1740
1701
  /* ### Instruction preambles. ### */
1741
- if (! leaf) ADD_PC(INSN_ATTR(width));
1702
+ ADD_PC(INSN_ATTR(width));
1742
1703
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
1743
1704
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, n);
1744
1705
 
@@ -1756,13 +1717,12 @@ INSN_ENTRY(opt_reverse)
1756
1717
  TOPN(i) = v0;
1757
1718
  }
1758
1719
  }
1759
- # line 1760 "vm.inc"
1720
+ # line 1721 "vm.inc"
1760
1721
  # undef NAME_OF_CURRENT_INSN
1761
1722
 
1762
1723
  /* ### Instruction trailers. ### */
1763
1724
  CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
1764
1725
  INC_SP(INSN_ATTR(sp_inc));
1765
- if (leaf) ADD_PC(INSN_ATTR(width));
1766
1726
  # undef INSN_ATTR
1767
1727
 
1768
1728
  /* ### Leave the instruction. ### */
@@ -1779,11 +1739,11 @@ INSN_ENTRY(topn)
1779
1739
  /* ### Declare and assign variables. ### */
1780
1740
  rb_num_t n = (rb_num_t)GET_OPERAND(1);
1781
1741
  # define INSN_ATTR(x) attr_ ## x ## _topn(n)
1782
- const bool leaf = INSN_ATTR(leaf);
1742
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
1783
1743
  VALUE val;
1784
1744
 
1785
1745
  /* ### Instruction preambles. ### */
1786
- if (! leaf) ADD_PC(INSN_ATTR(width));
1746
+ ADD_PC(INSN_ATTR(width));
1787
1747
  SETUP_CANARY(leaf);
1788
1748
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
1789
1749
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, n);
@@ -1794,7 +1754,7 @@ INSN_ENTRY(topn)
1794
1754
  {
1795
1755
  val = TOPN(n);
1796
1756
  }
1797
- # line 1798 "vm.inc"
1757
+ # line 1758 "vm.inc"
1798
1758
  # undef NAME_OF_CURRENT_INSN
1799
1759
 
1800
1760
  /* ### Instruction trailers. ### */
@@ -1804,7 +1764,6 @@ INSN_ENTRY(topn)
1804
1764
  TOPN(0) = val;
1805
1765
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
1806
1766
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
1807
- if (leaf) ADD_PC(INSN_ATTR(width));
1808
1767
  # undef INSN_ATTR
1809
1768
 
1810
1769
  /* ### Leave the instruction. ### */
@@ -1821,11 +1780,11 @@ INSN_ENTRY(setn)
1821
1780
  /* ### Declare and assign variables. ### */
1822
1781
  rb_num_t n = (rb_num_t)GET_OPERAND(1);
1823
1782
  # define INSN_ATTR(x) attr_ ## x ## _setn(n)
1824
- const bool leaf = INSN_ATTR(leaf);
1783
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
1825
1784
  VALUE val = TOPN(0);
1826
1785
 
1827
1786
  /* ### Instruction preambles. ### */
1828
- if (! leaf) ADD_PC(INSN_ATTR(width));
1787
+ ADD_PC(INSN_ATTR(width));
1829
1788
  SETUP_CANARY(leaf);
1830
1789
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
1831
1790
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, n);
@@ -1836,7 +1795,7 @@ INSN_ENTRY(setn)
1836
1795
  {
1837
1796
  TOPN(n) = val;
1838
1797
  }
1839
- # line 1840 "vm.inc"
1798
+ # line 1799 "vm.inc"
1840
1799
  # undef NAME_OF_CURRENT_INSN
1841
1800
 
1842
1801
  /* ### Instruction trailers. ### */
@@ -1846,7 +1805,6 @@ INSN_ENTRY(setn)
1846
1805
  TOPN(0) = val;
1847
1806
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
1848
1807
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
1849
- if (leaf) ADD_PC(INSN_ATTR(width));
1850
1808
  # undef INSN_ATTR
1851
1809
 
1852
1810
  /* ### Leave the instruction. ### */
@@ -1863,17 +1821,16 @@ INSN_ENTRY(adjuststack)
1863
1821
  /* ### Declare and assign variables. ### */
1864
1822
  rb_num_t n = (rb_num_t)GET_OPERAND(1);
1865
1823
  # define INSN_ATTR(x) attr_ ## x ## _adjuststack(n)
1866
- const bool leaf = INSN_ATTR(leaf);
1824
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
1867
1825
 
1868
1826
  /* ### Instruction preambles. ### */
1869
- if (! leaf) ADD_PC(INSN_ATTR(width));
1827
+ ADD_PC(INSN_ATTR(width));
1870
1828
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
1871
1829
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, n);
1872
1830
 
1873
1831
  /* ### Instruction trailers. ### */
1874
1832
  CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
1875
1833
  INC_SP(INSN_ATTR(sp_inc));
1876
- if (leaf) ADD_PC(INSN_ATTR(width));
1877
1834
  # undef INSN_ATTR
1878
1835
 
1879
1836
  /* ### Leave the instruction. ### */
@@ -1892,12 +1849,12 @@ INSN_ENTRY(defined)
1892
1849
  VALUE obj = (VALUE)GET_OPERAND(2);
1893
1850
  VALUE pushval = (VALUE)GET_OPERAND(3);
1894
1851
  # define INSN_ATTR(x) attr_ ## x ## _defined(op_type, obj, pushval)
1895
- const bool leaf = INSN_ATTR(leaf);
1852
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
1896
1853
  VALUE v = TOPN(0);
1897
1854
  VALUE val;
1898
1855
 
1899
1856
  /* ### Instruction preambles. ### */
1900
- if (! leaf) ADD_PC(INSN_ATTR(width));
1857
+ ADD_PC(INSN_ATTR(width));
1901
1858
  SETUP_CANARY(leaf);
1902
1859
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
1903
1860
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, op_type);
@@ -1913,7 +1870,7 @@ INSN_ENTRY(defined)
1913
1870
  val = pushval;
1914
1871
  }
1915
1872
  }
1916
- # line 1917 "vm.inc"
1873
+ # line 1874 "vm.inc"
1917
1874
  # undef NAME_OF_CURRENT_INSN
1918
1875
 
1919
1876
  /* ### Instruction trailers. ### */
@@ -1923,7 +1880,6 @@ INSN_ENTRY(defined)
1923
1880
  TOPN(0) = val;
1924
1881
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
1925
1882
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
1926
- if (leaf) ADD_PC(INSN_ATTR(width));
1927
1883
  # undef INSN_ATTR
1928
1884
 
1929
1885
  /* ### Leave the instruction. ### */
@@ -1942,11 +1898,11 @@ INSN_ENTRY(definedivar)
1942
1898
  IVC ic = (IVC)GET_OPERAND(2);
1943
1899
  VALUE pushval = (VALUE)GET_OPERAND(3);
1944
1900
  # define INSN_ATTR(x) attr_ ## x ## _definedivar(id, ic, pushval)
1945
- const bool leaf = INSN_ATTR(leaf);
1901
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
1946
1902
  VALUE val;
1947
1903
 
1948
1904
  /* ### Instruction preambles. ### */
1949
- if (! leaf) ADD_PC(INSN_ATTR(width));
1905
+ ADD_PC(INSN_ATTR(width));
1950
1906
  SETUP_CANARY(leaf);
1951
1907
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
1952
1908
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, id);
@@ -1962,7 +1918,7 @@ INSN_ENTRY(definedivar)
1962
1918
  val = pushval;
1963
1919
  }
1964
1920
  }
1965
- # line 1966 "vm.inc"
1921
+ # line 1922 "vm.inc"
1966
1922
  # undef NAME_OF_CURRENT_INSN
1967
1923
 
1968
1924
  /* ### Instruction trailers. ### */
@@ -1972,7 +1928,6 @@ INSN_ENTRY(definedivar)
1972
1928
  TOPN(0) = val;
1973
1929
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
1974
1930
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
1975
- if (leaf) ADD_PC(INSN_ATTR(width));
1976
1931
  # undef INSN_ATTR
1977
1932
 
1978
1933
  /* ### Leave the instruction. ### */
@@ -1989,13 +1944,13 @@ INSN_ENTRY(checkmatch)
1989
1944
  /* ### Declare and assign variables. ### */
1990
1945
  rb_num_t flag = (rb_num_t)GET_OPERAND(1);
1991
1946
  # define INSN_ATTR(x) attr_ ## x ## _checkmatch(flag)
1992
- const bool leaf = INSN_ATTR(leaf);
1947
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
1993
1948
  VALUE target = TOPN(1);
1994
1949
  VALUE pattern = TOPN(0);
1995
1950
  VALUE result;
1996
1951
 
1997
1952
  /* ### Instruction preambles. ### */
1998
- if (! leaf) ADD_PC(INSN_ATTR(width));
1953
+ ADD_PC(INSN_ATTR(width));
1999
1954
  SETUP_CANARY(leaf);
2000
1955
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
2001
1956
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, flag);
@@ -2006,7 +1961,7 @@ INSN_ENTRY(checkmatch)
2006
1961
  {
2007
1962
  result = vm_check_match(ec, target, pattern, flag);
2008
1963
  }
2009
- # line 2010 "vm.inc"
1964
+ # line 1965 "vm.inc"
2010
1965
  # undef NAME_OF_CURRENT_INSN
2011
1966
 
2012
1967
  /* ### Instruction trailers. ### */
@@ -2016,7 +1971,6 @@ INSN_ENTRY(checkmatch)
2016
1971
  TOPN(0) = result;
2017
1972
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
2018
1973
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
2019
- if (leaf) ADD_PC(INSN_ATTR(width));
2020
1974
  # undef INSN_ATTR
2021
1975
 
2022
1976
  /* ### Leave the instruction. ### */
@@ -2034,11 +1988,11 @@ INSN_ENTRY(checkkeyword)
2034
1988
  lindex_t kw_bits_index = (lindex_t)GET_OPERAND(1);
2035
1989
  lindex_t keyword_index = (lindex_t)GET_OPERAND(2);
2036
1990
  # define INSN_ATTR(x) attr_ ## x ## _checkkeyword(kw_bits_index, keyword_index)
2037
- const bool leaf = INSN_ATTR(leaf);
1991
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
2038
1992
  VALUE ret;
2039
1993
 
2040
1994
  /* ### Instruction preambles. ### */
2041
- if (! leaf) ADD_PC(INSN_ATTR(width));
1995
+ ADD_PC(INSN_ATTR(width));
2042
1996
  SETUP_CANARY(leaf);
2043
1997
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
2044
1998
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, kw_bits_index);
@@ -2050,7 +2004,7 @@ INSN_ENTRY(checkkeyword)
2050
2004
  {
2051
2005
  ret = vm_check_keyword(kw_bits_index, keyword_index, GET_EP());
2052
2006
  }
2053
- # line 2054 "vm.inc"
2007
+ # line 2008 "vm.inc"
2054
2008
  # undef NAME_OF_CURRENT_INSN
2055
2009
 
2056
2010
  /* ### Instruction trailers. ### */
@@ -2060,7 +2014,6 @@ INSN_ENTRY(checkkeyword)
2060
2014
  TOPN(0) = ret;
2061
2015
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
2062
2016
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
2063
- if (leaf) ADD_PC(INSN_ATTR(width));
2064
2017
  # undef INSN_ATTR
2065
2018
 
2066
2019
  /* ### Leave the instruction. ### */
@@ -2077,12 +2030,12 @@ INSN_ENTRY(checktype)
2077
2030
  /* ### Declare and assign variables. ### */
2078
2031
  rb_num_t type = (rb_num_t)GET_OPERAND(1);
2079
2032
  # define INSN_ATTR(x) attr_ ## x ## _checktype(type)
2080
- const bool leaf = INSN_ATTR(leaf);
2033
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
2081
2034
  VALUE val = TOPN(0);
2082
2035
  VALUE ret;
2083
2036
 
2084
2037
  /* ### Instruction preambles. ### */
2085
- if (! leaf) ADD_PC(INSN_ATTR(width));
2038
+ ADD_PC(INSN_ATTR(width));
2086
2039
  SETUP_CANARY(leaf);
2087
2040
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
2088
2041
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, type);
@@ -2093,7 +2046,7 @@ INSN_ENTRY(checktype)
2093
2046
  {
2094
2047
  ret = RBOOL(TYPE(val) == (int)type);
2095
2048
  }
2096
- # line 2097 "vm.inc"
2049
+ # line 2050 "vm.inc"
2097
2050
  # undef NAME_OF_CURRENT_INSN
2098
2051
 
2099
2052
  /* ### Instruction trailers. ### */
@@ -2103,7 +2056,6 @@ INSN_ENTRY(checktype)
2103
2056
  TOPN(0) = ret;
2104
2057
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
2105
2058
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
2106
- if (leaf) ADD_PC(INSN_ATTR(width));
2107
2059
  # undef INSN_ATTR
2108
2060
 
2109
2061
  /* ### Leave the instruction. ### */
@@ -2122,13 +2074,13 @@ INSN_ENTRY(defineclass)
2122
2074
  ISEQ class_iseq = (ISEQ)GET_OPERAND(2);
2123
2075
  rb_num_t flags = (rb_num_t)GET_OPERAND(3);
2124
2076
  # define INSN_ATTR(x) attr_ ## x ## _defineclass(id, class_iseq, flags)
2125
- const bool leaf = INSN_ATTR(leaf);
2077
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
2126
2078
  VALUE cbase = TOPN(1);
2127
2079
  VALUE super = TOPN(0);
2128
2080
  VALUE val;
2129
2081
 
2130
2082
  /* ### Instruction preambles. ### */
2131
- if (! leaf) ADD_PC(INSN_ATTR(width));
2083
+ ADD_PC(INSN_ATTR(width));
2132
2084
  POPN(INSN_ATTR(popn));
2133
2085
  SETUP_CANARY(leaf);
2134
2086
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
@@ -2154,14 +2106,13 @@ INSN_ENTRY(defineclass)
2154
2106
  RESTORE_REGS();
2155
2107
  NEXT_INSN();
2156
2108
  }
2157
- # line 2158 "vm.inc"
2109
+ # line 2110 "vm.inc"
2158
2110
  # undef NAME_OF_CURRENT_INSN
2159
2111
 
2160
2112
  /* ### Instruction trailers. ### */
2161
2113
  CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
2162
2114
  CHECK_CANARY(leaf, INSN_ATTR(bin));
2163
2115
  PUSH(val);
2164
- if (leaf) ADD_PC(INSN_ATTR(width));
2165
2116
  # undef INSN_ATTR
2166
2117
 
2167
2118
  /* ### Leave the instruction. ### */
@@ -2179,10 +2130,10 @@ INSN_ENTRY(definemethod)
2179
2130
  ID id = (ID)GET_OPERAND(1);
2180
2131
  ISEQ iseq = (ISEQ)GET_OPERAND(2);
2181
2132
  # define INSN_ATTR(x) attr_ ## x ## _definemethod(id, iseq)
2182
- const bool leaf = INSN_ATTR(leaf);
2133
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
2183
2134
 
2184
2135
  /* ### Instruction preambles. ### */
2185
- if (! leaf) ADD_PC(INSN_ATTR(width));
2136
+ ADD_PC(INSN_ATTR(width));
2186
2137
  POPN(INSN_ATTR(popn));
2187
2138
  SETUP_CANARY(leaf);
2188
2139
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
@@ -2195,13 +2146,12 @@ INSN_ENTRY(definemethod)
2195
2146
  {
2196
2147
  vm_define_method(ec, Qnil, id, (VALUE)iseq, FALSE);
2197
2148
  }
2198
- # line 2199 "vm.inc"
2149
+ # line 2150 "vm.inc"
2199
2150
  # undef NAME_OF_CURRENT_INSN
2200
2151
 
2201
2152
  /* ### Instruction trailers. ### */
2202
2153
  CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
2203
2154
  CHECK_CANARY(leaf, INSN_ATTR(bin));
2204
- if (leaf) ADD_PC(INSN_ATTR(width));
2205
2155
  # undef INSN_ATTR
2206
2156
 
2207
2157
  /* ### Leave the instruction. ### */
@@ -2219,11 +2169,11 @@ INSN_ENTRY(definesmethod)
2219
2169
  ID id = (ID)GET_OPERAND(1);
2220
2170
  ISEQ iseq = (ISEQ)GET_OPERAND(2);
2221
2171
  # define INSN_ATTR(x) attr_ ## x ## _definesmethod(id, iseq)
2222
- const bool leaf = INSN_ATTR(leaf);
2172
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
2223
2173
  VALUE obj = TOPN(0);
2224
2174
 
2225
2175
  /* ### Instruction preambles. ### */
2226
- if (! leaf) ADD_PC(INSN_ATTR(width));
2176
+ ADD_PC(INSN_ATTR(width));
2227
2177
  POPN(INSN_ATTR(popn));
2228
2178
  SETUP_CANARY(leaf);
2229
2179
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
@@ -2236,13 +2186,12 @@ INSN_ENTRY(definesmethod)
2236
2186
  {
2237
2187
  vm_define_method(ec, obj, id, (VALUE)iseq, TRUE);
2238
2188
  }
2239
- # line 2240 "vm.inc"
2189
+ # line 2190 "vm.inc"
2240
2190
  # undef NAME_OF_CURRENT_INSN
2241
2191
 
2242
2192
  /* ### Instruction trailers. ### */
2243
2193
  CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
2244
2194
  CHECK_CANARY(leaf, INSN_ATTR(bin));
2245
- if (leaf) ADD_PC(INSN_ATTR(width));
2246
2195
  # undef INSN_ATTR
2247
2196
 
2248
2197
  /* ### Leave the instruction. ### */
@@ -2260,11 +2209,11 @@ INSN_ENTRY(send)
2260
2209
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
2261
2210
  ISEQ blockiseq = (ISEQ)GET_OPERAND(2);
2262
2211
  # define INSN_ATTR(x) attr_ ## x ## _send(cd, blockiseq)
2263
- const bool leaf = INSN_ATTR(leaf);
2212
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
2264
2213
  VALUE val;
2265
2214
 
2266
2215
  /* ### Instruction preambles. ### */
2267
- if (! leaf) ADD_PC(INSN_ATTR(width));
2216
+ ADD_PC(INSN_ATTR(width));
2268
2217
  POPN(INSN_ATTR(popn));
2269
2218
  SETUP_CANARY(leaf);
2270
2219
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
@@ -2284,14 +2233,13 @@ INSN_ENTRY(send)
2284
2233
  NEXT_INSN();
2285
2234
  }
2286
2235
  }
2287
- # line 2288 "vm.inc"
2236
+ # line 2237 "vm.inc"
2288
2237
  # undef NAME_OF_CURRENT_INSN
2289
2238
 
2290
2239
  /* ### Instruction trailers. ### */
2291
2240
  CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
2292
2241
  CHECK_CANARY(leaf, INSN_ATTR(bin));
2293
2242
  PUSH(val);
2294
- if (leaf) ADD_PC(INSN_ATTR(width));
2295
2243
  # undef INSN_ATTR
2296
2244
 
2297
2245
  /* ### Leave the instruction. ### */
@@ -2308,11 +2256,11 @@ INSN_ENTRY(opt_send_without_block)
2308
2256
  /* ### Declare and assign variables. ### */
2309
2257
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
2310
2258
  # define INSN_ATTR(x) attr_ ## x ## _opt_send_without_block(cd)
2311
- const bool leaf = INSN_ATTR(leaf);
2259
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
2312
2260
  VALUE val;
2313
2261
 
2314
2262
  /* ### Instruction preambles. ### */
2315
- if (! leaf) ADD_PC(INSN_ATTR(width));
2263
+ ADD_PC(INSN_ATTR(width));
2316
2264
  POPN(INSN_ATTR(popn));
2317
2265
  SETUP_CANARY(leaf);
2318
2266
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
@@ -2331,14 +2279,13 @@ INSN_ENTRY(opt_send_without_block)
2331
2279
  NEXT_INSN();
2332
2280
  }
2333
2281
  }
2334
- # line 2335 "vm.inc"
2282
+ # line 2283 "vm.inc"
2335
2283
  # undef NAME_OF_CURRENT_INSN
2336
2284
 
2337
2285
  /* ### Instruction trailers. ### */
2338
2286
  CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
2339
2287
  CHECK_CANARY(leaf, INSN_ATTR(bin));
2340
2288
  PUSH(val);
2341
- if (leaf) ADD_PC(INSN_ATTR(width));
2342
2289
  # undef INSN_ATTR
2343
2290
 
2344
2291
  /* ### Leave the instruction. ### */
@@ -2355,12 +2302,12 @@ INSN_ENTRY(objtostring)
2355
2302
  /* ### Declare and assign variables. ### */
2356
2303
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
2357
2304
  # define INSN_ATTR(x) attr_ ## x ## _objtostring(cd)
2358
- const bool leaf = INSN_ATTR(leaf);
2305
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
2359
2306
  VALUE recv = TOPN(0);
2360
2307
  VALUE val;
2361
2308
 
2362
2309
  /* ### Instruction preambles. ### */
2363
- if (! leaf) ADD_PC(INSN_ATTR(width));
2310
+ ADD_PC(INSN_ATTR(width));
2364
2311
  SETUP_CANARY(leaf);
2365
2312
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
2366
2313
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
@@ -2375,7 +2322,7 @@ INSN_ENTRY(objtostring)
2375
2322
  CALL_SIMPLE_METHOD();
2376
2323
  }
2377
2324
  }
2378
- # line 2379 "vm.inc"
2325
+ # line 2326 "vm.inc"
2379
2326
  # undef NAME_OF_CURRENT_INSN
2380
2327
 
2381
2328
  /* ### Instruction trailers. ### */
@@ -2385,7 +2332,6 @@ INSN_ENTRY(objtostring)
2385
2332
  TOPN(0) = val;
2386
2333
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
2387
2334
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
2388
- if (leaf) ADD_PC(INSN_ATTR(width));
2389
2335
  # undef INSN_ATTR
2390
2336
 
2391
2337
  /* ### Leave the instruction. ### */
@@ -2403,11 +2349,11 @@ INSN_ENTRY(opt_str_freeze)
2403
2349
  VALUE str = (VALUE)GET_OPERAND(1);
2404
2350
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(2);
2405
2351
  # define INSN_ATTR(x) attr_ ## x ## _opt_str_freeze(str, cd)
2406
- const bool leaf = INSN_ATTR(leaf);
2352
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
2407
2353
  VALUE val;
2408
2354
 
2409
2355
  /* ### Instruction preambles. ### */
2410
- if (! leaf) ADD_PC(INSN_ATTR(width));
2356
+ ADD_PC(INSN_ATTR(width));
2411
2357
  SETUP_CANARY(leaf);
2412
2358
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
2413
2359
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, str);
@@ -2424,7 +2370,7 @@ INSN_ENTRY(opt_str_freeze)
2424
2370
  CALL_SIMPLE_METHOD();
2425
2371
  }
2426
2372
  }
2427
- # line 2428 "vm.inc"
2373
+ # line 2374 "vm.inc"
2428
2374
  # undef NAME_OF_CURRENT_INSN
2429
2375
 
2430
2376
  /* ### Instruction trailers. ### */
@@ -2434,7 +2380,6 @@ INSN_ENTRY(opt_str_freeze)
2434
2380
  TOPN(0) = val;
2435
2381
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
2436
2382
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
2437
- if (leaf) ADD_PC(INSN_ATTR(width));
2438
2383
  # undef INSN_ATTR
2439
2384
 
2440
2385
  /* ### Leave the instruction. ### */
@@ -2451,12 +2396,12 @@ INSN_ENTRY(opt_nil_p)
2451
2396
  /* ### Declare and assign variables. ### */
2452
2397
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
2453
2398
  # define INSN_ATTR(x) attr_ ## x ## _opt_nil_p(cd)
2454
- const bool leaf = INSN_ATTR(leaf);
2399
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
2455
2400
  VALUE recv = TOPN(0);
2456
2401
  VALUE val;
2457
2402
 
2458
2403
  /* ### Instruction preambles. ### */
2459
- if (! leaf) ADD_PC(INSN_ATTR(width));
2404
+ ADD_PC(INSN_ATTR(width));
2460
2405
  SETUP_CANARY(leaf);
2461
2406
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
2462
2407
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
@@ -2471,7 +2416,7 @@ INSN_ENTRY(opt_nil_p)
2471
2416
  CALL_SIMPLE_METHOD();
2472
2417
  }
2473
2418
  }
2474
- # line 2475 "vm.inc"
2419
+ # line 2420 "vm.inc"
2475
2420
  # undef NAME_OF_CURRENT_INSN
2476
2421
 
2477
2422
  /* ### Instruction trailers. ### */
@@ -2481,7 +2426,6 @@ INSN_ENTRY(opt_nil_p)
2481
2426
  TOPN(0) = val;
2482
2427
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
2483
2428
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
2484
- if (leaf) ADD_PC(INSN_ATTR(width));
2485
2429
  # undef INSN_ATTR
2486
2430
 
2487
2431
  /* ### Leave the instruction. ### */
@@ -2499,11 +2443,11 @@ INSN_ENTRY(opt_str_uminus)
2499
2443
  VALUE str = (VALUE)GET_OPERAND(1);
2500
2444
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(2);
2501
2445
  # define INSN_ATTR(x) attr_ ## x ## _opt_str_uminus(str, cd)
2502
- const bool leaf = INSN_ATTR(leaf);
2446
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
2503
2447
  VALUE val;
2504
2448
 
2505
2449
  /* ### Instruction preambles. ### */
2506
- if (! leaf) ADD_PC(INSN_ATTR(width));
2450
+ ADD_PC(INSN_ATTR(width));
2507
2451
  SETUP_CANARY(leaf);
2508
2452
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
2509
2453
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, str);
@@ -2520,7 +2464,7 @@ INSN_ENTRY(opt_str_uminus)
2520
2464
  CALL_SIMPLE_METHOD();
2521
2465
  }
2522
2466
  }
2523
- # line 2524 "vm.inc"
2467
+ # line 2468 "vm.inc"
2524
2468
  # undef NAME_OF_CURRENT_INSN
2525
2469
 
2526
2470
  /* ### Instruction trailers. ### */
@@ -2530,7 +2474,6 @@ INSN_ENTRY(opt_str_uminus)
2530
2474
  TOPN(0) = val;
2531
2475
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
2532
2476
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
2533
- if (leaf) ADD_PC(INSN_ATTR(width));
2534
2477
  # undef INSN_ATTR
2535
2478
 
2536
2479
  /* ### Leave the instruction. ### */
@@ -2548,11 +2491,11 @@ INSN_ENTRY(opt_newarray_send)
2548
2491
  rb_num_t num = (rb_num_t)GET_OPERAND(1);
2549
2492
  ID method = (ID)GET_OPERAND(2);
2550
2493
  # define INSN_ATTR(x) attr_ ## x ## _opt_newarray_send(num, method)
2551
- const bool leaf = INSN_ATTR(leaf);
2494
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
2552
2495
  VALUE val;
2553
2496
 
2554
2497
  /* ### Instruction preambles. ### */
2555
- if (! leaf) ADD_PC(INSN_ATTR(width));
2498
+ ADD_PC(INSN_ATTR(width));
2556
2499
  SETUP_CANARY(leaf);
2557
2500
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
2558
2501
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, num);
@@ -2576,7 +2519,7 @@ INSN_ENTRY(opt_newarray_send)
2576
2519
  rb_bug("unreachable");
2577
2520
  }
2578
2521
  }
2579
- # line 2580 "vm.inc"
2522
+ # line 2523 "vm.inc"
2580
2523
  # undef NAME_OF_CURRENT_INSN
2581
2524
 
2582
2525
  /* ### Instruction trailers. ### */
@@ -2586,7 +2529,6 @@ INSN_ENTRY(opt_newarray_send)
2586
2529
  TOPN(0) = val;
2587
2530
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
2588
2531
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
2589
- if (leaf) ADD_PC(INSN_ATTR(width));
2590
2532
  # undef INSN_ATTR
2591
2533
 
2592
2534
  /* ### Leave the instruction. ### */
@@ -2604,11 +2546,11 @@ INSN_ENTRY(invokesuper)
2604
2546
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
2605
2547
  ISEQ blockiseq = (ISEQ)GET_OPERAND(2);
2606
2548
  # define INSN_ATTR(x) attr_ ## x ## _invokesuper(cd, blockiseq)
2607
- const bool leaf = INSN_ATTR(leaf);
2549
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
2608
2550
  VALUE val;
2609
2551
 
2610
2552
  /* ### Instruction preambles. ### */
2611
- if (! leaf) ADD_PC(INSN_ATTR(width));
2553
+ ADD_PC(INSN_ATTR(width));
2612
2554
  POPN(INSN_ATTR(popn));
2613
2555
  SETUP_CANARY(leaf);
2614
2556
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
@@ -2628,14 +2570,13 @@ INSN_ENTRY(invokesuper)
2628
2570
  NEXT_INSN();
2629
2571
  }
2630
2572
  }
2631
- # line 2632 "vm.inc"
2573
+ # line 2574 "vm.inc"
2632
2574
  # undef NAME_OF_CURRENT_INSN
2633
2575
 
2634
2576
  /* ### Instruction trailers. ### */
2635
2577
  CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
2636
2578
  CHECK_CANARY(leaf, INSN_ATTR(bin));
2637
2579
  PUSH(val);
2638
- if (leaf) ADD_PC(INSN_ATTR(width));
2639
2580
  # undef INSN_ATTR
2640
2581
 
2641
2582
  /* ### Leave the instruction. ### */
@@ -2652,11 +2593,11 @@ INSN_ENTRY(invokeblock)
2652
2593
  /* ### Declare and assign variables. ### */
2653
2594
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
2654
2595
  # define INSN_ATTR(x) attr_ ## x ## _invokeblock(cd)
2655
- const bool leaf = INSN_ATTR(leaf);
2596
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
2656
2597
  VALUE val;
2657
2598
 
2658
2599
  /* ### Instruction preambles. ### */
2659
- if (! leaf) ADD_PC(INSN_ATTR(width));
2600
+ ADD_PC(INSN_ATTR(width));
2660
2601
  POPN(INSN_ATTR(popn));
2661
2602
  SETUP_CANARY(leaf);
2662
2603
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
@@ -2675,14 +2616,13 @@ INSN_ENTRY(invokeblock)
2675
2616
  NEXT_INSN();
2676
2617
  }
2677
2618
  }
2678
- # line 2679 "vm.inc"
2619
+ # line 2620 "vm.inc"
2679
2620
  # undef NAME_OF_CURRENT_INSN
2680
2621
 
2681
2622
  /* ### Instruction trailers. ### */
2682
2623
  CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
2683
2624
  CHECK_CANARY(leaf, INSN_ATTR(bin));
2684
2625
  PUSH(val);
2685
- if (leaf) ADD_PC(INSN_ATTR(width));
2686
2626
  # undef INSN_ATTR
2687
2627
 
2688
2628
  /* ### Leave the instruction. ### */
@@ -2698,11 +2638,11 @@ INSN_ENTRY(leave)
2698
2638
 
2699
2639
  /* ### Declare and assign variables. ### */
2700
2640
  # define INSN_ATTR(x) attr_ ## x ## _leave()
2701
- const bool leaf = INSN_ATTR(leaf);
2641
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
2702
2642
  VALUE val = TOPN(0);
2703
2643
 
2704
2644
  /* ### Instruction preambles. ### */
2705
- if (! leaf) ADD_PC(INSN_ATTR(width));
2645
+ ADD_PC(INSN_ATTR(width));
2706
2646
  POPN(INSN_ATTR(popn));
2707
2647
  SETUP_CANARY(leaf);
2708
2648
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
@@ -2730,14 +2670,13 @@ INSN_ENTRY(leave)
2730
2670
  RESTORE_REGS();
2731
2671
  }
2732
2672
  }
2733
- # line 2734 "vm.inc"
2673
+ # line 2674 "vm.inc"
2734
2674
  # undef NAME_OF_CURRENT_INSN
2735
2675
 
2736
2676
  /* ### Instruction trailers. ### */
2737
2677
  CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
2738
2678
  CHECK_CANARY(leaf, INSN_ATTR(bin));
2739
2679
  PUSH(val);
2740
- if (leaf) ADD_PC(INSN_ATTR(width));
2741
2680
  # undef INSN_ATTR
2742
2681
 
2743
2682
  /* ### Leave the instruction. ### */
@@ -2754,12 +2693,12 @@ INSN_ENTRY(throw)
2754
2693
  /* ### Declare and assign variables. ### */
2755
2694
  rb_num_t throw_state = (rb_num_t)GET_OPERAND(1);
2756
2695
  # define INSN_ATTR(x) attr_ ## x ## _throw(throw_state)
2757
- const bool leaf = INSN_ATTR(leaf);
2696
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
2758
2697
  VALUE throwobj = TOPN(0);
2759
2698
  VALUE val;
2760
2699
 
2761
2700
  /* ### Instruction preambles. ### */
2762
- if (! leaf) ADD_PC(INSN_ATTR(width));
2701
+ ADD_PC(INSN_ATTR(width));
2763
2702
  SETUP_CANARY(leaf);
2764
2703
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
2765
2704
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, throw_state);
@@ -2772,7 +2711,7 @@ INSN_ENTRY(throw)
2772
2711
  THROW_EXCEPTION(val);
2773
2712
  /* unreachable */
2774
2713
  }
2775
- # line 2776 "vm.inc"
2714
+ # line 2715 "vm.inc"
2776
2715
  # undef NAME_OF_CURRENT_INSN
2777
2716
 
2778
2717
  /* ### Instruction trailers. ### */
@@ -2782,7 +2721,6 @@ INSN_ENTRY(throw)
2782
2721
  TOPN(0) = val;
2783
2722
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
2784
2723
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
2785
- if (leaf) ADD_PC(INSN_ATTR(width));
2786
2724
  # undef INSN_ATTR
2787
2725
 
2788
2726
  /* ### Leave the instruction. ### */
@@ -2799,10 +2737,10 @@ INSN_ENTRY(jump)
2799
2737
  /* ### Declare and assign variables. ### */
2800
2738
  OFFSET dst = (OFFSET)GET_OPERAND(1);
2801
2739
  # define INSN_ATTR(x) attr_ ## x ## _jump(dst)
2802
- const bool leaf = INSN_ATTR(leaf);
2740
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
2803
2741
 
2804
2742
  /* ### Instruction preambles. ### */
2805
- if (! leaf) ADD_PC(INSN_ATTR(width));
2743
+ ADD_PC(INSN_ATTR(width));
2806
2744
  SETUP_CANARY(leaf);
2807
2745
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
2808
2746
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, dst);
@@ -2814,14 +2752,13 @@ INSN_ENTRY(jump)
2814
2752
  RUBY_VM_CHECK_INTS(ec);
2815
2753
  JUMP(dst);
2816
2754
  }
2817
- # line 2818 "vm.inc"
2755
+ # line 2756 "vm.inc"
2818
2756
  # undef NAME_OF_CURRENT_INSN
2819
2757
 
2820
2758
  /* ### Instruction trailers. ### */
2821
2759
  CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
2822
2760
  CHECK_CANARY(leaf, INSN_ATTR(bin));
2823
2761
  INC_SP(INSN_ATTR(sp_inc));
2824
- if (leaf) ADD_PC(INSN_ATTR(width));
2825
2762
  # undef INSN_ATTR
2826
2763
 
2827
2764
  /* ### Leave the instruction. ### */
@@ -2838,11 +2775,11 @@ INSN_ENTRY(branchif)
2838
2775
  /* ### Declare and assign variables. ### */
2839
2776
  OFFSET dst = (OFFSET)GET_OPERAND(1);
2840
2777
  # define INSN_ATTR(x) attr_ ## x ## _branchif(dst)
2841
- const bool leaf = INSN_ATTR(leaf);
2778
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
2842
2779
  VALUE val = TOPN(0);
2843
2780
 
2844
2781
  /* ### Instruction preambles. ### */
2845
- if (! leaf) ADD_PC(INSN_ATTR(width));
2782
+ ADD_PC(INSN_ATTR(width));
2846
2783
  SETUP_CANARY(leaf);
2847
2784
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
2848
2785
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, dst);
@@ -2856,14 +2793,13 @@ INSN_ENTRY(branchif)
2856
2793
  JUMP(dst);
2857
2794
  }
2858
2795
  }
2859
- # line 2860 "vm.inc"
2796
+ # line 2797 "vm.inc"
2860
2797
  # undef NAME_OF_CURRENT_INSN
2861
2798
 
2862
2799
  /* ### Instruction trailers. ### */
2863
2800
  CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
2864
2801
  CHECK_CANARY(leaf, INSN_ATTR(bin));
2865
2802
  INC_SP(INSN_ATTR(sp_inc));
2866
- if (leaf) ADD_PC(INSN_ATTR(width));
2867
2803
  # undef INSN_ATTR
2868
2804
 
2869
2805
  /* ### Leave the instruction. ### */
@@ -2880,11 +2816,11 @@ INSN_ENTRY(branchunless)
2880
2816
  /* ### Declare and assign variables. ### */
2881
2817
  OFFSET dst = (OFFSET)GET_OPERAND(1);
2882
2818
  # define INSN_ATTR(x) attr_ ## x ## _branchunless(dst)
2883
- const bool leaf = INSN_ATTR(leaf);
2819
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
2884
2820
  VALUE val = TOPN(0);
2885
2821
 
2886
2822
  /* ### Instruction preambles. ### */
2887
- if (! leaf) ADD_PC(INSN_ATTR(width));
2823
+ ADD_PC(INSN_ATTR(width));
2888
2824
  SETUP_CANARY(leaf);
2889
2825
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
2890
2826
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, dst);
@@ -2898,14 +2834,13 @@ INSN_ENTRY(branchunless)
2898
2834
  JUMP(dst);
2899
2835
  }
2900
2836
  }
2901
- # line 2902 "vm.inc"
2837
+ # line 2838 "vm.inc"
2902
2838
  # undef NAME_OF_CURRENT_INSN
2903
2839
 
2904
2840
  /* ### Instruction trailers. ### */
2905
2841
  CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
2906
2842
  CHECK_CANARY(leaf, INSN_ATTR(bin));
2907
2843
  INC_SP(INSN_ATTR(sp_inc));
2908
- if (leaf) ADD_PC(INSN_ATTR(width));
2909
2844
  # undef INSN_ATTR
2910
2845
 
2911
2846
  /* ### Leave the instruction. ### */
@@ -2922,11 +2857,11 @@ INSN_ENTRY(branchnil)
2922
2857
  /* ### Declare and assign variables. ### */
2923
2858
  OFFSET dst = (OFFSET)GET_OPERAND(1);
2924
2859
  # define INSN_ATTR(x) attr_ ## x ## _branchnil(dst)
2925
- const bool leaf = INSN_ATTR(leaf);
2860
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
2926
2861
  VALUE val = TOPN(0);
2927
2862
 
2928
2863
  /* ### Instruction preambles. ### */
2929
- if (! leaf) ADD_PC(INSN_ATTR(width));
2864
+ ADD_PC(INSN_ATTR(width));
2930
2865
  SETUP_CANARY(leaf);
2931
2866
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
2932
2867
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, dst);
@@ -2940,14 +2875,13 @@ INSN_ENTRY(branchnil)
2940
2875
  JUMP(dst);
2941
2876
  }
2942
2877
  }
2943
- # line 2944 "vm.inc"
2878
+ # line 2879 "vm.inc"
2944
2879
  # undef NAME_OF_CURRENT_INSN
2945
2880
 
2946
2881
  /* ### Instruction trailers. ### */
2947
2882
  CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
2948
2883
  CHECK_CANARY(leaf, INSN_ATTR(bin));
2949
2884
  INC_SP(INSN_ATTR(sp_inc));
2950
- if (leaf) ADD_PC(INSN_ATTR(width));
2951
2885
  # undef INSN_ATTR
2952
2886
 
2953
2887
  /* ### Leave the instruction. ### */
@@ -2965,11 +2899,11 @@ INSN_ENTRY(once)
2965
2899
  ISEQ iseq = (ISEQ)GET_OPERAND(1);
2966
2900
  ISE ise = (ISE)GET_OPERAND(2);
2967
2901
  # define INSN_ATTR(x) attr_ ## x ## _once(iseq, ise)
2968
- const bool leaf = INSN_ATTR(leaf);
2902
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
2969
2903
  VALUE val;
2970
2904
 
2971
2905
  /* ### Instruction preambles. ### */
2972
- if (! leaf) ADD_PC(INSN_ATTR(width));
2906
+ ADD_PC(INSN_ATTR(width));
2973
2907
  POPN(INSN_ATTR(popn));
2974
2908
  SETUP_CANARY(leaf);
2975
2909
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
@@ -2982,14 +2916,13 @@ INSN_ENTRY(once)
2982
2916
  {
2983
2917
  val = vm_once_dispatch(ec, iseq, ise);
2984
2918
  }
2985
- # line 2986 "vm.inc"
2919
+ # line 2920 "vm.inc"
2986
2920
  # undef NAME_OF_CURRENT_INSN
2987
2921
 
2988
2922
  /* ### Instruction trailers. ### */
2989
2923
  CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
2990
2924
  CHECK_CANARY(leaf, INSN_ATTR(bin));
2991
2925
  PUSH(val);
2992
- if (leaf) ADD_PC(INSN_ATTR(width));
2993
2926
  # undef INSN_ATTR
2994
2927
 
2995
2928
  /* ### Leave the instruction. ### */
@@ -3007,11 +2940,11 @@ INSN_ENTRY(opt_case_dispatch)
3007
2940
  CDHASH hash = (CDHASH)GET_OPERAND(1);
3008
2941
  OFFSET else_offset = (OFFSET)GET_OPERAND(2);
3009
2942
  # define INSN_ATTR(x) attr_ ## x ## _opt_case_dispatch(hash, else_offset)
3010
- const bool leaf = INSN_ATTR(leaf);
2943
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
3011
2944
  VALUE key = TOPN(0);
3012
2945
 
3013
2946
  /* ### Instruction preambles. ### */
3014
- if (! leaf) ADD_PC(INSN_ATTR(width));
2947
+ ADD_PC(INSN_ATTR(width));
3015
2948
  SETUP_CANARY(leaf);
3016
2949
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
3017
2950
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, hash);
@@ -3027,14 +2960,13 @@ INSN_ENTRY(opt_case_dispatch)
3027
2960
  JUMP(dst);
3028
2961
  }
3029
2962
  }
3030
- # line 3031 "vm.inc"
2963
+ # line 2964 "vm.inc"
3031
2964
  # undef NAME_OF_CURRENT_INSN
3032
2965
 
3033
2966
  /* ### Instruction trailers. ### */
3034
2967
  CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
3035
2968
  CHECK_CANARY(leaf, INSN_ATTR(bin));
3036
2969
  INC_SP(INSN_ATTR(sp_inc));
3037
- if (leaf) ADD_PC(INSN_ATTR(width));
3038
2970
  # undef INSN_ATTR
3039
2971
 
3040
2972
  /* ### Leave the instruction. ### */
@@ -3051,13 +2983,13 @@ INSN_ENTRY(opt_plus)
3051
2983
  /* ### Declare and assign variables. ### */
3052
2984
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3053
2985
  # define INSN_ATTR(x) attr_ ## x ## _opt_plus(cd)
3054
- const bool leaf = INSN_ATTR(leaf);
2986
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
3055
2987
  VALUE recv = TOPN(1);
3056
2988
  VALUE obj = TOPN(0);
3057
2989
  VALUE val;
3058
2990
 
3059
2991
  /* ### Instruction preambles. ### */
3060
- if (! leaf) ADD_PC(INSN_ATTR(width));
2992
+ ADD_PC(INSN_ATTR(width));
3061
2993
  SETUP_CANARY(leaf);
3062
2994
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
3063
2995
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
@@ -3072,7 +3004,7 @@ INSN_ENTRY(opt_plus)
3072
3004
  CALL_SIMPLE_METHOD();
3073
3005
  }
3074
3006
  }
3075
- # line 3076 "vm.inc"
3007
+ # line 3008 "vm.inc"
3076
3008
  # undef NAME_OF_CURRENT_INSN
3077
3009
 
3078
3010
  /* ### Instruction trailers. ### */
@@ -3082,7 +3014,6 @@ INSN_ENTRY(opt_plus)
3082
3014
  TOPN(0) = val;
3083
3015
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
3084
3016
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
3085
- if (leaf) ADD_PC(INSN_ATTR(width));
3086
3017
  # undef INSN_ATTR
3087
3018
 
3088
3019
  /* ### Leave the instruction. ### */
@@ -3099,13 +3030,13 @@ INSN_ENTRY(opt_minus)
3099
3030
  /* ### Declare and assign variables. ### */
3100
3031
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3101
3032
  # define INSN_ATTR(x) attr_ ## x ## _opt_minus(cd)
3102
- const bool leaf = INSN_ATTR(leaf);
3033
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
3103
3034
  VALUE recv = TOPN(1);
3104
3035
  VALUE obj = TOPN(0);
3105
3036
  VALUE val;
3106
3037
 
3107
3038
  /* ### Instruction preambles. ### */
3108
- if (! leaf) ADD_PC(INSN_ATTR(width));
3039
+ ADD_PC(INSN_ATTR(width));
3109
3040
  SETUP_CANARY(leaf);
3110
3041
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
3111
3042
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
@@ -3120,7 +3051,7 @@ INSN_ENTRY(opt_minus)
3120
3051
  CALL_SIMPLE_METHOD();
3121
3052
  }
3122
3053
  }
3123
- # line 3124 "vm.inc"
3054
+ # line 3055 "vm.inc"
3124
3055
  # undef NAME_OF_CURRENT_INSN
3125
3056
 
3126
3057
  /* ### Instruction trailers. ### */
@@ -3130,7 +3061,6 @@ INSN_ENTRY(opt_minus)
3130
3061
  TOPN(0) = val;
3131
3062
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
3132
3063
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
3133
- if (leaf) ADD_PC(INSN_ATTR(width));
3134
3064
  # undef INSN_ATTR
3135
3065
 
3136
3066
  /* ### Leave the instruction. ### */
@@ -3147,13 +3077,13 @@ INSN_ENTRY(opt_mult)
3147
3077
  /* ### Declare and assign variables. ### */
3148
3078
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3149
3079
  # define INSN_ATTR(x) attr_ ## x ## _opt_mult(cd)
3150
- const bool leaf = INSN_ATTR(leaf);
3080
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
3151
3081
  VALUE recv = TOPN(1);
3152
3082
  VALUE obj = TOPN(0);
3153
3083
  VALUE val;
3154
3084
 
3155
3085
  /* ### Instruction preambles. ### */
3156
- if (! leaf) ADD_PC(INSN_ATTR(width));
3086
+ ADD_PC(INSN_ATTR(width));
3157
3087
  SETUP_CANARY(leaf);
3158
3088
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
3159
3089
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
@@ -3168,7 +3098,7 @@ INSN_ENTRY(opt_mult)
3168
3098
  CALL_SIMPLE_METHOD();
3169
3099
  }
3170
3100
  }
3171
- # line 3172 "vm.inc"
3101
+ # line 3102 "vm.inc"
3172
3102
  # undef NAME_OF_CURRENT_INSN
3173
3103
 
3174
3104
  /* ### Instruction trailers. ### */
@@ -3178,7 +3108,6 @@ INSN_ENTRY(opt_mult)
3178
3108
  TOPN(0) = val;
3179
3109
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
3180
3110
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
3181
- if (leaf) ADD_PC(INSN_ATTR(width));
3182
3111
  # undef INSN_ATTR
3183
3112
 
3184
3113
  /* ### Leave the instruction. ### */
@@ -3195,13 +3124,13 @@ INSN_ENTRY(opt_div)
3195
3124
  /* ### Declare and assign variables. ### */
3196
3125
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3197
3126
  # define INSN_ATTR(x) attr_ ## x ## _opt_div(cd)
3198
- const bool leaf = INSN_ATTR(leaf);
3127
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
3199
3128
  VALUE recv = TOPN(1);
3200
3129
  VALUE obj = TOPN(0);
3201
3130
  VALUE val;
3202
3131
 
3203
3132
  /* ### Instruction preambles. ### */
3204
- if (! leaf) ADD_PC(INSN_ATTR(width));
3133
+ ADD_PC(INSN_ATTR(width));
3205
3134
  SETUP_CANARY(leaf);
3206
3135
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
3207
3136
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
@@ -3216,7 +3145,7 @@ INSN_ENTRY(opt_div)
3216
3145
  CALL_SIMPLE_METHOD();
3217
3146
  }
3218
3147
  }
3219
- # line 3220 "vm.inc"
3148
+ # line 3149 "vm.inc"
3220
3149
  # undef NAME_OF_CURRENT_INSN
3221
3150
 
3222
3151
  /* ### Instruction trailers. ### */
@@ -3226,7 +3155,6 @@ INSN_ENTRY(opt_div)
3226
3155
  TOPN(0) = val;
3227
3156
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
3228
3157
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
3229
- if (leaf) ADD_PC(INSN_ATTR(width));
3230
3158
  # undef INSN_ATTR
3231
3159
 
3232
3160
  /* ### Leave the instruction. ### */
@@ -3243,13 +3171,13 @@ INSN_ENTRY(opt_mod)
3243
3171
  /* ### Declare and assign variables. ### */
3244
3172
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3245
3173
  # define INSN_ATTR(x) attr_ ## x ## _opt_mod(cd)
3246
- const bool leaf = INSN_ATTR(leaf);
3174
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
3247
3175
  VALUE recv = TOPN(1);
3248
3176
  VALUE obj = TOPN(0);
3249
3177
  VALUE val;
3250
3178
 
3251
3179
  /* ### Instruction preambles. ### */
3252
- if (! leaf) ADD_PC(INSN_ATTR(width));
3180
+ ADD_PC(INSN_ATTR(width));
3253
3181
  SETUP_CANARY(leaf);
3254
3182
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
3255
3183
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
@@ -3264,7 +3192,7 @@ INSN_ENTRY(opt_mod)
3264
3192
  CALL_SIMPLE_METHOD();
3265
3193
  }
3266
3194
  }
3267
- # line 3268 "vm.inc"
3195
+ # line 3196 "vm.inc"
3268
3196
  # undef NAME_OF_CURRENT_INSN
3269
3197
 
3270
3198
  /* ### Instruction trailers. ### */
@@ -3274,7 +3202,6 @@ INSN_ENTRY(opt_mod)
3274
3202
  TOPN(0) = val;
3275
3203
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
3276
3204
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
3277
- if (leaf) ADD_PC(INSN_ATTR(width));
3278
3205
  # undef INSN_ATTR
3279
3206
 
3280
3207
  /* ### Leave the instruction. ### */
@@ -3291,13 +3218,13 @@ INSN_ENTRY(opt_eq)
3291
3218
  /* ### Declare and assign variables. ### */
3292
3219
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3293
3220
  # define INSN_ATTR(x) attr_ ## x ## _opt_eq(cd)
3294
- const bool leaf = INSN_ATTR(leaf);
3221
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
3295
3222
  VALUE recv = TOPN(1);
3296
3223
  VALUE obj = TOPN(0);
3297
3224
  VALUE val;
3298
3225
 
3299
3226
  /* ### Instruction preambles. ### */
3300
- if (! leaf) ADD_PC(INSN_ATTR(width));
3227
+ ADD_PC(INSN_ATTR(width));
3301
3228
  SETUP_CANARY(leaf);
3302
3229
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
3303
3230
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
@@ -3312,7 +3239,7 @@ INSN_ENTRY(opt_eq)
3312
3239
  CALL_SIMPLE_METHOD();
3313
3240
  }
3314
3241
  }
3315
- # line 3316 "vm.inc"
3242
+ # line 3243 "vm.inc"
3316
3243
  # undef NAME_OF_CURRENT_INSN
3317
3244
 
3318
3245
  /* ### Instruction trailers. ### */
@@ -3322,7 +3249,6 @@ INSN_ENTRY(opt_eq)
3322
3249
  TOPN(0) = val;
3323
3250
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
3324
3251
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
3325
- if (leaf) ADD_PC(INSN_ATTR(width));
3326
3252
  # undef INSN_ATTR
3327
3253
 
3328
3254
  /* ### Leave the instruction. ### */
@@ -3340,13 +3266,13 @@ INSN_ENTRY(opt_neq)
3340
3266
  CALL_DATA cd_eq = (CALL_DATA)GET_OPERAND(1);
3341
3267
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(2);
3342
3268
  # define INSN_ATTR(x) attr_ ## x ## _opt_neq(cd_eq, cd)
3343
- const bool leaf = INSN_ATTR(leaf);
3269
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
3344
3270
  VALUE recv = TOPN(1);
3345
3271
  VALUE obj = TOPN(0);
3346
3272
  VALUE val;
3347
3273
 
3348
3274
  /* ### Instruction preambles. ### */
3349
- if (! leaf) ADD_PC(INSN_ATTR(width));
3275
+ ADD_PC(INSN_ATTR(width));
3350
3276
  SETUP_CANARY(leaf);
3351
3277
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
3352
3278
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd_eq);
@@ -3362,7 +3288,7 @@ INSN_ENTRY(opt_neq)
3362
3288
  CALL_SIMPLE_METHOD();
3363
3289
  }
3364
3290
  }
3365
- # line 3366 "vm.inc"
3291
+ # line 3292 "vm.inc"
3366
3292
  # undef NAME_OF_CURRENT_INSN
3367
3293
 
3368
3294
  /* ### Instruction trailers. ### */
@@ -3372,7 +3298,6 @@ INSN_ENTRY(opt_neq)
3372
3298
  TOPN(0) = val;
3373
3299
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
3374
3300
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
3375
- if (leaf) ADD_PC(INSN_ATTR(width));
3376
3301
  # undef INSN_ATTR
3377
3302
 
3378
3303
  /* ### Leave the instruction. ### */
@@ -3389,13 +3314,13 @@ INSN_ENTRY(opt_lt)
3389
3314
  /* ### Declare and assign variables. ### */
3390
3315
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3391
3316
  # define INSN_ATTR(x) attr_ ## x ## _opt_lt(cd)
3392
- const bool leaf = INSN_ATTR(leaf);
3317
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
3393
3318
  VALUE recv = TOPN(1);
3394
3319
  VALUE obj = TOPN(0);
3395
3320
  VALUE val;
3396
3321
 
3397
3322
  /* ### Instruction preambles. ### */
3398
- if (! leaf) ADD_PC(INSN_ATTR(width));
3323
+ ADD_PC(INSN_ATTR(width));
3399
3324
  SETUP_CANARY(leaf);
3400
3325
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
3401
3326
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
@@ -3410,7 +3335,7 @@ INSN_ENTRY(opt_lt)
3410
3335
  CALL_SIMPLE_METHOD();
3411
3336
  }
3412
3337
  }
3413
- # line 3414 "vm.inc"
3338
+ # line 3339 "vm.inc"
3414
3339
  # undef NAME_OF_CURRENT_INSN
3415
3340
 
3416
3341
  /* ### Instruction trailers. ### */
@@ -3420,7 +3345,6 @@ INSN_ENTRY(opt_lt)
3420
3345
  TOPN(0) = val;
3421
3346
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
3422
3347
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
3423
- if (leaf) ADD_PC(INSN_ATTR(width));
3424
3348
  # undef INSN_ATTR
3425
3349
 
3426
3350
  /* ### Leave the instruction. ### */
@@ -3437,13 +3361,13 @@ INSN_ENTRY(opt_le)
3437
3361
  /* ### Declare and assign variables. ### */
3438
3362
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3439
3363
  # define INSN_ATTR(x) attr_ ## x ## _opt_le(cd)
3440
- const bool leaf = INSN_ATTR(leaf);
3364
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
3441
3365
  VALUE recv = TOPN(1);
3442
3366
  VALUE obj = TOPN(0);
3443
3367
  VALUE val;
3444
3368
 
3445
3369
  /* ### Instruction preambles. ### */
3446
- if (! leaf) ADD_PC(INSN_ATTR(width));
3370
+ ADD_PC(INSN_ATTR(width));
3447
3371
  SETUP_CANARY(leaf);
3448
3372
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
3449
3373
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
@@ -3458,7 +3382,7 @@ INSN_ENTRY(opt_le)
3458
3382
  CALL_SIMPLE_METHOD();
3459
3383
  }
3460
3384
  }
3461
- # line 3462 "vm.inc"
3385
+ # line 3386 "vm.inc"
3462
3386
  # undef NAME_OF_CURRENT_INSN
3463
3387
 
3464
3388
  /* ### Instruction trailers. ### */
@@ -3468,7 +3392,6 @@ INSN_ENTRY(opt_le)
3468
3392
  TOPN(0) = val;
3469
3393
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
3470
3394
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
3471
- if (leaf) ADD_PC(INSN_ATTR(width));
3472
3395
  # undef INSN_ATTR
3473
3396
 
3474
3397
  /* ### Leave the instruction. ### */
@@ -3485,13 +3408,13 @@ INSN_ENTRY(opt_gt)
3485
3408
  /* ### Declare and assign variables. ### */
3486
3409
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3487
3410
  # define INSN_ATTR(x) attr_ ## x ## _opt_gt(cd)
3488
- const bool leaf = INSN_ATTR(leaf);
3411
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
3489
3412
  VALUE recv = TOPN(1);
3490
3413
  VALUE obj = TOPN(0);
3491
3414
  VALUE val;
3492
3415
 
3493
3416
  /* ### Instruction preambles. ### */
3494
- if (! leaf) ADD_PC(INSN_ATTR(width));
3417
+ ADD_PC(INSN_ATTR(width));
3495
3418
  SETUP_CANARY(leaf);
3496
3419
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
3497
3420
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
@@ -3506,7 +3429,7 @@ INSN_ENTRY(opt_gt)
3506
3429
  CALL_SIMPLE_METHOD();
3507
3430
  }
3508
3431
  }
3509
- # line 3510 "vm.inc"
3432
+ # line 3433 "vm.inc"
3510
3433
  # undef NAME_OF_CURRENT_INSN
3511
3434
 
3512
3435
  /* ### Instruction trailers. ### */
@@ -3516,7 +3439,6 @@ INSN_ENTRY(opt_gt)
3516
3439
  TOPN(0) = val;
3517
3440
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
3518
3441
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
3519
- if (leaf) ADD_PC(INSN_ATTR(width));
3520
3442
  # undef INSN_ATTR
3521
3443
 
3522
3444
  /* ### Leave the instruction. ### */
@@ -3533,13 +3455,13 @@ INSN_ENTRY(opt_ge)
3533
3455
  /* ### Declare and assign variables. ### */
3534
3456
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3535
3457
  # define INSN_ATTR(x) attr_ ## x ## _opt_ge(cd)
3536
- const bool leaf = INSN_ATTR(leaf);
3458
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
3537
3459
  VALUE recv = TOPN(1);
3538
3460
  VALUE obj = TOPN(0);
3539
3461
  VALUE val;
3540
3462
 
3541
3463
  /* ### Instruction preambles. ### */
3542
- if (! leaf) ADD_PC(INSN_ATTR(width));
3464
+ ADD_PC(INSN_ATTR(width));
3543
3465
  SETUP_CANARY(leaf);
3544
3466
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
3545
3467
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
@@ -3554,7 +3476,7 @@ INSN_ENTRY(opt_ge)
3554
3476
  CALL_SIMPLE_METHOD();
3555
3477
  }
3556
3478
  }
3557
- # line 3558 "vm.inc"
3479
+ # line 3480 "vm.inc"
3558
3480
  # undef NAME_OF_CURRENT_INSN
3559
3481
 
3560
3482
  /* ### Instruction trailers. ### */
@@ -3564,7 +3486,6 @@ INSN_ENTRY(opt_ge)
3564
3486
  TOPN(0) = val;
3565
3487
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
3566
3488
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
3567
- if (leaf) ADD_PC(INSN_ATTR(width));
3568
3489
  # undef INSN_ATTR
3569
3490
 
3570
3491
  /* ### Leave the instruction. ### */
@@ -3581,13 +3502,13 @@ INSN_ENTRY(opt_ltlt)
3581
3502
  /* ### Declare and assign variables. ### */
3582
3503
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3583
3504
  # define INSN_ATTR(x) attr_ ## x ## _opt_ltlt(cd)
3584
- const bool leaf = INSN_ATTR(leaf);
3505
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
3585
3506
  VALUE recv = TOPN(1);
3586
3507
  VALUE obj = TOPN(0);
3587
3508
  VALUE val;
3588
3509
 
3589
3510
  /* ### Instruction preambles. ### */
3590
- if (! leaf) ADD_PC(INSN_ATTR(width));
3511
+ ADD_PC(INSN_ATTR(width));
3591
3512
  SETUP_CANARY(leaf);
3592
3513
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
3593
3514
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
@@ -3602,7 +3523,7 @@ INSN_ENTRY(opt_ltlt)
3602
3523
  CALL_SIMPLE_METHOD();
3603
3524
  }
3604
3525
  }
3605
- # line 3606 "vm.inc"
3526
+ # line 3527 "vm.inc"
3606
3527
  # undef NAME_OF_CURRENT_INSN
3607
3528
 
3608
3529
  /* ### Instruction trailers. ### */
@@ -3612,7 +3533,6 @@ INSN_ENTRY(opt_ltlt)
3612
3533
  TOPN(0) = val;
3613
3534
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
3614
3535
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
3615
- if (leaf) ADD_PC(INSN_ATTR(width));
3616
3536
  # undef INSN_ATTR
3617
3537
 
3618
3538
  /* ### Leave the instruction. ### */
@@ -3629,13 +3549,13 @@ INSN_ENTRY(opt_and)
3629
3549
  /* ### Declare and assign variables. ### */
3630
3550
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3631
3551
  # define INSN_ATTR(x) attr_ ## x ## _opt_and(cd)
3632
- const bool leaf = INSN_ATTR(leaf);
3552
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
3633
3553
  VALUE recv = TOPN(1);
3634
3554
  VALUE obj = TOPN(0);
3635
3555
  VALUE val;
3636
3556
 
3637
3557
  /* ### Instruction preambles. ### */
3638
- if (! leaf) ADD_PC(INSN_ATTR(width));
3558
+ ADD_PC(INSN_ATTR(width));
3639
3559
  SETUP_CANARY(leaf);
3640
3560
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
3641
3561
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
@@ -3650,7 +3570,7 @@ INSN_ENTRY(opt_and)
3650
3570
  CALL_SIMPLE_METHOD();
3651
3571
  }
3652
3572
  }
3653
- # line 3654 "vm.inc"
3573
+ # line 3574 "vm.inc"
3654
3574
  # undef NAME_OF_CURRENT_INSN
3655
3575
 
3656
3576
  /* ### Instruction trailers. ### */
@@ -3660,7 +3580,6 @@ INSN_ENTRY(opt_and)
3660
3580
  TOPN(0) = val;
3661
3581
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
3662
3582
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
3663
- if (leaf) ADD_PC(INSN_ATTR(width));
3664
3583
  # undef INSN_ATTR
3665
3584
 
3666
3585
  /* ### Leave the instruction. ### */
@@ -3677,13 +3596,13 @@ INSN_ENTRY(opt_or)
3677
3596
  /* ### Declare and assign variables. ### */
3678
3597
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3679
3598
  # define INSN_ATTR(x) attr_ ## x ## _opt_or(cd)
3680
- const bool leaf = INSN_ATTR(leaf);
3599
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
3681
3600
  VALUE recv = TOPN(1);
3682
3601
  VALUE obj = TOPN(0);
3683
3602
  VALUE val;
3684
3603
 
3685
3604
  /* ### Instruction preambles. ### */
3686
- if (! leaf) ADD_PC(INSN_ATTR(width));
3605
+ ADD_PC(INSN_ATTR(width));
3687
3606
  SETUP_CANARY(leaf);
3688
3607
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
3689
3608
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
@@ -3698,7 +3617,7 @@ INSN_ENTRY(opt_or)
3698
3617
  CALL_SIMPLE_METHOD();
3699
3618
  }
3700
3619
  }
3701
- # line 3702 "vm.inc"
3620
+ # line 3621 "vm.inc"
3702
3621
  # undef NAME_OF_CURRENT_INSN
3703
3622
 
3704
3623
  /* ### Instruction trailers. ### */
@@ -3708,7 +3627,6 @@ INSN_ENTRY(opt_or)
3708
3627
  TOPN(0) = val;
3709
3628
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
3710
3629
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
3711
- if (leaf) ADD_PC(INSN_ATTR(width));
3712
3630
  # undef INSN_ATTR
3713
3631
 
3714
3632
  /* ### Leave the instruction. ### */
@@ -3725,13 +3643,13 @@ INSN_ENTRY(opt_aref)
3725
3643
  /* ### Declare and assign variables. ### */
3726
3644
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3727
3645
  # define INSN_ATTR(x) attr_ ## x ## _opt_aref(cd)
3728
- const bool leaf = INSN_ATTR(leaf);
3646
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
3729
3647
  VALUE recv = TOPN(1);
3730
3648
  VALUE obj = TOPN(0);
3731
3649
  VALUE val;
3732
3650
 
3733
3651
  /* ### Instruction preambles. ### */
3734
- if (! leaf) ADD_PC(INSN_ATTR(width));
3652
+ ADD_PC(INSN_ATTR(width));
3735
3653
  SETUP_CANARY(leaf);
3736
3654
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
3737
3655
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
@@ -3746,7 +3664,7 @@ INSN_ENTRY(opt_aref)
3746
3664
  CALL_SIMPLE_METHOD();
3747
3665
  }
3748
3666
  }
3749
- # line 3750 "vm.inc"
3667
+ # line 3668 "vm.inc"
3750
3668
  # undef NAME_OF_CURRENT_INSN
3751
3669
 
3752
3670
  /* ### Instruction trailers. ### */
@@ -3756,7 +3674,6 @@ INSN_ENTRY(opt_aref)
3756
3674
  TOPN(0) = val;
3757
3675
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
3758
3676
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
3759
- if (leaf) ADD_PC(INSN_ATTR(width));
3760
3677
  # undef INSN_ATTR
3761
3678
 
3762
3679
  /* ### Leave the instruction. ### */
@@ -3773,14 +3690,14 @@ INSN_ENTRY(opt_aset)
3773
3690
  /* ### Declare and assign variables. ### */
3774
3691
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3775
3692
  # define INSN_ATTR(x) attr_ ## x ## _opt_aset(cd)
3776
- const bool leaf = INSN_ATTR(leaf);
3693
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
3777
3694
  VALUE recv = TOPN(2);
3778
3695
  VALUE obj = TOPN(1);
3779
3696
  VALUE set = TOPN(0);
3780
3697
  VALUE val;
3781
3698
 
3782
3699
  /* ### Instruction preambles. ### */
3783
- if (! leaf) ADD_PC(INSN_ATTR(width));
3700
+ ADD_PC(INSN_ATTR(width));
3784
3701
  SETUP_CANARY(leaf);
3785
3702
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
3786
3703
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
@@ -3795,7 +3712,7 @@ INSN_ENTRY(opt_aset)
3795
3712
  CALL_SIMPLE_METHOD();
3796
3713
  }
3797
3714
  }
3798
- # line 3799 "vm.inc"
3715
+ # line 3716 "vm.inc"
3799
3716
  # undef NAME_OF_CURRENT_INSN
3800
3717
 
3801
3718
  /* ### Instruction trailers. ### */
@@ -3805,7 +3722,6 @@ INSN_ENTRY(opt_aset)
3805
3722
  TOPN(0) = val;
3806
3723
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
3807
3724
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
3808
- if (leaf) ADD_PC(INSN_ATTR(width));
3809
3725
  # undef INSN_ATTR
3810
3726
 
3811
3727
  /* ### Leave the instruction. ### */
@@ -3823,12 +3739,12 @@ INSN_ENTRY(opt_aset_with)
3823
3739
  VALUE key = (VALUE)GET_OPERAND(1);
3824
3740
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(2);
3825
3741
  # define INSN_ATTR(x) attr_ ## x ## _opt_aset_with(key, cd)
3826
- const bool leaf = INSN_ATTR(leaf);
3742
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
3827
3743
  VALUE recv = TOPN(1);
3828
3744
  VALUE val = TOPN(0);
3829
3745
 
3830
3746
  /* ### Instruction preambles. ### */
3831
- if (! leaf) ADD_PC(INSN_ATTR(width));
3747
+ ADD_PC(INSN_ATTR(width));
3832
3748
  SETUP_CANARY(leaf);
3833
3749
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
3834
3750
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, key);
@@ -3849,7 +3765,7 @@ INSN_ENTRY(opt_aset_with)
3849
3765
  CALL_SIMPLE_METHOD();
3850
3766
  }
3851
3767
  }
3852
- # line 3853 "vm.inc"
3768
+ # line 3769 "vm.inc"
3853
3769
  # undef NAME_OF_CURRENT_INSN
3854
3770
 
3855
3771
  /* ### Instruction trailers. ### */
@@ -3859,7 +3775,6 @@ INSN_ENTRY(opt_aset_with)
3859
3775
  TOPN(0) = val;
3860
3776
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
3861
3777
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
3862
- if (leaf) ADD_PC(INSN_ATTR(width));
3863
3778
  # undef INSN_ATTR
3864
3779
 
3865
3780
  /* ### Leave the instruction. ### */
@@ -3877,12 +3792,12 @@ INSN_ENTRY(opt_aref_with)
3877
3792
  VALUE key = (VALUE)GET_OPERAND(1);
3878
3793
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(2);
3879
3794
  # define INSN_ATTR(x) attr_ ## x ## _opt_aref_with(key, cd)
3880
- const bool leaf = INSN_ATTR(leaf);
3795
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
3881
3796
  VALUE recv = TOPN(0);
3882
3797
  VALUE val;
3883
3798
 
3884
3799
  /* ### Instruction preambles. ### */
3885
- if (! leaf) ADD_PC(INSN_ATTR(width));
3800
+ ADD_PC(INSN_ATTR(width));
3886
3801
  SETUP_CANARY(leaf);
3887
3802
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
3888
3803
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, key);
@@ -3899,7 +3814,7 @@ INSN_ENTRY(opt_aref_with)
3899
3814
  CALL_SIMPLE_METHOD();
3900
3815
  }
3901
3816
  }
3902
- # line 3903 "vm.inc"
3817
+ # line 3818 "vm.inc"
3903
3818
  # undef NAME_OF_CURRENT_INSN
3904
3819
 
3905
3820
  /* ### Instruction trailers. ### */
@@ -3909,7 +3824,6 @@ INSN_ENTRY(opt_aref_with)
3909
3824
  TOPN(0) = val;
3910
3825
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
3911
3826
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
3912
- if (leaf) ADD_PC(INSN_ATTR(width));
3913
3827
  # undef INSN_ATTR
3914
3828
 
3915
3829
  /* ### Leave the instruction. ### */
@@ -3926,12 +3840,12 @@ INSN_ENTRY(opt_length)
3926
3840
  /* ### Declare and assign variables. ### */
3927
3841
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3928
3842
  # define INSN_ATTR(x) attr_ ## x ## _opt_length(cd)
3929
- const bool leaf = INSN_ATTR(leaf);
3843
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
3930
3844
  VALUE recv = TOPN(0);
3931
3845
  VALUE val;
3932
3846
 
3933
3847
  /* ### Instruction preambles. ### */
3934
- if (! leaf) ADD_PC(INSN_ATTR(width));
3848
+ ADD_PC(INSN_ATTR(width));
3935
3849
  SETUP_CANARY(leaf);
3936
3850
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
3937
3851
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
@@ -3946,7 +3860,7 @@ INSN_ENTRY(opt_length)
3946
3860
  CALL_SIMPLE_METHOD();
3947
3861
  }
3948
3862
  }
3949
- # line 3950 "vm.inc"
3863
+ # line 3864 "vm.inc"
3950
3864
  # undef NAME_OF_CURRENT_INSN
3951
3865
 
3952
3866
  /* ### Instruction trailers. ### */
@@ -3956,7 +3870,6 @@ INSN_ENTRY(opt_length)
3956
3870
  TOPN(0) = val;
3957
3871
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
3958
3872
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
3959
- if (leaf) ADD_PC(INSN_ATTR(width));
3960
3873
  # undef INSN_ATTR
3961
3874
 
3962
3875
  /* ### Leave the instruction. ### */
@@ -3973,12 +3886,12 @@ INSN_ENTRY(opt_size)
3973
3886
  /* ### Declare and assign variables. ### */
3974
3887
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3975
3888
  # define INSN_ATTR(x) attr_ ## x ## _opt_size(cd)
3976
- const bool leaf = INSN_ATTR(leaf);
3889
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
3977
3890
  VALUE recv = TOPN(0);
3978
3891
  VALUE val;
3979
3892
 
3980
3893
  /* ### Instruction preambles. ### */
3981
- if (! leaf) ADD_PC(INSN_ATTR(width));
3894
+ ADD_PC(INSN_ATTR(width));
3982
3895
  SETUP_CANARY(leaf);
3983
3896
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
3984
3897
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
@@ -3993,7 +3906,7 @@ INSN_ENTRY(opt_size)
3993
3906
  CALL_SIMPLE_METHOD();
3994
3907
  }
3995
3908
  }
3996
- # line 3997 "vm.inc"
3909
+ # line 3910 "vm.inc"
3997
3910
  # undef NAME_OF_CURRENT_INSN
3998
3911
 
3999
3912
  /* ### Instruction trailers. ### */
@@ -4003,7 +3916,6 @@ INSN_ENTRY(opt_size)
4003
3916
  TOPN(0) = val;
4004
3917
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
4005
3918
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
4006
- if (leaf) ADD_PC(INSN_ATTR(width));
4007
3919
  # undef INSN_ATTR
4008
3920
 
4009
3921
  /* ### Leave the instruction. ### */
@@ -4020,12 +3932,12 @@ INSN_ENTRY(opt_empty_p)
4020
3932
  /* ### Declare and assign variables. ### */
4021
3933
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
4022
3934
  # define INSN_ATTR(x) attr_ ## x ## _opt_empty_p(cd)
4023
- const bool leaf = INSN_ATTR(leaf);
3935
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
4024
3936
  VALUE recv = TOPN(0);
4025
3937
  VALUE val;
4026
3938
 
4027
3939
  /* ### Instruction preambles. ### */
4028
- if (! leaf) ADD_PC(INSN_ATTR(width));
3940
+ ADD_PC(INSN_ATTR(width));
4029
3941
  SETUP_CANARY(leaf);
4030
3942
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
4031
3943
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
@@ -4040,7 +3952,7 @@ INSN_ENTRY(opt_empty_p)
4040
3952
  CALL_SIMPLE_METHOD();
4041
3953
  }
4042
3954
  }
4043
- # line 4044 "vm.inc"
3955
+ # line 3956 "vm.inc"
4044
3956
  # undef NAME_OF_CURRENT_INSN
4045
3957
 
4046
3958
  /* ### Instruction trailers. ### */
@@ -4050,7 +3962,6 @@ INSN_ENTRY(opt_empty_p)
4050
3962
  TOPN(0) = val;
4051
3963
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
4052
3964
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
4053
- if (leaf) ADD_PC(INSN_ATTR(width));
4054
3965
  # undef INSN_ATTR
4055
3966
 
4056
3967
  /* ### Leave the instruction. ### */
@@ -4067,12 +3978,12 @@ INSN_ENTRY(opt_succ)
4067
3978
  /* ### Declare and assign variables. ### */
4068
3979
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
4069
3980
  # define INSN_ATTR(x) attr_ ## x ## _opt_succ(cd)
4070
- const bool leaf = INSN_ATTR(leaf);
3981
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
4071
3982
  VALUE recv = TOPN(0);
4072
3983
  VALUE val;
4073
3984
 
4074
3985
  /* ### Instruction preambles. ### */
4075
- if (! leaf) ADD_PC(INSN_ATTR(width));
3986
+ ADD_PC(INSN_ATTR(width));
4076
3987
  SETUP_CANARY(leaf);
4077
3988
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
4078
3989
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
@@ -4087,7 +3998,7 @@ INSN_ENTRY(opt_succ)
4087
3998
  CALL_SIMPLE_METHOD();
4088
3999
  }
4089
4000
  }
4090
- # line 4091 "vm.inc"
4001
+ # line 4002 "vm.inc"
4091
4002
  # undef NAME_OF_CURRENT_INSN
4092
4003
 
4093
4004
  /* ### Instruction trailers. ### */
@@ -4097,7 +4008,6 @@ INSN_ENTRY(opt_succ)
4097
4008
  TOPN(0) = val;
4098
4009
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
4099
4010
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
4100
- if (leaf) ADD_PC(INSN_ATTR(width));
4101
4011
  # undef INSN_ATTR
4102
4012
 
4103
4013
  /* ### Leave the instruction. ### */
@@ -4114,12 +4024,12 @@ INSN_ENTRY(opt_not)
4114
4024
  /* ### Declare and assign variables. ### */
4115
4025
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
4116
4026
  # define INSN_ATTR(x) attr_ ## x ## _opt_not(cd)
4117
- const bool leaf = INSN_ATTR(leaf);
4027
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
4118
4028
  VALUE recv = TOPN(0);
4119
4029
  VALUE val;
4120
4030
 
4121
4031
  /* ### Instruction preambles. ### */
4122
- if (! leaf) ADD_PC(INSN_ATTR(width));
4032
+ ADD_PC(INSN_ATTR(width));
4123
4033
  SETUP_CANARY(leaf);
4124
4034
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
4125
4035
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
@@ -4134,7 +4044,7 @@ INSN_ENTRY(opt_not)
4134
4044
  CALL_SIMPLE_METHOD();
4135
4045
  }
4136
4046
  }
4137
- # line 4138 "vm.inc"
4047
+ # line 4048 "vm.inc"
4138
4048
  # undef NAME_OF_CURRENT_INSN
4139
4049
 
4140
4050
  /* ### Instruction trailers. ### */
@@ -4144,7 +4054,6 @@ INSN_ENTRY(opt_not)
4144
4054
  TOPN(0) = val;
4145
4055
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
4146
4056
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
4147
- if (leaf) ADD_PC(INSN_ATTR(width));
4148
4057
  # undef INSN_ATTR
4149
4058
 
4150
4059
  /* ### Leave the instruction. ### */
@@ -4161,13 +4070,13 @@ INSN_ENTRY(opt_regexpmatch2)
4161
4070
  /* ### Declare and assign variables. ### */
4162
4071
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
4163
4072
  # define INSN_ATTR(x) attr_ ## x ## _opt_regexpmatch2(cd)
4164
- const bool leaf = INSN_ATTR(leaf);
4073
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
4165
4074
  VALUE obj2 = TOPN(1);
4166
4075
  VALUE obj1 = TOPN(0);
4167
4076
  VALUE val;
4168
4077
 
4169
4078
  /* ### Instruction preambles. ### */
4170
- if (! leaf) ADD_PC(INSN_ATTR(width));
4079
+ ADD_PC(INSN_ATTR(width));
4171
4080
  SETUP_CANARY(leaf);
4172
4081
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
4173
4082
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
@@ -4182,7 +4091,7 @@ INSN_ENTRY(opt_regexpmatch2)
4182
4091
  CALL_SIMPLE_METHOD();
4183
4092
  }
4184
4093
  }
4185
- # line 4186 "vm.inc"
4094
+ # line 4095 "vm.inc"
4186
4095
  # undef NAME_OF_CURRENT_INSN
4187
4096
 
4188
4097
  /* ### Instruction trailers. ### */
@@ -4192,7 +4101,6 @@ INSN_ENTRY(opt_regexpmatch2)
4192
4101
  TOPN(0) = val;
4193
4102
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
4194
4103
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
4195
- if (leaf) ADD_PC(INSN_ATTR(width));
4196
4104
  # undef INSN_ATTR
4197
4105
 
4198
4106
  /* ### Leave the instruction. ### */
@@ -4209,11 +4117,11 @@ INSN_ENTRY(invokebuiltin)
4209
4117
  /* ### Declare and assign variables. ### */
4210
4118
  RB_BUILTIN bf = (RB_BUILTIN)GET_OPERAND(1);
4211
4119
  # define INSN_ATTR(x) attr_ ## x ## _invokebuiltin(bf)
4212
- const bool leaf = INSN_ATTR(leaf);
4120
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
4213
4121
  VALUE val;
4214
4122
 
4215
4123
  /* ### Instruction preambles. ### */
4216
- if (! leaf) ADD_PC(INSN_ATTR(width));
4124
+ ADD_PC(INSN_ATTR(width));
4217
4125
  SETUP_CANARY(leaf);
4218
4126
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
4219
4127
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, bf);
@@ -4224,7 +4132,7 @@ INSN_ENTRY(invokebuiltin)
4224
4132
  {
4225
4133
  val = vm_invoke_builtin(ec, reg_cfp, bf, STACK_ADDR_FROM_TOP(bf->argc));
4226
4134
  }
4227
- # line 4228 "vm.inc"
4135
+ # line 4136 "vm.inc"
4228
4136
  # undef NAME_OF_CURRENT_INSN
4229
4137
 
4230
4138
  /* ### Instruction trailers. ### */
@@ -4234,7 +4142,6 @@ INSN_ENTRY(invokebuiltin)
4234
4142
  TOPN(0) = val;
4235
4143
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
4236
4144
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
4237
- if (leaf) ADD_PC(INSN_ATTR(width));
4238
4145
  # undef INSN_ATTR
4239
4146
 
4240
4147
  /* ### Leave the instruction. ### */
@@ -4252,11 +4159,11 @@ INSN_ENTRY(opt_invokebuiltin_delegate)
4252
4159
  RB_BUILTIN bf = (RB_BUILTIN)GET_OPERAND(1);
4253
4160
  rb_num_t index = (rb_num_t)GET_OPERAND(2);
4254
4161
  # define INSN_ATTR(x) attr_ ## x ## _opt_invokebuiltin_delegate(bf, index)
4255
- const bool leaf = INSN_ATTR(leaf);
4162
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
4256
4163
  VALUE val;
4257
4164
 
4258
4165
  /* ### Instruction preambles. ### */
4259
- if (! leaf) ADD_PC(INSN_ATTR(width));
4166
+ ADD_PC(INSN_ATTR(width));
4260
4167
  SETUP_CANARY(leaf);
4261
4168
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
4262
4169
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, bf);
@@ -4268,7 +4175,7 @@ INSN_ENTRY(opt_invokebuiltin_delegate)
4268
4175
  {
4269
4176
  val = vm_invoke_builtin_delegate(ec, reg_cfp, bf, (unsigned int)index);
4270
4177
  }
4271
- # line 4272 "vm.inc"
4178
+ # line 4179 "vm.inc"
4272
4179
  # undef NAME_OF_CURRENT_INSN
4273
4180
 
4274
4181
  /* ### Instruction trailers. ### */
@@ -4278,7 +4185,6 @@ INSN_ENTRY(opt_invokebuiltin_delegate)
4278
4185
  TOPN(0) = val;
4279
4186
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
4280
4187
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
4281
- if (leaf) ADD_PC(INSN_ATTR(width));
4282
4188
  # undef INSN_ATTR
4283
4189
 
4284
4190
  /* ### Leave the instruction. ### */
@@ -4296,11 +4202,11 @@ INSN_ENTRY(opt_invokebuiltin_delegate_leave)
4296
4202
  RB_BUILTIN bf = (RB_BUILTIN)GET_OPERAND(1);
4297
4203
  rb_num_t index = (rb_num_t)GET_OPERAND(2);
4298
4204
  # define INSN_ATTR(x) attr_ ## x ## _opt_invokebuiltin_delegate_leave(bf, index)
4299
- const bool leaf = INSN_ATTR(leaf);
4205
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
4300
4206
  VALUE val;
4301
4207
 
4302
4208
  /* ### Instruction preambles. ### */
4303
- if (! leaf) ADD_PC(INSN_ATTR(width));
4209
+ ADD_PC(INSN_ATTR(width));
4304
4210
  SETUP_CANARY(leaf);
4305
4211
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
4306
4212
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, bf);
@@ -4326,7 +4232,7 @@ INSN_ENTRY(opt_invokebuiltin_delegate_leave)
4326
4232
  RESTORE_REGS();
4327
4233
  }
4328
4234
  }
4329
- # line 4330 "vm.inc"
4235
+ # line 4236 "vm.inc"
4330
4236
  # undef NAME_OF_CURRENT_INSN
4331
4237
 
4332
4238
  /* ### Instruction trailers. ### */
@@ -4336,7 +4242,6 @@ INSN_ENTRY(opt_invokebuiltin_delegate_leave)
4336
4242
  TOPN(0) = val;
4337
4243
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
4338
4244
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
4339
- if (leaf) ADD_PC(INSN_ATTR(width));
4340
4245
  # undef INSN_ATTR
4341
4246
 
4342
4247
  /* ### Leave the instruction. ### */
@@ -4353,14 +4258,14 @@ INSN_ENTRY(getlocal_WC_0)
4353
4258
  /* ### Declare and assign variables. ### */
4354
4259
  #line 10 "defs/opt_operand.def"
4355
4260
  const rb_num_t level = 0;
4356
- #line 4357 "vm.inc"
4261
+ #line 4262 "vm.inc"
4357
4262
  lindex_t idx = (lindex_t)GET_OPERAND(1);
4358
4263
  # define INSN_ATTR(x) attr_ ## x ## _getlocal_WC_0(idx)
4359
- const bool leaf = INSN_ATTR(leaf);
4264
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
4360
4265
  VALUE val;
4361
4266
 
4362
4267
  /* ### Instruction preambles. ### */
4363
- if (! leaf) ADD_PC(INSN_ATTR(width));
4268
+ ADD_PC(INSN_ATTR(width));
4364
4269
  SETUP_CANARY(leaf);
4365
4270
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
4366
4271
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, idx);
@@ -4373,7 +4278,7 @@ INSN_ENTRY(getlocal_WC_0)
4373
4278
  RB_DEBUG_COUNTER_INC(lvar_get);
4374
4279
  (void)RB_DEBUG_COUNTER_INC_IF(lvar_get_dynamic, level > 0);
4375
4280
  }
4376
- # line 4377 "vm.inc"
4281
+ # line 4282 "vm.inc"
4377
4282
  # undef NAME_OF_CURRENT_INSN
4378
4283
 
4379
4284
  /* ### Instruction trailers. ### */
@@ -4383,7 +4288,6 @@ INSN_ENTRY(getlocal_WC_0)
4383
4288
  TOPN(0) = val;
4384
4289
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
4385
4290
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
4386
- if (leaf) ADD_PC(INSN_ATTR(width));
4387
4291
  # undef INSN_ATTR
4388
4292
 
4389
4293
  /* ### Leave the instruction. ### */
@@ -4400,14 +4304,14 @@ INSN_ENTRY(getlocal_WC_1)
4400
4304
  /* ### Declare and assign variables. ### */
4401
4305
  #line 11 "defs/opt_operand.def"
4402
4306
  const rb_num_t level = 1;
4403
- #line 4404 "vm.inc"
4307
+ #line 4308 "vm.inc"
4404
4308
  lindex_t idx = (lindex_t)GET_OPERAND(1);
4405
4309
  # define INSN_ATTR(x) attr_ ## x ## _getlocal_WC_1(idx)
4406
- const bool leaf = INSN_ATTR(leaf);
4310
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
4407
4311
  VALUE val;
4408
4312
 
4409
4313
  /* ### Instruction preambles. ### */
4410
- if (! leaf) ADD_PC(INSN_ATTR(width));
4314
+ ADD_PC(INSN_ATTR(width));
4411
4315
  SETUP_CANARY(leaf);
4412
4316
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
4413
4317
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, idx);
@@ -4420,7 +4324,7 @@ INSN_ENTRY(getlocal_WC_1)
4420
4324
  RB_DEBUG_COUNTER_INC(lvar_get);
4421
4325
  (void)RB_DEBUG_COUNTER_INC_IF(lvar_get_dynamic, level > 0);
4422
4326
  }
4423
- # line 4424 "vm.inc"
4327
+ # line 4328 "vm.inc"
4424
4328
  # undef NAME_OF_CURRENT_INSN
4425
4329
 
4426
4330
  /* ### Instruction trailers. ### */
@@ -4430,7 +4334,6 @@ INSN_ENTRY(getlocal_WC_1)
4430
4334
  TOPN(0) = val;
4431
4335
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
4432
4336
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
4433
- if (leaf) ADD_PC(INSN_ATTR(width));
4434
4337
  # undef INSN_ATTR
4435
4338
 
4436
4339
  /* ### Leave the instruction. ### */
@@ -4447,14 +4350,14 @@ INSN_ENTRY(setlocal_WC_0)
4447
4350
  /* ### Declare and assign variables. ### */
4448
4351
  #line 12 "defs/opt_operand.def"
4449
4352
  const rb_num_t level = 0;
4450
- #line 4451 "vm.inc"
4353
+ #line 4354 "vm.inc"
4451
4354
  lindex_t idx = (lindex_t)GET_OPERAND(1);
4452
4355
  # define INSN_ATTR(x) attr_ ## x ## _setlocal_WC_0(idx)
4453
- const bool leaf = INSN_ATTR(leaf);
4356
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
4454
4357
  VALUE val = TOPN(0);
4455
4358
 
4456
4359
  /* ### Instruction preambles. ### */
4457
- if (! leaf) ADD_PC(INSN_ATTR(width));
4360
+ ADD_PC(INSN_ATTR(width));
4458
4361
  SETUP_CANARY(leaf);
4459
4362
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
4460
4363
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, idx);
@@ -4467,14 +4370,13 @@ INSN_ENTRY(setlocal_WC_0)
4467
4370
  RB_DEBUG_COUNTER_INC(lvar_set);
4468
4371
  (void)RB_DEBUG_COUNTER_INC_IF(lvar_set_dynamic, level > 0);
4469
4372
  }
4470
- # line 4471 "vm.inc"
4373
+ # line 4374 "vm.inc"
4471
4374
  # undef NAME_OF_CURRENT_INSN
4472
4375
 
4473
4376
  /* ### Instruction trailers. ### */
4474
4377
  CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
4475
4378
  CHECK_CANARY(leaf, INSN_ATTR(bin));
4476
4379
  INC_SP(INSN_ATTR(sp_inc));
4477
- if (leaf) ADD_PC(INSN_ATTR(width));
4478
4380
  # undef INSN_ATTR
4479
4381
 
4480
4382
  /* ### Leave the instruction. ### */
@@ -4491,14 +4393,14 @@ INSN_ENTRY(setlocal_WC_1)
4491
4393
  /* ### Declare and assign variables. ### */
4492
4394
  #line 13 "defs/opt_operand.def"
4493
4395
  const rb_num_t level = 1;
4494
- #line 4495 "vm.inc"
4396
+ #line 4397 "vm.inc"
4495
4397
  lindex_t idx = (lindex_t)GET_OPERAND(1);
4496
4398
  # define INSN_ATTR(x) attr_ ## x ## _setlocal_WC_1(idx)
4497
- const bool leaf = INSN_ATTR(leaf);
4399
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
4498
4400
  VALUE val = TOPN(0);
4499
4401
 
4500
4402
  /* ### Instruction preambles. ### */
4501
- if (! leaf) ADD_PC(INSN_ATTR(width));
4403
+ ADD_PC(INSN_ATTR(width));
4502
4404
  SETUP_CANARY(leaf);
4503
4405
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
4504
4406
  COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, idx);
@@ -4511,14 +4413,13 @@ INSN_ENTRY(setlocal_WC_1)
4511
4413
  RB_DEBUG_COUNTER_INC(lvar_set);
4512
4414
  (void)RB_DEBUG_COUNTER_INC_IF(lvar_set_dynamic, level > 0);
4513
4415
  }
4514
- # line 4515 "vm.inc"
4416
+ # line 4417 "vm.inc"
4515
4417
  # undef NAME_OF_CURRENT_INSN
4516
4418
 
4517
4419
  /* ### Instruction trailers. ### */
4518
4420
  CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
4519
4421
  CHECK_CANARY(leaf, INSN_ATTR(bin));
4520
4422
  INC_SP(INSN_ATTR(sp_inc));
4521
- if (leaf) ADD_PC(INSN_ATTR(width));
4522
4423
  # undef INSN_ATTR
4523
4424
 
4524
4425
  /* ### Leave the instruction. ### */
@@ -4535,12 +4436,12 @@ INSN_ENTRY(putobject_INT2FIX_0_)
4535
4436
  /* ### Declare and assign variables. ### */
4536
4437
  #line 15 "defs/opt_operand.def"
4537
4438
  const VALUE val = INT2FIX(0);
4538
- #line 4539 "vm.inc"
4439
+ #line 4440 "vm.inc"
4539
4440
  # define INSN_ATTR(x) attr_ ## x ## _putobject_INT2FIX_0_()
4540
- const bool leaf = INSN_ATTR(leaf);
4441
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
4541
4442
 
4542
4443
  /* ### Instruction preambles. ### */
4543
- if (! leaf) ADD_PC(INSN_ATTR(width));
4444
+ ADD_PC(INSN_ATTR(width));
4544
4445
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
4545
4446
 
4546
4447
  /* ### Instruction trailers. ### */
@@ -4549,7 +4450,6 @@ INSN_ENTRY(putobject_INT2FIX_0_)
4549
4450
  TOPN(0) = val;
4550
4451
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
4551
4452
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
4552
- if (leaf) ADD_PC(INSN_ATTR(width));
4553
4453
  # undef INSN_ATTR
4554
4454
 
4555
4455
  /* ### Leave the instruction. ### */
@@ -4566,12 +4466,12 @@ INSN_ENTRY(putobject_INT2FIX_1_)
4566
4466
  /* ### Declare and assign variables. ### */
4567
4467
  #line 16 "defs/opt_operand.def"
4568
4468
  const VALUE val = INT2FIX(1);
4569
- #line 4570 "vm.inc"
4469
+ #line 4470 "vm.inc"
4570
4470
  # define INSN_ATTR(x) attr_ ## x ## _putobject_INT2FIX_1_()
4571
- const bool leaf = INSN_ATTR(leaf);
4471
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
4572
4472
 
4573
4473
  /* ### Instruction preambles. ### */
4574
- if (! leaf) ADD_PC(INSN_ATTR(width));
4474
+ ADD_PC(INSN_ATTR(width));
4575
4475
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
4576
4476
 
4577
4477
  /* ### Instruction trailers. ### */
@@ -4580,7 +4480,6 @@ INSN_ENTRY(putobject_INT2FIX_1_)
4580
4480
  TOPN(0) = val;
4581
4481
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
4582
4482
  VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
4583
- if (leaf) ADD_PC(INSN_ATTR(width));
4584
4483
  # undef INSN_ATTR
4585
4484
 
4586
4485
  /* ### Leave the instruction. ### */