diff src/pt-jit.h @ 14966:b7b647bc4b90

Place releases for temporaries on error * src/pt-jit.cc (jit_block::maybe_split): Improve algorithm for placing splits. (jit_convert::jit_convert): Relabel final block before debug printing. (jit_convert::place_releases): Release temporaries. (jit_convert::release_temp, jit_convert::release_dead_phi): New function. (jit_convert::compute_temp::compute_temp): Correctly detect temporaries used in error checks. (jit_convert::convert_llvm::visit): Remove pointless comment and stash grab. (octave_jit_binary_any_any): Grab lhs and rhs. (jit_print): New overload. * src/pt-jit.h (jit_print): New overload. (jit_convert::release_temp, jit_convert::release_dead_phi): New declarations.
author Max Brister <max@2bass.com>
date Fri, 22 Jun 2012 11:43:30 -0500
parents f2117a963c54
children 0cfe0cf55a02
line wrap: on
line diff
--- a/src/pt-jit.h	Thu Jun 21 17:37:36 2012 -0500
+++ b/src/pt-jit.h	Fri Jun 22 11:43:30 2012 -0500
@@ -850,6 +850,7 @@
 };
 
 std::ostream& operator<< (std::ostream& os, const jit_value& value);
+std::ostream& jit_print (std::ostream& os, jit_value *avalue);
 
 class
 jit_use : public jit_internal_node<jit_value, jit_use>
@@ -2248,8 +2249,14 @@
 
   void remove_dead ();
 
+  typedef std::set<jit_instruction *> instr_set;
+
   void place_releases (void);
 
+  void release_temp (jit_block& ablock, const instr_set& temp);
+
+  void release_dead_phi (jit_block& ablock);
+
   void simplify_phi (void);
 
   void simplify_phi (jit_phi& phi);
@@ -2284,8 +2291,6 @@
 
   void finish_breaks (jit_block *dest, const block_list& lst);
 
-  typedef std::set<jit_instruction *> instr_set;
-
   // compute per block information about temporaries
   class
   compute_temp