jit: use FINAL and OVERRIDE throughout
authorDavid Malcolm <dmalcolm@redhat.com>
Fri, 13 May 2016 20:27:50 +0000 (20:27 +0000)
committerDavid Malcolm <dmalcolm@gcc.gnu.org>
Fri, 13 May 2016 20:27:50 +0000 (20:27 +0000)
Mark most virtual functions in gcc/jit as being FINAL OVERRIDE.
gcc::jit::recording::lvalue::access_as_rvalue is the sole OVERRIDE
that isn't a FINAL.

gcc/jit/ChangeLog:
* jit-playback.h: Within namespace gcc:jit::playback...
(compile_to_memory::postprocess): Mark with FINAL OVERRIDE.
(compile_to_file::postprocess): Likewise.
(function::finalizer): Likewise.
(block::finalizer): Likewise.
(source_file::finalizer): Likewise.
(source_line::finalizer): Likewise.
* jit-recording.c (gcc::jit::rvalue_usage_validator):: Likewise.
* jit-recording.h: Within namespace gcc::jit::recording...
(string::replay_into): Mark with FINAL OVERRIDE.
(string::make_debug_string): Likewise.
(string::write_reproducer): Likewise.
(location::replay_into): Likewise.
(location::dyn_cast_location): Likewise.
(location::make_debug_string): Likewise.
(location::write_reproducer): Likewise.
(memento_of_get_type::dereference): Likewise.
(memento_of_get_type::accepts_writes_from): Likewise.
(memento_of_get_type::is_int): Likewise.
(memento_of_get_type::is_float): Likewise.
(memento_of_get_type::is_bool): Likewise.
(memento_of_get_type::is_pointer): Likewise.
(memento_of_get_type::is_array): Likewise.
(memento_of_get_type::is_void): Likewise.
(memento_of_get_type::replay_into): Likewise.
(memento_of_get_type::make_debug_string): Likewise.
(memento_of_get_type::write_reproducer): Likewise.
(memento_of_get_pointer::dereference): Likewise.
(memento_of_get_pointer::accepts_writes_from): Likewise.
(memento_of_get_pointer::replay_into): Likewise.
(memento_of_get_pointer::is_int): Likewise.
(memento_of_get_pointer::is_float): Likewise.
(memento_of_get_pointer::is_bool): Likewise.
(memento_of_get_pointer::is_pointer): Likewise.
(memento_of_get_pointer::is_array): Likewise.
(memento_of_get_pointer::make_debug_string): Likewise.
(memento_of_get_pointer::write_reproducer): Likewise.
(memento_of_get_const::dereference): Likewise.
(memento_of_get_const::accepts_writes_from): Likewise.
(memento_of_get_const::unqualified): Likewise.
(memento_of_get_const::is_int): Likewise.
(memento_of_get_const::is_float): Likewise.
(memento_of_get_const::is_bool): Likewise.
(memento_of_get_const::is_pointer): Likewise.
(memento_of_get_const::is_array): Likewise.
(memento_of_get_const::void replay_into): Likewise;
(memento_of_get_const::make_debug_string): Likewise.
(memento_of_get_const::write_reproducer): Likewise.
(memento_of_get_volatile::dereference): Likewise.
(memento_of_get_volatile::unqualified): Likewise.
(memento_of_get_volatile::is_int): Likewise.
(memento_of_get_volatile::is_float): Likewise.
(memento_of_get_volatile::is_bool): Likewise.
(memento_of_get_volatile::is_pointer): Likewise.
(memento_of_get_volatile::is_array): Likewise.
(memento_of_get_volatile::replay_into): Likewise;
(memento_of_get_volatile::make_debug_string): Likewise.
(memento_of_get_volatile::write_reproducer): Likewise.
(array_type::dereference): Likewise.
(array_type::is_int): Likewise.
(array_type::is_float): Likewise.
(array_type::is_bool): Likewise.
(array_type::is_pointer): Likewise.
(array_type::is_array): Likewise.
(array_type::replay_into): Likewise;
(array_type::make_debug_string): Likewise.
(array_type::write_reproducer): Likewise.
(function_type::dereference): Likewise.
(function_type::function_dyn_cast_function_type): Likewise.
(function_type::function_as_a_function_type): Likewise.
(function_type::is_int): Likewise.
(function_type::is_float): Likewise.
(function_type::is_bool): Likewise.
(function_type::is_pointer): Likewise.
(function_type::is_array): Likewise.
(function_type::replay_into): Likewise;
(function_type::make_debug_string): Likewise.
(function_type::write_reproducer): Likewise.
(field::replay_into): Likewise;
(field::write_to_dump): Likewise.
(field::make_debug_string): Likewise.
(field::write_reproducer): Likewise.
(compound_type::dereference): Likewise.
(compound_type::is_int): Likewise.
(compound_type::is_float): Likewise.
(compound_type::is_bool): Likewise.
(compound_type::is_pointer): Likewise.
(compound_type::is_array): Likewise.
(compound_type::has_known_size): Likewise.
(struct_::dyn_cast_struct): Likewise.
(struct_::replay_into): Likewise.
(struct_::access_as_type): Likewise.
(struct_::make_debug_string): Likewise.
(struct_::write_reproducer): Likewise.
(fields::replay_into): Likewise.
(fields::write_to_dump): Likewise.
(fields::make_debug_string): Likewise.
(fields::write_reproducer): Likewise.
(union_::replay_into): Likewise.
(union_::make_debug_string): Likewise.
(union_::write_reproducer): Likewise.
(lvalue::access_as_rvalue): Mark with OVERRIDE.
(param::replay_into): Mark with FINAL OVERRIDE.
(param::visit_children): Likewise.
(param::dyn_cast_param): Likewise.
(param::access_as_rvalue): Likewise.
(param::access_as_lvalue): Likewise.
(param::make_debug_string): Likewise.
(param::write_reproducer): Likewise.
(param::get_precedence): Likewise.
(function::replay_into): Likewise.
(function::write_to_dump): Likewise.
(function::make_debug_string): Likewise.
(function::write_reproducer): Likewise.
(block::write_to_dump): Likewise.
(block::make_debug_string): Likewise.
(block::write_reproducer): Likewise.
(block::replay_into): Likewise.
(global::replay_into): Likewise;
(global::visit_children): Likewise.
(global::write_to_dump): Likewise.
(global::make_debug_string): Likewise.
(global::write_reproducer): Likewise.
(global::get_precedence): Likewise.
(memento_of_new_rvalue_from_const::replay_into): Likewise.
(memento_of_new_rvalue_from_const::visit_children): Likewise.
(memento_of_new_rvalue_from_const::is_constant): Likewise.
(memento_of_new_rvalue_from_const::get_wide_int): Likewise.
(memento_of_new_rvalue_from_const::make_debug_string): Likewise.
(memento_of_new_rvalue_from_const::write_reproducer): Likewise.
(memento_of_new_rvalue_from_const::get_precedence): Likewise.
(memento_of_new_string_literal::replay_into): Likewise.
(memento_of_new_string_literal::visit_children): Likewise.
(memento_of_new_string_literal::make_debug_string): Likewise.
(memento_of_new_string_literal::write_reproducer): Likewise.
(memento_of_new_string_literal::get_precedence): Likewise.
(unary_op::replay_into): Likewise.
(unary_op::visit_children): Likewise.
(unary_op::make_debug_string): Likewise.
(unary_op::write_reproducer): Likewise.
(unary_op::get_precedence): Likewise.
(binary_op::replay_into): Likewise.
(binary_op::visit_children): Likewise.
(binary_op::make_debug_string): Likewise.
(binary_op::write_reproducer): Likewise.
(binary_op::get_precedence): Likewise.
(comparison::replay_into): Likewise.
(comparison::visit_children): Likewise.
(comparison::make_debug_string): Likewise.
(comparison::write_reproducer): Likewise.
(comparison::get_precedence): Likewise.
(cast::replay_into): Likewise.
(cast::visit_children): Likewise.
(cast::make_debug_string): Likewise.
(cast::write_reproducer): Likewise.
(cast::get_precedence): Likewise.
(call::replay_into): Likewise.
(call::visit_children): Likewise.
(call::make_debug_string): Likewise.
(call::write_reproducer): Likewise.
(call::get_precedence): Likewise.
(call_through_ptr::replay_into): Likewise.
(call_through_ptr::visit_children): Likewise.
(call_through_ptr::make_debug_string): Likewise.
(call_through_ptr::write_reproducer): Likewise.
(call_through_ptr::get_precedence): Likewise.
(array_access::replay_into): Likewise.
(array_access::visit_children): Likewise.
(array_access::make_debug_string): Likewise.
(array_access::write_reproducer): Likewise.
(array_access::get_precedence): Likewise.
(access_field_of_lvalue::replay_into): Likewise.
(access_field_of_lvalue::visit_children): Likewise.
(access_field_of_lvalue::make_debug_string): Likewise.
(access_field_of_lvalue::write_reproducer): Likewise.
(access_field_of_lvalue::get_precedence): Likewise.
(access_field_rvalue::replay_into): Likewise.
(access_field_rvalue::visit_children): Likewise.
(access_field_rvalue::make_debug_string): Likewise.
(access_field_rvalue::write_reproducer): Likewise.
(access_field_rvalue::get_precedence): Likewise.
(dereference_field_rvalue::replay_into): Likewise.
(dereference_field_rvalue::visit_children): Likewise.
(dereference_field_rvalue::make_debug_string): Likewise.
(dereference_field_rvalue::write_reproducer): Likewise.
(dereference_field_rvalue::get_precedence): Likewise.
(dereference_rvalue::replay_into): Likewise.
(dereference_rvalue::visit_children): Likewise.
(dereference_rvalue::make_debug_string): Likewise.
(dereference_rvalue::write_reproducer): Likewise.
(dereference_rvalue::get_precedence): Likewise.
(get_address_of_lvalue::replay_into): Likewise.
(get_address_of_lvalue::visit_children): Likewise.
(get_address_of_lvalue::make_debug_string): Likewise.
(get_address_of_lvalue::write_reproducer): Likewise.
(get_address_of_lvalue::get_precedence): Likewise.
(local::replay_into): Likewise.
(local::visit_children): Likewise.
(local::write_to_dump): Likewise.
(local::make_debug_string): Likewise.
(local::write_reproducer): Likewise.
(local::get_precedence): Likewise.
(statement::write_to_dump): Likewise.
(eval::replay_into): Likewise.
(eval::make_debug_string): Likewise.
(eval::write_reproducer): Likewise.
(assignment::replay_into): Likewise.
(assignment::make_debug_string): Likewise.
(assignment::write_reproducer): Likewise.
(assignment_op::replay_into): Likewise.
(assignment_op::make_debug_string): Likewise.
(assignment_op::write_reproducer): Likewise.
(comment::replay_into): Likewise.
(comment::make_debug_string): Likewise.
(comment::write_reproducer): Likewise.
(conditional::replay_into): Likewise.
(conditional::get_successor_blocks): Likewise.
(conditional::make_debug_string): Likewise.
(conditional::write_reproducer): Likewise.
(jump::replay_into): Likewise.
(jump::get_successor_blocks): Likewise.
(jump::make_debug_string): Likewise.
(jump::write_reproducer): Likewise.
(return_::replay_into): Likewise.
(return_::get_successor_blocks): Likewise.
(return_::make_debug_string): Likewise.
(return_::write_reproducer): Likewise.
(case_::replay_into): Likewise.
(case_::write_reproducer): Likewise.
(case_::make_debug_string): Likewise.
(switch_::replay_into): Likewise.
(switch_::get_successor_blocks): Likewise.
(switch_::make_debug_string): Likewise.
(switch_::write_reproducer): Likewise.

From-SVN: r236223

gcc/jit/ChangeLog
gcc/jit/jit-playback.h
gcc/jit/jit-recording.c
gcc/jit/jit-recording.h

index b9e9b5887780eba4354b79bee1df13c6a0ff18ad..d7a06398adb792addfa321d4ce74ae067dfee451 100644 (file)
@@ -1,3 +1,240 @@
+2016-05-13  David Malcolm  <dmalcolm@redhat.com>
+
+       * jit-playback.h: Within namespace gcc:jit::playback...
+       (compile_to_memory::postprocess): Mark with FINAL OVERRIDE.
+       (compile_to_file::postprocess): Likewise.
+       (function::finalizer): Likewise.
+       (block::finalizer): Likewise.
+       (source_file::finalizer): Likewise.
+       (source_line::finalizer): Likewise.
+       * jit-recording.c (gcc::jit::rvalue_usage_validator):: Likewise.
+       * jit-recording.h: Within namespace gcc::jit::recording...
+       (string::replay_into): Mark with FINAL OVERRIDE.
+       (string::make_debug_string): Likewise.
+       (string::write_reproducer): Likewise.
+       (location::replay_into): Likewise.
+       (location::dyn_cast_location): Likewise.
+       (location::make_debug_string): Likewise.
+       (location::write_reproducer): Likewise.
+       (memento_of_get_type::dereference): Likewise.
+       (memento_of_get_type::accepts_writes_from): Likewise.
+       (memento_of_get_type::is_int): Likewise.
+       (memento_of_get_type::is_float): Likewise.
+       (memento_of_get_type::is_bool): Likewise.
+       (memento_of_get_type::is_pointer): Likewise.
+       (memento_of_get_type::is_array): Likewise.
+       (memento_of_get_type::is_void): Likewise.
+       (memento_of_get_type::replay_into): Likewise.
+       (memento_of_get_type::make_debug_string): Likewise.
+       (memento_of_get_type::write_reproducer): Likewise.
+       (memento_of_get_pointer::dereference): Likewise.
+       (memento_of_get_pointer::accepts_writes_from): Likewise.
+       (memento_of_get_pointer::replay_into): Likewise.
+       (memento_of_get_pointer::is_int): Likewise.
+       (memento_of_get_pointer::is_float): Likewise.
+       (memento_of_get_pointer::is_bool): Likewise.
+       (memento_of_get_pointer::is_pointer): Likewise.
+       (memento_of_get_pointer::is_array): Likewise.
+       (memento_of_get_pointer::make_debug_string): Likewise.
+       (memento_of_get_pointer::write_reproducer): Likewise.
+       (memento_of_get_const::dereference): Likewise.
+       (memento_of_get_const::accepts_writes_from): Likewise.
+       (memento_of_get_const::unqualified): Likewise.
+       (memento_of_get_const::is_int): Likewise.
+       (memento_of_get_const::is_float): Likewise.
+       (memento_of_get_const::is_bool): Likewise.
+       (memento_of_get_const::is_pointer): Likewise.
+       (memento_of_get_const::is_array): Likewise.
+       (memento_of_get_const::void replay_into): Likewise;
+       (memento_of_get_const::make_debug_string): Likewise.
+       (memento_of_get_const::write_reproducer): Likewise.
+       (memento_of_get_volatile::dereference): Likewise.
+       (memento_of_get_volatile::unqualified): Likewise.
+       (memento_of_get_volatile::is_int): Likewise.
+       (memento_of_get_volatile::is_float): Likewise.
+       (memento_of_get_volatile::is_bool): Likewise.
+       (memento_of_get_volatile::is_pointer): Likewise.
+       (memento_of_get_volatile::is_array): Likewise.
+       (memento_of_get_volatile::replay_into): Likewise;
+       (memento_of_get_volatile::make_debug_string): Likewise.
+       (memento_of_get_volatile::write_reproducer): Likewise.
+       (array_type::dereference): Likewise.
+       (array_type::is_int): Likewise.
+       (array_type::is_float): Likewise.
+       (array_type::is_bool): Likewise.
+       (array_type::is_pointer): Likewise.
+       (array_type::is_array): Likewise.
+       (array_type::replay_into): Likewise;
+       (array_type::make_debug_string): Likewise.
+       (array_type::write_reproducer): Likewise.
+       (function_type::dereference): Likewise.
+       (function_type::function_dyn_cast_function_type): Likewise.
+       (function_type::function_as_a_function_type): Likewise.
+       (function_type::is_int): Likewise.
+       (function_type::is_float): Likewise.
+       (function_type::is_bool): Likewise.
+       (function_type::is_pointer): Likewise.
+       (function_type::is_array): Likewise.
+       (function_type::replay_into): Likewise;
+       (function_type::make_debug_string): Likewise.
+       (function_type::write_reproducer): Likewise.
+       (field::replay_into): Likewise;
+       (field::write_to_dump): Likewise.
+       (field::make_debug_string): Likewise.
+       (field::write_reproducer): Likewise.
+       (compound_type::dereference): Likewise.
+       (compound_type::is_int): Likewise.
+       (compound_type::is_float): Likewise.
+       (compound_type::is_bool): Likewise.
+       (compound_type::is_pointer): Likewise.
+       (compound_type::is_array): Likewise.
+       (compound_type::has_known_size): Likewise.
+       (struct_::dyn_cast_struct): Likewise.
+       (struct_::replay_into): Likewise.
+       (struct_::access_as_type): Likewise.
+       (struct_::make_debug_string): Likewise.
+       (struct_::write_reproducer): Likewise.
+       (fields::replay_into): Likewise.
+       (fields::write_to_dump): Likewise.
+       (fields::make_debug_string): Likewise.
+       (fields::write_reproducer): Likewise.
+       (union_::replay_into): Likewise.
+       (union_::make_debug_string): Likewise.
+       (union_::write_reproducer): Likewise.
+       (lvalue::access_as_rvalue): Mark with OVERRIDE.
+       (param::replay_into): Mark with FINAL OVERRIDE.
+       (param::visit_children): Likewise.
+       (param::dyn_cast_param): Likewise.
+       (param::access_as_rvalue): Likewise.
+       (param::access_as_lvalue): Likewise.
+       (param::make_debug_string): Likewise.
+       (param::write_reproducer): Likewise.
+       (param::get_precedence): Likewise.
+       (function::replay_into): Likewise.
+       (function::write_to_dump): Likewise.
+       (function::make_debug_string): Likewise.
+       (function::write_reproducer): Likewise.
+       (block::write_to_dump): Likewise.
+       (block::make_debug_string): Likewise.
+       (block::write_reproducer): Likewise.
+       (block::replay_into): Likewise.
+       (global::replay_into): Likewise;
+       (global::visit_children): Likewise.
+       (global::write_to_dump): Likewise.
+       (global::make_debug_string): Likewise.
+       (global::write_reproducer): Likewise.
+       (global::get_precedence): Likewise.
+       (memento_of_new_rvalue_from_const::replay_into): Likewise.
+       (memento_of_new_rvalue_from_const::visit_children): Likewise.
+       (memento_of_new_rvalue_from_const::is_constant): Likewise.
+       (memento_of_new_rvalue_from_const::get_wide_int): Likewise.
+       (memento_of_new_rvalue_from_const::make_debug_string): Likewise.
+       (memento_of_new_rvalue_from_const::write_reproducer): Likewise.
+       (memento_of_new_rvalue_from_const::get_precedence): Likewise.
+       (memento_of_new_string_literal::replay_into): Likewise.
+       (memento_of_new_string_literal::visit_children): Likewise.
+       (memento_of_new_string_literal::make_debug_string): Likewise.
+       (memento_of_new_string_literal::write_reproducer): Likewise.
+       (memento_of_new_string_literal::get_precedence): Likewise.
+       (unary_op::replay_into): Likewise.
+       (unary_op::visit_children): Likewise.
+       (unary_op::make_debug_string): Likewise.
+       (unary_op::write_reproducer): Likewise.
+       (unary_op::get_precedence): Likewise.
+       (binary_op::replay_into): Likewise.
+       (binary_op::visit_children): Likewise.
+       (binary_op::make_debug_string): Likewise.
+       (binary_op::write_reproducer): Likewise.
+       (binary_op::get_precedence): Likewise.
+       (comparison::replay_into): Likewise.
+       (comparison::visit_children): Likewise.
+       (comparison::make_debug_string): Likewise.
+       (comparison::write_reproducer): Likewise.
+       (comparison::get_precedence): Likewise.
+       (cast::replay_into): Likewise.
+       (cast::visit_children): Likewise.
+       (cast::make_debug_string): Likewise.
+       (cast::write_reproducer): Likewise.
+       (cast::get_precedence): Likewise.
+       (call::replay_into): Likewise.
+       (call::visit_children): Likewise.
+       (call::make_debug_string): Likewise.
+       (call::write_reproducer): Likewise.
+       (call::get_precedence): Likewise.
+       (call_through_ptr::replay_into): Likewise.
+       (call_through_ptr::visit_children): Likewise.
+       (call_through_ptr::make_debug_string): Likewise.
+       (call_through_ptr::write_reproducer): Likewise.
+       (call_through_ptr::get_precedence): Likewise.
+       (array_access::replay_into): Likewise.
+       (array_access::visit_children): Likewise.
+       (array_access::make_debug_string): Likewise.
+       (array_access::write_reproducer): Likewise.
+       (array_access::get_precedence): Likewise.
+       (access_field_of_lvalue::replay_into): Likewise.
+       (access_field_of_lvalue::visit_children): Likewise.
+       (access_field_of_lvalue::make_debug_string): Likewise.
+       (access_field_of_lvalue::write_reproducer): Likewise.
+       (access_field_of_lvalue::get_precedence): Likewise.
+       (access_field_rvalue::replay_into): Likewise.
+       (access_field_rvalue::visit_children): Likewise.
+       (access_field_rvalue::make_debug_string): Likewise.
+       (access_field_rvalue::write_reproducer): Likewise.
+       (access_field_rvalue::get_precedence): Likewise.
+       (dereference_field_rvalue::replay_into): Likewise.
+       (dereference_field_rvalue::visit_children): Likewise.
+       (dereference_field_rvalue::make_debug_string): Likewise.
+       (dereference_field_rvalue::write_reproducer): Likewise.
+       (dereference_field_rvalue::get_precedence): Likewise.
+       (dereference_rvalue::replay_into): Likewise.
+       (dereference_rvalue::visit_children): Likewise.
+       (dereference_rvalue::make_debug_string): Likewise.
+       (dereference_rvalue::write_reproducer): Likewise.
+       (dereference_rvalue::get_precedence): Likewise.
+       (get_address_of_lvalue::replay_into): Likewise.
+       (get_address_of_lvalue::visit_children): Likewise.
+       (get_address_of_lvalue::make_debug_string): Likewise.
+       (get_address_of_lvalue::write_reproducer): Likewise.
+       (get_address_of_lvalue::get_precedence): Likewise.
+       (local::replay_into): Likewise.
+       (local::visit_children): Likewise.
+       (local::write_to_dump): Likewise.
+       (local::make_debug_string): Likewise.
+       (local::write_reproducer): Likewise.
+       (local::get_precedence): Likewise.
+       (statement::write_to_dump): Likewise.
+       (eval::replay_into): Likewise.
+       (eval::make_debug_string): Likewise.
+       (eval::write_reproducer): Likewise.
+       (assignment::replay_into): Likewise.
+       (assignment::make_debug_string): Likewise.
+       (assignment::write_reproducer): Likewise.
+       (assignment_op::replay_into): Likewise.
+       (assignment_op::make_debug_string): Likewise.
+       (assignment_op::write_reproducer): Likewise.
+       (comment::replay_into): Likewise.
+       (comment::make_debug_string): Likewise.
+       (comment::write_reproducer): Likewise.
+       (conditional::replay_into): Likewise.
+       (conditional::get_successor_blocks): Likewise.
+       (conditional::make_debug_string): Likewise.
+       (conditional::write_reproducer): Likewise.
+       (jump::replay_into): Likewise.
+       (jump::get_successor_blocks): Likewise.
+       (jump::make_debug_string): Likewise.
+       (jump::write_reproducer): Likewise.
+       (return_::replay_into): Likewise.
+       (return_::get_successor_blocks): Likewise.
+       (return_::make_debug_string): Likewise.
+       (return_::write_reproducer): Likewise.
+       (case_::replay_into): Likewise.
+       (case_::write_reproducer): Likewise.
+       (case_::make_debug_string): Likewise.
+       (switch_::replay_into): Likewise.
+       (switch_::get_successor_blocks): Likewise.
+       (switch_::make_debug_string): Likewise.
+       (switch_::write_reproducer): Likewise.
+
 2016-02-08  David Malcolm  <dmalcolm@redhat.com>
 
        * dummy-frontend.c (jit_langhook_init): Remove
index 7519bc40ece6c53e6144cfacb22a26237d80e338..905747c14cb2043aa427e48db5734b75b96df603 100644 (file)
@@ -314,7 +314,7 @@ class compile_to_memory : public context
 {
  public:
   compile_to_memory (recording::context *ctxt);
-  void postprocess (const char *ctxt_progname);
+  void postprocess (const char *ctxt_progname) FINAL OVERRIDE;
 
   result *get_result_obj () const { return m_result; }
 
@@ -328,7 +328,7 @@ class compile_to_file : public context
   compile_to_file (recording::context *ctxt,
                   enum gcc_jit_output_kind output_kind,
                   const char *output_path);
-  void postprocess (const char *ctxt_progname);
+  void postprocess (const char *ctxt_progname) FINAL OVERRIDE;
 
  private:
   void
@@ -414,7 +414,7 @@ public:
   function(context *ctxt, tree fndecl, enum gcc_jit_function_kind kind);
 
   void gt_ggc_mx ();
-  void finalizer ();
+  void finalizer () FINAL OVERRIDE;
 
   tree get_return_type_as_tree () const;
 
@@ -475,7 +475,7 @@ public:
   block (function *func,
         const char *name);
 
-  void finalizer ();
+  void finalizer () FINAL OVERRIDE;
 
   tree as_label_decl () const { return m_label_decl; }
 
@@ -619,7 +619,7 @@ class source_file : public wrapper
 {
 public:
   source_file (tree filename);
-  void finalizer ();
+  void finalizer () FINAL OVERRIDE;
 
   source_line *
   get_source_line (int line_num);
@@ -640,7 +640,7 @@ class source_line : public wrapper
 {
 public:
   source_line (source_file *file, int line_num);
-  void finalizer ();
+  void finalizer () FINAL OVERRIDE;
 
   location *
   get_location (recording::location *rloc, int column_num);
index 41556db93097cb125d6a56ade239f65a33a2055a..8f5f914277c99b41079600fb11856be55858d4e4 100644 (file)
@@ -3015,7 +3015,7 @@ class rvalue_usage_validator : public recording::rvalue_visitor
                          recording::statement *stmt);
 
   void
-  visit (recording::rvalue *rvalue);
+  visit (recording::rvalue *rvalue) FINAL OVERRIDE;
 
  private:
   const char *m_api_funcname;
index d99c752fbecef88187846a1c7a2e9fa403cc722b..1c3e76342090f7e55b7997bf3bbd1e0deda2cc91 100644 (file)
@@ -401,11 +401,11 @@ public:
   static string * from_printf (context *ctxt, const char *fmt, ...)
     GNU_PRINTF(2, 3);
 
-  void replay_into (replayer *) {}
+  void replay_into (replayer *) FINAL OVERRIDE {}
 
 private:
-  string * make_debug_string ();
-  void write_reproducer (reproducer &r);
+  string * make_debug_string () FINAL OVERRIDE;
+  void write_reproducer (reproducer &r) FINAL OVERRIDE;
 
 private:
   size_t m_len;
@@ -424,7 +424,7 @@ public:
     m_created_by_user (created_by_user)
  {}
 
-  void replay_into (replayer *r);
+  void replay_into (replayer *r) FINAL OVERRIDE;
 
   playback::location *
   playback_location (replayer *r)
@@ -453,12 +453,12 @@ public:
     return static_cast <playback::location *> (m_playback_obj);
   }
 
-  location *dyn_cast_location () { return this; }
+  location *dyn_cast_location () FINAL OVERRIDE { return this; }
   bool created_by_user () const { return m_created_by_user; }
 
 private:
-  string * make_debug_string ();
-  void write_reproducer (reproducer &r);
+  string * make_debug_string () FINAL OVERRIDE;
+  void write_reproducer (reproducer &r) FINAL OVERRIDE;
 
 private:
   string *m_filename;
@@ -538,9 +538,9 @@ public:
   : type (ctxt),
     m_kind (kind) {}
 
-  type *dereference ();
+  type *dereference () FINAL OVERRIDE;
 
-  bool accepts_writes_from (type *rtype)
+  bool accepts_writes_from (type *rtype) FINAL OVERRIDE
   {
     if (m_kind == GCC_JIT_TYPE_VOID_PTR)
       if (rtype->is_pointer ())
@@ -553,19 +553,19 @@ public:
     return type::accepts_writes_from (rtype);
   }
 
-  bool is_int () const;
-  bool is_float () const;
-  bool is_bool () const;
-  type *is_pointer () { return dereference (); }
-  type *is_array () { return NULL; }
-  bool is_void () const { return m_kind == GCC_JIT_TYPE_VOID; }
+  bool is_int () const FINAL OVERRIDE;
+  bool is_float () const FINAL OVERRIDE;
+  bool is_bool () const FINAL OVERRIDE;
+  type *is_pointer () FINAL OVERRIDE { return dereference (); }
+  type *is_array () FINAL OVERRIDE { return NULL; }
+  bool is_void () const FINAL OVERRIDE { return m_kind == GCC_JIT_TYPE_VOID; }
 
 public:
-  void replay_into (replayer *r);
+  void replay_into (replayer *r) FINAL OVERRIDE;
 
 private:
-  string * make_debug_string ();
-  void write_reproducer (reproducer &r);
+  string * make_debug_string () FINAL OVERRIDE;
+  void write_reproducer (reproducer &r) FINAL OVERRIDE;
 
 private:
   enum gcc_jit_types m_kind;
@@ -579,21 +579,21 @@ public:
   : type (other_type->m_ctxt),
     m_other_type (other_type) {}
 
-  type *dereference () { return m_other_type; }
+  type *dereference () FINAL OVERRIDE { return m_other_type; }
 
-  bool accepts_writes_from (type *rtype);
+  bool accepts_writes_from (type *rtype) FINAL OVERRIDE;
 
-  void replay_into (replayer *r);
+  void replay_into (replayer *r) FINAL OVERRIDE;
 
-  bool is_int () const { return false; }
-  bool is_float () const { return false; }
-  bool is_bool () const { return false; }
-  type *is_pointer () { return m_other_type; }
-  type *is_array () { return NULL; }
+  bool is_int () const FINAL OVERRIDE { return false; }
+  bool is_float () const FINAL OVERRIDE { return false; }
+  bool is_bool () const FINAL OVERRIDE { return false; }
+  type *is_pointer () FINAL OVERRIDE { return m_other_type; }
+  type *is_array () FINAL OVERRIDE { return NULL; }
 
 private:
-  string * make_debug_string ();
-  void write_reproducer (reproducer &r);
+  string * make_debug_string () FINAL OVERRIDE;
+  void write_reproducer (reproducer &r) FINAL OVERRIDE;
 
 private:
   type *m_other_type;
@@ -607,28 +607,28 @@ public:
   : type (other_type->m_ctxt),
     m_other_type (other_type) {}
 
-  type *dereference () { return m_other_type->dereference (); }
+  type *dereference () FINAL OVERRIDE { return m_other_type->dereference (); }
 
-  bool accepts_writes_from (type */*rtype*/)
+  bool accepts_writes_from (type */*rtype*/) FINAL OVERRIDE
   {
     /* Can't write to a "const".  */
     return false;
   }
 
   /* Strip off the "const", giving the underlying type.  */
-  type *unqualified () { return m_other_type; }
+  type *unqualified () FINAL OVERRIDE { return m_other_type; }
 
-  bool is_int () const { return m_other_type->is_int (); }
-  bool is_float () const { return m_other_type->is_float (); }
-  bool is_bool () const { return m_other_type->is_bool (); }
-  type *is_pointer () { return m_other_type->is_pointer (); }
-  type *is_array () { return m_other_type->is_array (); }
+  bool is_int () const FINAL OVERRIDE { return m_other_type->is_int (); }
+  bool is_float () const FINAL OVERRIDE { return m_other_type->is_float (); }
+  bool is_bool () const FINAL OVERRIDE { return m_other_type->is_bool (); }
+  type *is_pointer () FINAL OVERRIDE { return m_other_type->is_pointer (); }
+  type *is_array () FINAL OVERRIDE { return m_other_type->is_array (); }
 
-  void replay_into (replayer *);
+  void replay_into (replayer *) FINAL OVERRIDE;
 
 private:
-  string * make_debug_string ();
-  void write_reproducer (reproducer &r);
+  string * make_debug_string () FINAL OVERRIDE;
+  void write_reproducer (reproducer &r) FINAL OVERRIDE;
 
 private:
   type *m_other_type;
@@ -642,22 +642,22 @@ public:
   : type (other_type->m_ctxt),
     m_other_type (other_type) {}
 
-  type *dereference () { return m_other_type->dereference (); }
+  type *dereference () FINAL OVERRIDE { return m_other_type->dereference (); }
 
   /* Strip off the "volatile", giving the underlying type.  */
-  type *unqualified () { return m_other_type; }
+  type *unqualified () FINAL OVERRIDE { return m_other_type; }
 
-  bool is_int () const { return m_other_type->is_int (); }
-  bool is_float () const { return m_other_type->is_float (); }
-  bool is_bool () const { return m_other_type->is_bool (); }
-  type *is_pointer () { return m_other_type->is_pointer (); }
-  type *is_array () { return m_other_type->is_array (); }
+  bool is_int () const FINAL OVERRIDE { return m_other_type->is_int (); }
+  bool is_float () const FINAL OVERRIDE { return m_other_type->is_float (); }
+  bool is_bool () const FINAL OVERRIDE { return m_other_type->is_bool (); }
+  type *is_pointer () FINAL OVERRIDE { return m_other_type->is_pointer (); }
+  type *is_array () FINAL OVERRIDE { return m_other_type->is_array (); }
 
-  void replay_into (replayer *);
+  void replay_into (replayer *) FINAL OVERRIDE;
 
 private:
-  string * make_debug_string ();
-  void write_reproducer (reproducer &r);
+  string * make_debug_string () FINAL OVERRIDE;
+  void write_reproducer (reproducer &r) FINAL OVERRIDE;
 
 private:
   type *m_other_type;
@@ -676,19 +676,19 @@ class array_type : public type
     m_num_elements (num_elements)
   {}
 
-  type *dereference ();
+  type *dereference () FINAL OVERRIDE;
 
-  bool is_int () const { return false; }
-  bool is_float () const { return false; }
-  bool is_bool () const { return false; }
-  type *is_pointer () { return NULL; }
-  type *is_array () { return m_element_type; }
+  bool is_int () const FINAL OVERRIDE { return false; }
+  bool is_float () const FINAL OVERRIDE { return false; }
+  bool is_bool () const FINAL OVERRIDE { return false; }
+  type *is_pointer () FINAL OVERRIDE { return NULL; }
+  type *is_array () FINAL OVERRIDE { return m_element_type; }
 
-  void replay_into (replayer *);
+  void replay_into (replayer *) FINAL OVERRIDE;
 
  private:
-  string * make_debug_string ();
-  void write_reproducer (reproducer &r);
+  string * make_debug_string () FINAL OVERRIDE;
+  void write_reproducer (reproducer &r) FINAL OVERRIDE;
 
  private:
   location *m_loc;
@@ -705,17 +705,17 @@ public:
                 type **param_types,
                 int is_variadic);
 
-  type *dereference ();
-  function_type *dyn_cast_function_type () { return this; }
-  function_type *as_a_function_type () { return this; }
+  type *dereference () FINAL OVERRIDE;
+  function_type *dyn_cast_function_type () FINAL OVERRIDE { return this; }
+  function_type *as_a_function_type () FINAL OVERRIDE { return this; }
 
-  bool is_int () const { return false; }
-  bool is_float () const { return false; }
-  bool is_bool () const { return false; }
-  type *is_pointer () { return NULL; }
-  type *is_array () { return NULL; }
+  bool is_int () const FINAL OVERRIDE { return false; }
+  bool is_float () const FINAL OVERRIDE { return false; }
+  bool is_bool () const FINAL OVERRIDE { return false; }
+  type *is_pointer () FINAL OVERRIDE { return NULL; }
+  type *is_array () FINAL OVERRIDE { return NULL; }
 
-  void replay_into (replayer *);
+  void replay_into (replayer *) FINAL OVERRIDE;
 
   type * get_return_type () const { return m_return_type; }
   const vec<type *> &get_param_types () const { return m_param_types; }
@@ -728,9 +728,9 @@ public:
                             memento *ptr_type);
 
  private:
-  string * make_debug_string ();
+  string * make_debug_string () FINAL OVERRIDE;
   string * make_debug_string_with (const char *);
-  void write_reproducer (reproducer &r);
+  void write_reproducer (reproducer &r) FINAL OVERRIDE;
 
 private:
   type *m_return_type;
@@ -757,9 +757,9 @@ public:
   compound_type * get_container () const { return m_container; }
   void set_container (compound_type *c) { m_container = c; }
 
-  void replay_into (replayer *);
+  void replay_into (replayer *) FINAL OVERRIDE;
 
-  void write_to_dump (dump &d);
+  void write_to_dump (dump &d) FINAL OVERRIDE;
 
   playback::field *
   playback_field () const
@@ -768,8 +768,8 @@ public:
   }
 
 private:
-  string * make_debug_string ();
-  void write_reproducer (reproducer &r);
+  string * make_debug_string () FINAL OVERRIDE;
+  void write_reproducer (reproducer &r) FINAL OVERRIDE;
 
 private:
   location *m_loc;
@@ -795,15 +795,15 @@ public:
              int num_fields,
              field **fields);
 
-  type *dereference ();
+  type *dereference () FINAL OVERRIDE;
 
-  bool is_int () const { return false; }
-  bool is_float () const { return false; }
-  bool is_bool () const { return false; }
-  type *is_pointer () { return NULL; }
-  type *is_array () { return NULL; }
+  bool is_int () const FINAL OVERRIDE { return false; }
+  bool is_float () const FINAL OVERRIDE { return false; }
+  bool is_bool () const FINAL OVERRIDE { return false; }
+  type *is_pointer () FINAL OVERRIDE { return NULL; }
+  type *is_array () FINAL OVERRIDE { return NULL; }
 
-  bool has_known_size () const { return m_fields != NULL; }
+  bool has_known_size () const FINAL OVERRIDE { return m_fields != NULL; }
 
   playback::compound_type *
   playback_compound_type ()
@@ -824,18 +824,18 @@ public:
           location *loc,
           string *name);
 
-  struct_ *dyn_cast_struct () { return this; }
+  struct_ *dyn_cast_struct () FINAL OVERRIDE { return this; }
 
   type *
   as_type () { return this; }
 
-  void replay_into (replayer *r);
+  void replay_into (replayer *r) FINAL OVERRIDE;
 
-  const char *access_as_type (reproducer &r);
+  const char *access_as_type (reproducer &r) FINAL OVERRIDE;
 
 private:
-  string * make_debug_string ();
-  void write_reproducer (reproducer &r);
+  string * make_debug_string () FINAL OVERRIDE;
+  void write_reproducer (reproducer &r) FINAL OVERRIDE;
 };
 
 // memento of struct_::set_fields
@@ -846,16 +846,16 @@ public:
          int num_fields,
          field **fields);
 
-  void replay_into (replayer *r);
+  void replay_into (replayer *r) FINAL OVERRIDE;
 
-  void write_to_dump (dump &d);
+  void write_to_dump (dump &d) FINAL OVERRIDE;
 
   int length () const { return m_fields.length (); }
   field *get_field (int i) const { return m_fields[i]; }
 
 private:
-  string * make_debug_string ();
-  void write_reproducer (reproducer &r);
+  string * make_debug_string () FINAL OVERRIDE;
+  void write_reproducer (reproducer &r) FINAL OVERRIDE;
 
 private:
   compound_type *m_struct_or_union;
@@ -869,11 +869,11 @@ public:
          location *loc,
          string *name);
 
-  void replay_into (replayer *r);
+  void replay_into (replayer *r) FINAL OVERRIDE;
 
 private:
-  string * make_debug_string ();
-  void write_reproducer (reproducer &r);
+  string * make_debug_string () FINAL OVERRIDE;
+  void write_reproducer (reproducer &r) FINAL OVERRIDE;
 
 private:
   location *m_loc;
@@ -1009,7 +1009,7 @@ public:
   rvalue *
   as_rvalue () { return this; }
 
-  const char *access_as_rvalue (reproducer &r);
+  const char *access_as_rvalue (reproducer &r) OVERRIDE;
   virtual const char *access_as_lvalue (reproducer &r);
 };
 
@@ -1026,9 +1026,9 @@ public:
   lvalue *
   as_lvalue () { return this; }
 
-  void replay_into (replayer *r);
+  void replay_into (replayer *r) FINAL OVERRIDE;
 
-  void visit_children (rvalue_visitor *) {}
+  void visit_children (rvalue_visitor *) FINAL OVERRIDE {}
 
   playback::param *
   playback_param () const
@@ -1036,15 +1036,18 @@ public:
     return static_cast <playback::param *> (m_playback_obj);
   }
 
-  param *dyn_cast_param () { return this; }
+  param *dyn_cast_param () FINAL OVERRIDE { return this; }
 
-  const char *access_as_rvalue (reproducer &r);
-  const char *access_as_lvalue (reproducer &r);
+  const char *access_as_rvalue (reproducer &r) FINAL OVERRIDE;
+  const char *access_as_lvalue (reproducer &r) FINAL OVERRIDE;
 
 private:
-  string * make_debug_string () { return m_name; }
-  void write_reproducer (reproducer &r);
-  enum precedence get_precedence () const { return PRECEDENCE_PRIMARY; }
+  string * make_debug_string () FINAL OVERRIDE { return m_name; }
+  void write_reproducer (reproducer &r) FINAL OVERRIDE;
+  enum precedence get_precedence () const FINAL OVERRIDE
+  {
+    return PRECEDENCE_PRIMARY;
+  }
 
 private:
   string *m_name;
@@ -1063,7 +1066,7 @@ public:
            int is_variadic,
            enum built_in_function builtin_id);
 
-  void replay_into (replayer *r);
+  void replay_into (replayer *r) FINAL OVERRIDE;
 
   playback::function *
   playback_function () const
@@ -1093,15 +1096,15 @@ public:
 
   bool is_variadic () const { return m_is_variadic; }
 
-  void write_to_dump (dump &d);
+  void write_to_dump (dump &d) FINAL OVERRIDE;
 
   void validate ();
 
   void dump_to_dot (const char *path);
 
 private:
-  string * make_debug_string ();
-  void write_reproducer (reproducer &r);
+  string * make_debug_string () FINAL OVERRIDE;
+  void write_reproducer (reproducer &r) FINAL OVERRIDE;
 
 private:
   location *m_loc;
@@ -1183,7 +1186,7 @@ public:
     return static_cast <playback::block *> (m_playback_obj);
   }
 
-  void write_to_dump (dump &d);
+  void write_to_dump (dump &d) FINAL OVERRIDE;
 
   bool validate ();
 
@@ -1195,10 +1198,10 @@ public:
   vec <block *> get_successor_blocks () const;
 
 private:
-  string * make_debug_string ();
-  void write_reproducer (reproducer &r);
+  string * make_debug_string () FINAL OVERRIDE;
+  void write_reproducer (reproducer &r) FINAL OVERRIDE;
 
-  void replay_into (replayer *r);
+  void replay_into (replayer *r) FINAL OVERRIDE;
 
   void dump_to_dot (pretty_printer *pp);
   void dump_edges_to_dot (pretty_printer *pp);
@@ -1227,16 +1230,19 @@ public:
     m_name (name)
   {}
 
-  void replay_into (replayer *);
+  void replay_into (replayer *) FINAL OVERRIDE;
 
-  void visit_children (rvalue_visitor *) {}
+  void visit_children (rvalue_visitor *) FINAL OVERRIDE {}
 
-  void write_to_dump (dump &d);
+  void write_to_dump (dump &d) FINAL OVERRIDE;
 
 private:
-  string * make_debug_string () { return m_name; }
-  void write_reproducer (reproducer &r);
-  enum precedence get_precedence () const { return PRECEDENCE_PRIMARY; }
+  string * make_debug_string () FINAL OVERRIDE { return m_name; }
+  void write_reproducer (reproducer &r) FINAL OVERRIDE;
+  enum precedence get_precedence () const FINAL OVERRIDE
+  {
+    return PRECEDENCE_PRIMARY;
+  }
 
 private:
   enum gcc_jit_global_kind m_kind;
@@ -1254,18 +1260,21 @@ public:
   : rvalue (ctxt, loc, type),
     m_value (value) {}
 
-  void replay_into (replayer *r);
+  void replay_into (replayer *r) FINAL OVERRIDE;
 
-  void visit_children (rvalue_visitor *) {}
+  void visit_children (rvalue_visitor *) FINAL OVERRIDE {}
 
-  bool is_constant () const { return true; }
+  bool is_constant () const FINAL OVERRIDE { return true; }
 
-  bool get_wide_int (wide_int *out) const;
+  bool get_wide_int (wide_int *out) const FINAL OVERRIDE;
 
 private:
-  string * make_debug_string ();
-  void write_reproducer (reproducer &r);
-  enum precedence get_precedence () const { return PRECEDENCE_PRIMARY; }
+  string * make_debug_string () FINAL OVERRIDE;
+  void write_reproducer (reproducer &r) FINAL OVERRIDE;
+  enum precedence get_precedence () const FINAL OVERRIDE
+  {
+    return PRECEDENCE_PRIMARY;
+  }
 
 private:
   HOST_TYPE m_value;
@@ -1280,14 +1289,17 @@ public:
   : rvalue (ctxt, loc, ctxt->get_type (GCC_JIT_TYPE_CONST_CHAR_PTR)),
     m_value (value) {}
 
-  void replay_into (replayer *r);
+  void replay_into (replayer *r) FINAL OVERRIDE;
 
-  void visit_children (rvalue_visitor *) {}
+  void visit_children (rvalue_visitor *) FINAL OVERRIDE {}
 
 private:
-  string * make_debug_string ();
-  void write_reproducer (reproducer &r);
-  enum precedence get_precedence () const { return PRECEDENCE_PRIMARY; }
+  string * make_debug_string () FINAL OVERRIDE;
+  void write_reproducer (reproducer &r) FINAL OVERRIDE;
+  enum precedence get_precedence () const FINAL OVERRIDE
+  {
+    return PRECEDENCE_PRIMARY;
+  }
 
 private:
   string *m_value;
@@ -1306,14 +1318,17 @@ public:
     m_a (a)
   {}
 
-  void replay_into (replayer *r);
+  void replay_into (replayer *r) FINAL OVERRIDE;
 
-  void visit_children (rvalue_visitor *v);
+  void visit_children (rvalue_visitor *v) FINAL OVERRIDE;
 
 private:
-  string * make_debug_string ();
-  void write_reproducer (reproducer &r);
-  enum precedence get_precedence () const {return PRECEDENCE_UNARY;}
+  string * make_debug_string () FINAL OVERRIDE;
+  void write_reproducer (reproducer &r) FINAL OVERRIDE;
+  enum precedence get_precedence () const FINAL OVERRIDE
+  {
+    return PRECEDENCE_UNARY;
+  }
 
 private:
   enum gcc_jit_unary_op m_op;
@@ -1333,14 +1348,14 @@ public:
     m_a (a),
     m_b (b) {}
 
-  void replay_into (replayer *r);
+  void replay_into (replayer *r) FINAL OVERRIDE;
 
-  void visit_children (rvalue_visitor *v);
+  void visit_children (rvalue_visitor *v) FINAL OVERRIDE;
 
 private:
-  string * make_debug_string ();
-  void write_reproducer (reproducer &r);
-  enum precedence get_precedence () const;
+  string * make_debug_string () FINAL OVERRIDE;
+  void write_reproducer (reproducer &r) FINAL OVERRIDE;
+  enum precedence get_precedence () const FINAL OVERRIDE;
 
 private:
   enum gcc_jit_binary_op m_op;
@@ -1361,14 +1376,14 @@ public:
     m_b (b)
   {}
 
-  void replay_into (replayer *r);
+  void replay_into (replayer *r) FINAL OVERRIDE;
 
-  void visit_children (rvalue_visitor *v);
+  void visit_children (rvalue_visitor *v) FINAL OVERRIDE;
 
 private:
-  string * make_debug_string ();
-  void write_reproducer (reproducer &r);
-  enum precedence get_precedence () const;
+  string * make_debug_string () FINAL OVERRIDE;
+  void write_reproducer (reproducer &r) FINAL OVERRIDE;
+  enum precedence get_precedence () const FINAL OVERRIDE;
 
 private:
   enum gcc_jit_comparison m_op;
@@ -1387,14 +1402,17 @@ public:
     m_rvalue (a)
   {}
 
-  void replay_into (replayer *r);
+  void replay_into (replayer *r) FINAL OVERRIDE;
 
-  void visit_children (rvalue_visitor *v);
+  void visit_children (rvalue_visitor *v) FINAL OVERRIDE;
 
 private:
-  string * make_debug_string ();
-  void write_reproducer (reproducer &r);
-  enum precedence get_precedence () const { return PRECEDENCE_CAST; }
+  string * make_debug_string () FINAL OVERRIDE;
+  void write_reproducer (reproducer &r) FINAL OVERRIDE;
+  enum precedence get_precedence () const FINAL OVERRIDE
+  {
+    return PRECEDENCE_CAST;
+  }
 
 private:
   rvalue *m_rvalue;
@@ -1409,14 +1427,17 @@ public:
        int numargs,
        rvalue **args);
 
-  void replay_into (replayer *r);
+  void replay_into (replayer *r) FINAL OVERRIDE;
 
-  void visit_children (rvalue_visitor *v);
+  void visit_children (rvalue_visitor *v) FINAL OVERRIDE;
 
 private:
-  string * make_debug_string ();
-  void write_reproducer (reproducer &r);
-  enum precedence get_precedence () const { return PRECEDENCE_POSTFIX; }
+  string * make_debug_string () FINAL OVERRIDE;
+  void write_reproducer (reproducer &r) FINAL OVERRIDE;
+  enum precedence get_precedence () const FINAL OVERRIDE
+  {
+    return PRECEDENCE_POSTFIX;
+  }
 
 private:
   function *m_func;
@@ -1432,14 +1453,17 @@ public:
                    int numargs,
                    rvalue **args);
 
-  void replay_into (replayer *r);
+  void replay_into (replayer *r) FINAL OVERRIDE;
 
-  void visit_children (rvalue_visitor *v);
+  void visit_children (rvalue_visitor *v) FINAL OVERRIDE;
 
 private:
-  string * make_debug_string ();
-  void write_reproducer (reproducer &r);
-  enum precedence get_precedence () const { return PRECEDENCE_POSTFIX; }
+  string * make_debug_string () FINAL OVERRIDE;
+  void write_reproducer (reproducer &r) FINAL OVERRIDE;
+  enum precedence get_precedence () const FINAL OVERRIDE
+  {
+    return PRECEDENCE_POSTFIX;
+  }
 
 private:
   rvalue *m_fn_ptr;
@@ -1458,14 +1482,17 @@ public:
     m_index (index)
   {}
 
-  void replay_into (replayer *r);
+  void replay_into (replayer *r) FINAL OVERRIDE;
 
-  void visit_children (rvalue_visitor *v);
+  void visit_children (rvalue_visitor *v) FINAL OVERRIDE;
 
 private:
-  string * make_debug_string ();
-  void write_reproducer (reproducer &r);
-  enum precedence get_precedence () const { return PRECEDENCE_POSTFIX; }
+  string * make_debug_string () FINAL OVERRIDE;
+  void write_reproducer (reproducer &r) FINAL OVERRIDE;
+  enum precedence get_precedence () const FINAL OVERRIDE
+  {
+    return PRECEDENCE_POSTFIX;
+  }
 
 private:
   rvalue *m_ptr;
@@ -1484,14 +1511,17 @@ public:
     m_field (field)
   {}
 
-  void replay_into (replayer *r);
+  void replay_into (replayer *r) FINAL OVERRIDE;
 
-  void visit_children (rvalue_visitor *v);
+  void visit_children (rvalue_visitor *v) FINAL OVERRIDE;
 
 private:
-  string * make_debug_string ();
-  void write_reproducer (reproducer &r);
-  enum precedence get_precedence () const { return PRECEDENCE_POSTFIX; }
+  string * make_debug_string () FINAL OVERRIDE;
+  void write_reproducer (reproducer &r) FINAL OVERRIDE;
+  enum precedence get_precedence () const FINAL OVERRIDE
+  {
+    return PRECEDENCE_POSTFIX;
+  }
 
 private:
   lvalue *m_lvalue;
@@ -1510,14 +1540,17 @@ public:
     m_field (field)
   {}
 
-  void replay_into (replayer *r);
+  void replay_into (replayer *r) FINAL OVERRIDE;
 
-  void visit_children (rvalue_visitor *v);
+  void visit_children (rvalue_visitor *v) FINAL OVERRIDE;
 
 private:
-  string * make_debug_string ();
-  void write_reproducer (reproducer &r);
-  enum precedence get_precedence () const { return PRECEDENCE_POSTFIX; }
+  string * make_debug_string () FINAL OVERRIDE;
+  void write_reproducer (reproducer &r) FINAL OVERRIDE;
+  enum precedence get_precedence () const FINAL OVERRIDE
+  {
+    return PRECEDENCE_POSTFIX;
+  }
 
 private:
   rvalue *m_rvalue;
@@ -1536,14 +1569,17 @@ public:
     m_field (field)
   {}
 
-  void replay_into (replayer *r);
+  void replay_into (replayer *r) FINAL OVERRIDE;
 
-  void visit_children (rvalue_visitor *v);
+  void visit_children (rvalue_visitor *v) FINAL OVERRIDE;
 
 private:
-  string * make_debug_string ();
-  void write_reproducer (reproducer &r);
-  enum precedence get_precedence () const { return PRECEDENCE_POSTFIX; }
+  string * make_debug_string () FINAL OVERRIDE;
+  void write_reproducer (reproducer &r) FINAL OVERRIDE;
+  enum precedence get_precedence () const FINAL OVERRIDE
+  {
+    return PRECEDENCE_POSTFIX;
+  }
 
 private:
   rvalue *m_rvalue;
@@ -1559,14 +1595,17 @@ public:
   : lvalue (ctxt, loc, val->get_type ()->dereference ()),
     m_rvalue (val) {}
 
-  void replay_into (replayer *r);
+  void replay_into (replayer *r) FINAL OVERRIDE;
 
-  void visit_children (rvalue_visitor *v);
+  void visit_children (rvalue_visitor *v) FINAL OVERRIDE;
 
 private:
-  string * make_debug_string ();
-  void write_reproducer (reproducer &r);
-  enum precedence get_precedence () const { return PRECEDENCE_UNARY; }
+  string * make_debug_string () FINAL OVERRIDE;
+  void write_reproducer (reproducer &r) FINAL OVERRIDE;
+  enum precedence get_precedence () const FINAL OVERRIDE
+  {
+    return PRECEDENCE_UNARY;
+  }
 
 private:
   rvalue *m_rvalue;
@@ -1582,14 +1621,17 @@ public:
     m_lvalue (val)
   {}
 
-  void replay_into (replayer *r);
+  void replay_into (replayer *r) FINAL OVERRIDE;
 
-  void visit_children (rvalue_visitor *v);
+  void visit_children (rvalue_visitor *v) FINAL OVERRIDE;
 
 private:
-  string * make_debug_string ();
-  void write_reproducer (reproducer &r);
-  enum precedence get_precedence () const { return PRECEDENCE_UNARY; }
+  string * make_debug_string () FINAL OVERRIDE;
+  void write_reproducer (reproducer &r) FINAL OVERRIDE;
+  enum precedence get_precedence () const FINAL OVERRIDE
+  {
+    return PRECEDENCE_UNARY;
+  }
 
 private:
   lvalue *m_lvalue;
@@ -1606,16 +1648,19 @@ public:
     set_scope (func);
   }
 
-  void replay_into (replayer *r);
+  void replay_into (replayer *r) FINAL OVERRIDE;
 
-  void visit_children (rvalue_visitor *) {}
+  void visit_children (rvalue_visitor *) FINAL OVERRIDE {}
 
-  void write_to_dump (dump &d);
+  void write_to_dump (dump &d) FINAL OVERRIDE;
 
 private:
-  string * make_debug_string () { return m_name; }
-  void write_reproducer (reproducer &r);
-  enum precedence get_precedence () const { return PRECEDENCE_PRIMARY; }
+  string * make_debug_string () FINAL OVERRIDE { return m_name; }
+  void write_reproducer (reproducer &r) FINAL OVERRIDE;
+  enum precedence get_precedence () const FINAL OVERRIDE
+  {
+    return PRECEDENCE_PRIMARY;
+  }
 
 private:
   function *m_func;
@@ -1627,7 +1672,7 @@ class statement : public memento
 public:
   virtual vec <block *> get_successor_blocks () const;
 
-  void write_to_dump (dump &d);
+  void write_to_dump (dump &d) FINAL OVERRIDE;
 
   block *get_block () const { return m_block; }
   location *get_loc () const { return m_loc; }
@@ -1658,11 +1703,11 @@ public:
   : statement (b, loc),
     m_rvalue (rvalue) {}
 
-  void replay_into (replayer *r);
+  void replay_into (replayer *r) FINAL OVERRIDE;
 
 private:
-  string * make_debug_string ();
-  void write_reproducer (reproducer &r);
+  string * make_debug_string () FINAL OVERRIDE;
+  void write_reproducer (reproducer &r) FINAL OVERRIDE;
 
 private:
   rvalue *m_rvalue;
@@ -1679,11 +1724,11 @@ public:
     m_lvalue (lvalue),
     m_rvalue (rvalue) {}
 
-  void replay_into (replayer *r);
+  void replay_into (replayer *r) FINAL OVERRIDE;
 
 private:
-  string * make_debug_string ();
-  void write_reproducer (reproducer &r);
+  string * make_debug_string () FINAL OVERRIDE;
+  void write_reproducer (reproducer &r) FINAL OVERRIDE;
 
 private:
   lvalue *m_lvalue;
@@ -1703,11 +1748,11 @@ public:
     m_op (op),
     m_rvalue (rvalue) {}
 
-  void replay_into (replayer *r);
+  void replay_into (replayer *r) FINAL OVERRIDE;
 
 private:
-  string * make_debug_string ();
-  void write_reproducer (reproducer &r);
+  string * make_debug_string () FINAL OVERRIDE;
+  void write_reproducer (reproducer &r) FINAL OVERRIDE;
 
 private:
   lvalue *m_lvalue;
@@ -1724,11 +1769,11 @@ public:
   : statement (b, loc),
     m_text (text) {}
 
-  void replay_into (replayer *r);
+  void replay_into (replayer *r) FINAL OVERRIDE;
 
 private:
-  string * make_debug_string ();
-  void write_reproducer (reproducer &r);
+  string * make_debug_string () FINAL OVERRIDE;
+  void write_reproducer (reproducer &r) FINAL OVERRIDE;
 
 private:
   string *m_text;
@@ -1747,13 +1792,13 @@ public:
     m_on_true (on_true),
     m_on_false (on_false) {}
 
-  void replay_into (replayer *r);
+  void replay_into (replayer *r) FINAL OVERRIDE;
 
-  vec <block *> get_successor_blocks () const;
+  vec <block *> get_successor_blocks () const FINAL OVERRIDE;
 
 private:
-  string * make_debug_string ();
-  void write_reproducer (reproducer &r);
+  string * make_debug_string () FINAL OVERRIDE;
+  void write_reproducer (reproducer &r) FINAL OVERRIDE;
 
 private:
   rvalue *m_boolval;
@@ -1770,13 +1815,13 @@ public:
   : statement (b, loc),
     m_target (target) {}
 
-  void replay_into (replayer *r);
+  void replay_into (replayer *r) FINAL OVERRIDE;
 
-  vec <block *> get_successor_blocks () const;
+  vec <block *> get_successor_blocks () const FINAL OVERRIDE;
 
 private:
-  string * make_debug_string ();
-  void write_reproducer (reproducer &r);
+  string * make_debug_string () FINAL OVERRIDE;
+  void write_reproducer (reproducer &r) FINAL OVERRIDE;
 
 private:
   block *m_target;
@@ -1791,13 +1836,13 @@ public:
   : statement (b, loc),
     m_rvalue (rvalue) {}
 
-  void replay_into (replayer *r);
+  void replay_into (replayer *r) FINAL OVERRIDE;
 
-  vec <block *> get_successor_blocks () const;
+  vec <block *> get_successor_blocks () const FINAL OVERRIDE;
 
 private:
-  string * make_debug_string ();
-  void write_reproducer (reproducer &r);
+  string * make_debug_string () FINAL OVERRIDE;
+  void write_reproducer (reproducer &r) FINAL OVERRIDE;
 
 private:
   rvalue *m_rvalue;
@@ -1820,12 +1865,12 @@ class case_ : public memento
   rvalue *get_max_value () const { return m_max_value; }
   block *get_dest_block () const { return m_dest_block; }
 
-  void replay_into (replayer *) { /* empty */ }
+  void replay_into (replayer *) FINAL OVERRIDE { /* empty */ }
 
-  void write_reproducer (reproducer &r);
+  void write_reproducer (reproducer &r) FINAL OVERRIDE;
 
 private:
-  string * make_debug_string ();
+  string * make_debug_string () FINAL OVERRIDE;
 
  private:
   rvalue *m_min_value;
@@ -1843,13 +1888,13 @@ public:
           int num_cases,
           case_ **cases);
 
-  void replay_into (replayer *r);
+  void replay_into (replayer *r) FINAL OVERRIDE;
 
-  vec <block *> get_successor_blocks () const;
+  vec <block *> get_successor_blocks () const FINAL OVERRIDE;
 
 private:
-  string * make_debug_string ();
-  void write_reproducer (reproducer &r);
+  string * make_debug_string () FINAL OVERRIDE;
+  void write_reproducer (reproducer &r) FINAL OVERRIDE;
 
 private:
   rvalue *m_expr;