equal
deleted
inserted
replaced
950 /* B 1.4 - Variables */ |
950 /* B 1.4 - Variables */ |
951 /*********************/ |
951 /*********************/ |
952 void *constant_folding_c::visit(symbolic_variable_c *symbol) { |
952 void *constant_folding_c::visit(symbolic_variable_c *symbol) { |
953 std::string varName; |
953 std::string varName; |
954 |
954 |
955 varName = convert.toString(symbol->var_name); |
955 varName = get_var_name_c::get_name(symbol->var_name)->value; |
956 if (values.count(varName) > 0) { |
956 if (values.count(varName) > 0) { |
957 symbol->const_value = values[varName]; |
957 symbol->const_value = values[varName]; |
958 } |
958 } |
959 return NULL; |
959 return NULL; |
960 } |
960 } |
967 |
967 |
968 values.clear(); /* Clear global map */ |
968 values.clear(); /* Clear global map */ |
969 search_var_instance_decl_c search_var_instance_decl(symbol); |
969 search_var_instance_decl_c search_var_instance_decl(symbol); |
970 function_param_iterator_c fpi(symbol); |
970 function_param_iterator_c fpi(symbol); |
971 while((var_name = fpi.next()) != NULL) { |
971 while((var_name = fpi.next()) != NULL) { |
972 std::string varName = convert.toString(var_name); |
972 std::string varName = get_var_name_c::get_name(var_name)->value; |
973 symbol_c *varDecl = search_var_instance_decl.get_decl(var_name); |
973 symbol_c *varDecl = search_var_instance_decl.get_decl(var_name); |
974 values[varName] = varDecl->const_value; |
974 values[varName] = varDecl->const_value; |
975 } |
975 } |
976 /* Add all variables declared into Values map and put them to initial value */ |
976 /* Add all variables declared into Values map and put them to initial value */ |
977 symbol->function_block_body->accept(*this); |
977 symbol->function_block_body->accept(*this); |
1256 void *constant_folding_c::visit(assignment_statement_c *symbol) { |
1256 void *constant_folding_c::visit(assignment_statement_c *symbol) { |
1257 std::string varName; |
1257 std::string varName; |
1258 |
1258 |
1259 symbol->r_exp->accept(*this); |
1259 symbol->r_exp->accept(*this); |
1260 symbol->l_exp->const_value = symbol->r_exp->const_value; |
1260 symbol->l_exp->const_value = symbol->r_exp->const_value; |
1261 varName = convert.toString(symbol->l_exp); |
1261 varName = get_var_name_c::get_name(symbol->l_exp)->value; |
1262 values[varName] = symbol->l_exp->const_value; |
1262 values[varName] = symbol->l_exp->const_value; |
1263 |
1263 |
1264 return NULL; |
1264 return NULL; |
1265 } |
1265 } |
1266 |
1266 |
1318 std::string varName; |
1318 std::string varName; |
1319 |
1319 |
1320 values_incoming = values; /* save incoming status */ |
1320 values_incoming = values; /* save incoming status */ |
1321 symbol->beg_expression->accept(*this); |
1321 symbol->beg_expression->accept(*this); |
1322 symbol->end_expression->accept(*this); |
1322 symbol->end_expression->accept(*this); |
1323 varName = convert.toString(symbol->control_variable); |
1323 varName = get_var_name_c::get_name(symbol->control_variable)->value; |
1324 values[varName] = symbol->beg_expression->const_value; |
1324 values[varName] = symbol->beg_expression->const_value; |
1325 |
1325 |
1326 /* Optimize dead code */ |
1326 /* Optimize dead code */ |
1327 if (VALID_CVALUE(int64, symbol->beg_expression) && VALID_CVALUE(int64, symbol->end_expression) && |
1327 if (VALID_CVALUE(int64, symbol->beg_expression) && VALID_CVALUE(int64, symbol->end_expression) && |
1328 GET_CVALUE(int64, symbol->beg_expression) > GET_CVALUE(int64, symbol->end_expression)) |
1328 GET_CVALUE(int64, symbol->beg_expression) > GET_CVALUE(int64, symbol->end_expression)) |