https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80349

--- Comment #14 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
I believe this all section needs fixing and new testcases:

10793           tree arg00 = TREE_OPERAND (arg0, 0);
10794           tree arg01 = TREE_OPERAND (arg0, 1);
10795           tree arg10 = TREE_OPERAND (arg1, 0);
10796           tree arg11 = TREE_OPERAND (arg1, 1);
10797           tree itype = TREE_TYPE (arg0);
10798 
10799           if (operand_equal_p (arg01, arg11, 0))
10800             return fold_build2_loc (loc, code, type,
10801                                 fold_build2_loc (loc, BIT_AND_EXPR,
itype,
10802                                              fold_build2_loc (loc,
10803                                                           BIT_XOR_EXPR,
itype,
10804                                                           arg00, arg10),
10805                                              arg01),
10806                                 build_zero_cst (itype));
10807 
10808           if (operand_equal_p (arg01, arg10, 0))
10809             return fold_build2_loc (loc, code, type,
10810                                 fold_build2_loc (loc, BIT_AND_EXPR,
itype,
10811                                              fold_build2_loc (loc,
10812                                                           BIT_XOR_EXPR,
itype,
10813                                                           arg00, arg11),
10814                                              arg01),
10815                                 build_zero_cst (itype));
10816 
10817           if (operand_equal_p (arg00, arg11, 0))
10818             return fold_build2_loc (loc, code, type,
10819                                 fold_build2_loc (loc, BIT_AND_EXPR,
itype,
10820                                              fold_build2_loc (loc,
10821                                                           BIT_XOR_EXPR,
itype,
10822                                                           arg01, arg10),
10823                                              arg00),
10824                                 build_zero_cst (itype));
10825 
10826           if (operand_equal_p (arg00, arg10, 0))
10827             return fold_build2_loc (loc, code, type,
10828                                 fold_build2_loc (loc, BIT_AND_EXPR,
itype,
10829                                              fold_build2_loc (loc,
10830                                                           BIT_XOR_EXPR,
itype,
10831                                                           arg01, arg11),
10832                                              arg00),
10833                                 build_zero_cst (itype));

Reply via email to