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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org,
                   |                            |law at gcc dot gnu.org

--- Comment #11 from Richard Biener <rguenth at gcc dot gnu.org> ---
But there's still

int
multiple_of_p (tree type, const_tree top, const_tree bottom)
{
...
    case NOP_EXPR:
      /* Can't handle conversions from non-integral or wider integral type.  */
      if ((TREE_CODE (TREE_TYPE (TREE_OPERAND (top, 0))) != INTEGER_TYPE)
          || (TYPE_PRECISION (type)
              < TYPE_PRECISION (TREE_TYPE (TREE_OPERAND (top, 0)))))
        return 0;

      /* fall through */

    case SAVE_EXPR:
      return multiple_of_p (type, TREE_OPERAND (top, 0), bottom);

which makes guards like

      || (TYPE_OVERFLOW_UNDEFINED (type)
          && multiple_of_p (type, c, s)))

break for say multiple_of_p (int, (int)(unsigned)(x*s), s).  So it's a bit
fishy in the end ... :/

Jeff originally introduced multiple_of_p, maybe he remembers something.

Reply via email to