stage3/constant_folding.cc
changeset 790 a722594dcd64
parent 789 861e92dc879b
child 791 ab601bdea102
equal deleted inserted replaced
789:861e92dc879b 790:a722594dcd64
  1381 
  1381 
  1382 void *constant_folding_c::visit(repeat_statement_c *symbol) {
  1382 void *constant_folding_c::visit(repeat_statement_c *symbol) {
  1383 	map_values_t values_incoming;
  1383 	map_values_t values_incoming;
  1384 	map_values_t values_statement_result;
  1384 	map_values_t values_statement_result;
  1385 
  1385 
       
  1386 	values_incoming = values; /* save incoming status */
       
  1387 	symbol->statement_list->accept(*this);
       
  1388 
  1386 	/* Optimize dead code */
  1389 	/* Optimize dead code */
  1387 	symbol->expression->accept(*this);
  1390 	symbol->expression->accept(*this);
  1388 	if (VALID_CVALUE(bool, symbol->expression) && GET_CVALUE(bool, symbol->expression) == false)
  1391 	if (VALID_CVALUE(bool, symbol->expression) && GET_CVALUE(bool, symbol->expression) == true)
  1389 		return NULL;
  1392 		return NULL;
  1390 
  1393 
  1391 	values_incoming = values; /* save incoming status */
       
  1392 	symbol->statement_list->accept(*this);
       
  1393 	values_statement_result = values;
  1394 	values_statement_result = values;
  1394 	values = inner_left_join_values(values_statement_result, values_incoming);
  1395 	values = inner_left_join_values(values_statement_result, values_incoming);
  1395 
  1396 
  1396 	return NULL;
  1397 	return NULL;
  1397 }
  1398 }