00001 /* -*- Mode: C++; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ 00002 // $Id: copyprop_pass.h,v 1.2 2000/07/24 00:33:27 brm Exp $ 00003 00004 #ifndef LOCALCOPYPROP__COPYPROP_PASS 00005 #define LOCALCOPYPROP__COPYPROP_PASS 00006 00007 #include "common/suif_list.h" 00008 #include "suifkernel/suifkernel_forwarders.h" 00009 #include "suifkernel/suif_env.h" 00010 #include "suifkernel/suif_object.h" 00011 #include "suifpasses/suifpasses.h" 00012 #include "basicnodes/basic.h" 00013 #include "suifnodes/suif.h" 00014 #include "cfenodes/cfe.h" 00015 #include "osuifutilities/pass_utils.h" 00016 #include "osuifnodes/osuif.h" 00017 #include "osuifextensionnodes/osuifextension.h" 00018 #include "vtblnodes/vtbl_utils.h" 00019 #include "j2snodes/j2s.h" 00020 #include "common/suif_map.h" 00021 00022 00023 class LocalCopyPropPass : public CollectWalkerPass<ProcedureDefinition> 00024 { 00025 private: 00026 suif_map<VariableSymbol*, VariableSymbol* > _map; 00027 bool _verbose; 00028 00029 public: 00030 LocalCopyPropPass( SuifEnv* env, const 00031 LString& name= "do_j2s_local_copy_propagation" ); 00032 virtual ~LocalCopyPropPass() { } 00033 00034 virtual void initialize_flags(); 00035 virtual void initialize(); 00036 virtual bool parse_command_line(TokenStream *command_line_stream); 00037 00038 virtual void replace_variable_symbol( SuifObject* referent, 00039 VariableSymbol* vsym ); 00040 virtual void replace_execution_object( ExecutionObject* eo ); 00041 virtual void visit( ExecutionObject* eo ); 00042 00043 virtual bool is_bb_boundary( Statement* stmt ); 00044 00045 virtual void bb_preprocess(); 00046 virtual void bb_postprocess(); 00047 virtual void handle_statement( Statement* stmt ); 00048 00049 VariableSymbol* find( VariableSymbol* vsym ); 00050 00051 virtual void process_suif_object( ProcedureDefinition* pdef ); 00052 }; 00053 00054 00055 #endif