stage3/constant_folding.cc
changeset 578 70c0456affca
parent 577 f578f14cb97f
child 579 983a3b743085
equal deleted inserted replaced
577:f578f14cb97f 578:70c0456affca
   178 #define VALID_CVALUE(dtype, symbol)           ((NULL != (symbol)->const_value_##dtype) && (symbol_c::cs_const_value == (symbol)->const_value_##dtype->status))
   178 #define VALID_CVALUE(dtype, symbol)           ((NULL != (symbol)->const_value_##dtype) && (symbol_c::cs_const_value == (symbol)->const_value_##dtype->status))
   179 #define ISZERO_CVALUE(dtype, symbol)          ((VALID_CVALUE(dtype, symbol)) && (GET_CVALUE(dtype, symbol) == 0))
   179 #define ISZERO_CVALUE(dtype, symbol)          ((VALID_CVALUE(dtype, symbol)) && (GET_CVALUE(dtype, symbol) == 0))
   180 
   180 
   181 #define DO_BINARY_OPER(dtype, oper, otype)\
   181 #define DO_BINARY_OPER(dtype, oper, otype)\
   182 	if (VALID_CVALUE(dtype, symbol->r_exp) && VALID_CVALUE(dtype, symbol->l_exp)) {                                \
   182 	if (VALID_CVALUE(dtype, symbol->r_exp) && VALID_CVALUE(dtype, symbol->l_exp)) {                                \
   183 		NEW_CVALUE(dtype, symbol);                                                                             \
   183 		NEW_CVALUE(otype, symbol);                                                                             \
   184 		SET_CVALUE(otype, symbol, GET_CVALUE(dtype, symbol->l_exp) oper GET_CVALUE(dtype, symbol->r_exp));     \
   184 		SET_CVALUE(otype, symbol, GET_CVALUE(dtype, symbol->l_exp) oper GET_CVALUE(dtype, symbol->r_exp));     \
   185 	}
   185 	}
   186 
   186 
   187 #define DO_UNARY_OPER(dtype, oper, arg)\
   187 #define DO_UNARY_OPER(dtype, oper, arg)\
   188 	if (VALID_CVALUE(dtype, arg)) {                                                                                \
   188 	if (VALID_CVALUE(dtype, arg)) {                                                                                \