Print this page
12013 fix GCC4 as primary compiler


 664 
 665         if (!left_orig && !right_orig)
 666                 return;
 667         if (left_orig && right_orig)
 668                 return;
 669 
 670         if (left_orig) {
 671                 set_true_false_states_expr(my_id, expr->left,
 672                                 expr->op == SPECIAL_EQUAL ? alloc_estate_empty() : NULL,
 673                                 expr->op == SPECIAL_EQUAL ? NULL : alloc_estate_empty());
 674         } else {
 675                 set_true_false_states_expr(my_id, expr->right,
 676                                 expr->op == SPECIAL_EQUAL ? alloc_estate_empty() : NULL,
 677                                 expr->op == SPECIAL_EQUAL ? NULL : alloc_estate_empty());
 678         }
 679 }
 680 
 681 static struct range_list *strip_negatives(struct range_list *rl)
 682 {
 683         sval_t min = rl_min(rl);
 684         sval_t minus_one = { .type = rl_type(rl), .value = -1 };
 685         sval_t over = { .type = rl_type(rl), .value = INT_MAX + 1ULL };
 686         sval_t max = sval_type_max(rl_type(rl));
 687 





 688         if (!rl)
 689                 return NULL;
 690 
 691         if (type_unsigned(rl_type(rl)) && type_bits(rl_type(rl)) > 31)
 692                 return remove_range(rl, over, max);
 693 
 694         return remove_range(rl, min, minus_one);
 695 }
 696 
 697 static void handle_compare(struct expression *expr)
 698 {
 699         struct expression  *left, *right;
 700         struct range_list *left_rl = NULL;
 701         struct range_list *right_rl = NULL;
 702         struct range_list *user_rl;
 703         struct smatch_state *capped_state;
 704         struct smatch_state *left_true = NULL;
 705         struct smatch_state *left_false = NULL;
 706         struct smatch_state *right_true = NULL;
 707         struct smatch_state *right_false = NULL;




 664 
 665         if (!left_orig && !right_orig)
 666                 return;
 667         if (left_orig && right_orig)
 668                 return;
 669 
 670         if (left_orig) {
 671                 set_true_false_states_expr(my_id, expr->left,
 672                                 expr->op == SPECIAL_EQUAL ? alloc_estate_empty() : NULL,
 673                                 expr->op == SPECIAL_EQUAL ? NULL : alloc_estate_empty());
 674         } else {
 675                 set_true_false_states_expr(my_id, expr->right,
 676                                 expr->op == SPECIAL_EQUAL ? alloc_estate_empty() : NULL,
 677                                 expr->op == SPECIAL_EQUAL ? NULL : alloc_estate_empty());
 678         }
 679 }
 680 
 681 static struct range_list *strip_negatives(struct range_list *rl)
 682 {
 683         sval_t min = rl_min(rl);
 684         sval_t minus_one;
 685         sval_t over;
 686         sval_t max = sval_type_max(rl_type(rl));
 687 
 688         minus_one.type = rl_type(rl);
 689         minus_one.value = -1;
 690         over.type = rl_type(rl);
 691         over.value = INT_MAX + 1ULL;
 692 
 693         if (!rl)
 694                 return NULL;
 695 
 696         if (type_unsigned(rl_type(rl)) && type_bits(rl_type(rl)) > 31)
 697                 return remove_range(rl, over, max);
 698 
 699         return remove_range(rl, min, minus_one);
 700 }
 701 
 702 static void handle_compare(struct expression *expr)
 703 {
 704         struct expression  *left, *right;
 705         struct range_list *left_rl = NULL;
 706         struct range_list *right_rl = NULL;
 707         struct range_list *user_rl;
 708         struct smatch_state *capped_state;
 709         struct smatch_state *left_true = NULL;
 710         struct smatch_state *left_false = NULL;
 711         struct smatch_state *right_true = NULL;
 712         struct smatch_state *right_false = NULL;