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

--- Comment #24 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Aldy Hernandez <al...@gcc.gnu.org>:

https://gcc.gnu.org/g:b8e3574e68310f68116f157a35d5650600d13718

commit r15-574-gb8e3574e68310f68116f157a35d5650600d13718
Author: Aldy Hernandez <al...@redhat.com>
Date:   Thu May 16 09:47:56 2024 +0200

    Cleanup prange sanity checks.

    The pointers_handled_p() code was a temporary sanity check, and not
    even a good one, since we have a cleaner way of checking type
    mismatches with operand_check_p.  This patch removes all the code, and
    adds an explicit type check for relational operators, which are the
    main problem in PR114985.

    Adding this check makes it clear where the type mismatch is happening
    in IPA, even without prange.  I've added code to skip the range
    folding if the types don't match what the operator expects.  In order
    to reproduce the latent bug, just remove the operand_check_p calls.

    Tested on x86-64 and ppc64le with and without prange support.

    gcc/ChangeLog:

            PR tree-optimization/114985
            * gimple-range-op.cc: Remove pointers_handled_p.
            * ipa-cp.cc (ipa_value_range_from_jfunc): Skip range folding if
            operands don't match.
            (propagate_vr_across_jump_function): Same.
            * range-op-mixed.h: Remove pointers_handled_p and tweak
            operand_check_p.
            * range-op-ptr.cc (range_operator::pointers_handled_p): Remove.
            (pointer_plus_operator::pointers_handled_p): Remove.
            (class operator_pointer_diff): Remove pointers_handled_p.
            (operator_pointer_diff::pointers_handled_p): Remove.
            (operator_identity::pointers_handled_p): Remove.
            (operator_cst::pointers_handled_p): Remove.
            (operator_cast::pointers_handled_p): Remove.
            (operator_min::pointers_handled_p): Remove.
            (operator_max::pointers_handled_p): Remove.
            (operator_addr_expr::pointers_handled_p): Remove.
            (operator_bitwise_and::pointers_handled_p): Remove.
            (operator_bitwise_or::pointers_handled_p): Remove.
            (operator_equal::pointers_handled_p): Remove.
            (operator_not_equal::pointers_handled_p): Remove.
            (operator_lt::pointers_handled_p): Remove.
            (operator_le::pointers_handled_p): Remove.
            (operator_gt::pointers_handled_p): Remove.
            (operator_ge::pointers_handled_p): Remove.
            * range-op.cc (TRAP_ON_UNHANDLED_POINTER_OPERATORS): Remove.
            (range_op_handler::lhs_op1_relation): Remove pointers_handled_p
checks.
            (range_op_handler::lhs_op2_relation): Same.
            (range_op_handler::op1_op2_relation): Same.
            * range-op.h: Remove RO_* declarations.

Reply via email to