|
||
init_flowproblem_walker.ccGo to the documentation of this file.00001 // $Id: init_flowproblem_walker.cc,v 1.3 2003/08/07 23:14:14 pnav Exp $ 00002 // ---------------------------------------------------------------------- 00003 // 00004 // C-Breeze 00005 // C Compiler Framework 00006 // 00007 // Copyright (c) 2000 University of Texas at Austin 00008 // 00009 // Samuel Z. Guyer 00010 // Daniel A. Jimenez 00011 // Calvin Lin 00012 // 00013 // Permission is hereby granted, free of charge, to any person 00014 // obtaining a copy of this software and associated documentation 00015 // files (the "Software"), to deal in the Software without 00016 // restriction, including without limitation the rights to use, copy, 00017 // modify, merge, publish, distribute, sublicense, and/or sell copies 00018 // of the Software, and to permit persons to whom the Software is 00019 // furnished to do so, subject to the following conditions: 00020 // 00021 // The above copyright notice and this permission notice shall be 00022 // included in all copies or substantial portions of the Software. 00023 // 00024 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 00025 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 00026 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 00027 // NONINFRINGEMENT. IN NO EVENT SHALL THE UNIVERSITY OF TEXAS AT 00028 // AUSTIN BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 00029 // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF 00030 // OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 00031 // THE SOFTWARE. 00032 // 00033 // We acknowledge the C-to-C Translator from MIT Laboratory for 00034 // Computer Science for inspiring parts of the C-Breeze design. 00035 // 00036 // ---------------------------------------------------------------------- 00037 00038 #include "c_breeze.h" 00039 #include "init_flowproblem_walker.h" 00040 00041 // ------------------------------------------------------------ 00042 // Entry points 00043 // ------------------------------------------------------------ 00044 00045 void init_flowproblem_walker::init(Node * n, FlowProblem * f) 00046 { 00047 init_flowproblem_walker fpw(f, true); 00048 n->walk(fpw); 00049 } 00050 00051 void init_flowproblem_walker::cleanup(Node * n, FlowProblem * f) 00052 { 00053 init_flowproblem_walker fpw(f, false); 00054 n->walk(fpw); 00055 } 00056 // ------------------------------------------------------------ 00057 // Node types 00058 // ------------------------------------------------------------ 00059 00060 void init_flowproblem_walker::at_proc(procNode * the_proc, Order ord) 00061 { 00062 if (_init) 00063 the_proc->at_exit(_fp->top()->clone()); 00064 else 00065 delete the_proc->at_exit(); 00066 } 00067 00068 void init_flowproblem_walker::at_stmt(stmtNode * the_stmt, Order ord) 00069 { 00070 if (_init) 00071 the_stmt->at_exit(_fp->top()->clone()); 00072 else 00073 delete the_stmt->at_exit(); 00074 } 00075 00076 void init_flowproblem_walker::at_target(targetNode * the_target, Order ord) 00077 { 00078 at_stmt(the_target, ord); 00079 if (_init) 00080 the_target->at_entry(_fp->top()->clone()); 00081 else 00082 delete the_target->at_entry(); 00083 } 00084 00085 void init_flowproblem_walker::at_switch(switchNode * the_switch, Order ord) 00086 { 00087 at_stmt(the_switch, ord); 00088 if (_init) 00089 the_switch->at_top(_fp->top()->clone()); 00090 else 00091 delete the_switch->at_top(); 00092 } 00093 00094 void init_flowproblem_walker::at_loop(loopNode * the_loop, Order ord) 00095 { 00096 at_stmt(the_loop, ord); 00097 if (_init) { 00098 the_loop->at_loop_head(_fp->top()->clone()); 00099 the_loop->at_loop_tail(_fp->top()->clone()); 00100 } else { 00101 delete the_loop->at_loop_head(); 00102 delete the_loop->at_loop_tail(); 00103 } 00104 } |
Generated on August 27, 2003
Back to the C-Breeze home page