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

--- Comment #17 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Richard Biener <rgue...@gcc.gnu.org>:

https://gcc.gnu.org/g:667c19de86b33648f5f4599f589a5e02adbb35cb

commit r15-67-g667c19de86b33648f5f4599f589a5e02adbb35cb
Author: Richard Biener <rguent...@suse.de>
Date:   Tue Apr 16 14:05:35 2024 +0200

    middle-end/13421 - -ftrapv vs. POINTER_DIFF_EXPR

    Currently we expand POINTER_DIFF_EXPR using subv_optab when -ftrapv
    (but -fsanitize=undefined does nothing).  That's not consistent
    with the behavior of POINTER_PLUS_EXPR which never uses addv_optab
    with -ftrapv.  Both are because of the way we select whether to use
    the trapping or the non-trapping optab - we look at the result type
    of the expression and check

      trapv = INTEGRAL_TYPE_P (type) && TYPE_OVERFLOW_TRAPS (type);

    the bugreport correctly complains that -ftrapv affects pointer
    subtraction (there's no -ftrapv-pointer).  Now that we have
    POINTER_DIFF_EXPR we can honor that appropriately.

    The patch moves both POINTER_DIFF_EXPR and POINTER_PLUS_EXPR
    handling so they will never consider trapping (or saturating)
    optabs.

            PR middle-end/13421
            * optabs-tree.cc (optab_for_tree_code): Do not consider
            {add,sub}v or {us,ss}{add,sub} optabs for POINTER_DIFF_EXPR
            or POINTER_PLUS_EXPR.
  • [Bug middle-end/13421] IA32 big... cvs-commit at gcc dot gnu.org via Gcc-bugs

Reply via email to