debase-ruby_core_source 3.2.1 → 3.2.2

Sign up to get free protection for your applications and to get access to all the features.
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. ### */