# HG changeset patch # User Manuele Conti # Date 1349526064 -7200 # Node ID a010763dd4cb7904dca32a5f906cddcfab6cd129 # Parent 51a2fa6441b993bc119e8a9fb9c7a35415b32f97 Fix stage4 for compare expressions. diff -r 51a2fa6441b9 -r a010763dd4cb stage4/generate_c/generate_c_st.cc --- a/stage4/generate_c/generate_c_st.cc Fri Oct 26 10:11:28 2012 +0100 +++ b/stage4/generate_c/generate_c_st.cc Sat Oct 06 14:21:04 2012 +0200 @@ -467,50 +467,50 @@ } void *visit(equ_expression_c *symbol) { - if (get_datatype_info_c::is_TIME_compatible (symbol->datatype) || - get_datatype_info_c::is_ANY_DATE_compatible (symbol->datatype) || - get_datatype_info_c::is_ANY_STRING_compatible(symbol->datatype)) - return print_compare_function("EQ_", symbol->datatype, symbol->l_exp, symbol->r_exp); + if (get_datatype_info_c::is_TIME_compatible (symbol->l_exp->datatype) || + get_datatype_info_c::is_ANY_DATE_compatible (symbol->l_exp->datatype) || + get_datatype_info_c::is_ANY_STRING_compatible(symbol->l_exp->datatype)) + return print_compare_function("EQ_", symbol->l_exp->datatype, symbol->l_exp, symbol->r_exp); return print_binary_expression(symbol->l_exp, symbol->r_exp, " == "); } void *visit(notequ_expression_c *symbol) { - if (get_datatype_info_c::is_TIME_compatible (symbol->datatype) || - get_datatype_info_c::is_ANY_DATE_compatible (symbol->datatype) || - get_datatype_info_c::is_ANY_STRING_compatible(symbol->datatype)) - return print_compare_function("NE_", symbol->datatype, symbol->l_exp, symbol->r_exp); + if (get_datatype_info_c::is_TIME_compatible (symbol->l_exp->datatype) || + get_datatype_info_c::is_ANY_DATE_compatible (symbol->l_exp->datatype) || + get_datatype_info_c::is_ANY_STRING_compatible(symbol->l_exp->datatype)) + return print_compare_function("NE_", symbol->l_exp->datatype, symbol->l_exp, symbol->r_exp); return print_binary_expression(symbol->l_exp, symbol->r_exp, " != "); } void *visit(lt_expression_c *symbol) { - if (get_datatype_info_c::is_TIME_compatible (symbol->datatype) || - get_datatype_info_c::is_ANY_DATE_compatible (symbol->datatype) || - get_datatype_info_c::is_ANY_STRING_compatible(symbol->datatype)) - return print_compare_function("LT_", symbol->datatype, symbol->l_exp, symbol->r_exp); + if (get_datatype_info_c::is_TIME_compatible (symbol->l_exp->datatype) || + get_datatype_info_c::is_ANY_DATE_compatible (symbol->l_exp->datatype) || + get_datatype_info_c::is_ANY_STRING_compatible(symbol->l_exp->datatype)) + return print_compare_function("LT_", symbol->l_exp->datatype, symbol->l_exp, symbol->r_exp); return print_binary_expression(symbol->l_exp, symbol->r_exp, " < "); } void *visit(gt_expression_c *symbol) { - if (get_datatype_info_c::is_TIME_compatible (symbol->datatype) || - get_datatype_info_c::is_ANY_DATE_compatible (symbol->datatype) || - get_datatype_info_c::is_ANY_STRING_compatible(symbol->datatype)) - return print_compare_function("GT_", symbol->datatype, symbol->l_exp, symbol->r_exp); + if (get_datatype_info_c::is_TIME_compatible (symbol->l_exp->datatype) || + get_datatype_info_c::is_ANY_DATE_compatible (symbol->l_exp->datatype) || + get_datatype_info_c::is_ANY_STRING_compatible(symbol->l_exp->datatype)) + return print_compare_function("GT_", symbol->l_exp->datatype, symbol->l_exp, symbol->r_exp); return print_binary_expression(symbol->l_exp, symbol->r_exp, " > "); } void *visit(le_expression_c *symbol) { - if (get_datatype_info_c::is_TIME_compatible (symbol->datatype) || - get_datatype_info_c::is_ANY_DATE_compatible (symbol->datatype) || - get_datatype_info_c::is_ANY_STRING_compatible(symbol->datatype)) - return print_compare_function("LE_", symbol->datatype, symbol->l_exp, symbol->r_exp); + if (get_datatype_info_c::is_TIME_compatible (symbol->l_exp->datatype) || + get_datatype_info_c::is_ANY_DATE_compatible (symbol->l_exp->datatype) || + get_datatype_info_c::is_ANY_STRING_compatible(symbol->l_exp->datatype)) + return print_compare_function("LE_", symbol->l_exp->datatype, symbol->l_exp, symbol->r_exp); return print_binary_expression(symbol->l_exp, symbol->r_exp, " <= "); } void *visit(ge_expression_c *symbol) { - if (get_datatype_info_c::is_TIME_compatible (symbol->datatype) || - get_datatype_info_c::is_ANY_DATE_compatible (symbol->datatype) || - get_datatype_info_c::is_ANY_STRING_compatible(symbol->datatype)) - return print_compare_function("GE_", symbol->datatype, symbol->l_exp, symbol->r_exp); + if (get_datatype_info_c::is_TIME_compatible (symbol->l_exp->datatype) || + get_datatype_info_c::is_ANY_DATE_compatible (symbol->l_exp->datatype) || + get_datatype_info_c::is_ANY_STRING_compatible(symbol->l_exp->datatype)) + return print_compare_function("GE_", symbol->l_exp->datatype, symbol->l_exp, symbol->r_exp); return print_binary_expression(symbol->l_exp, symbol->r_exp, " >= "); }