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

--- Comment #7 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jakub Jelinek <ja...@gcc.gnu.org>:

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

commit r14-9640-gf92cf8cbbe199bda70d0dd7893e8c8836777e2d0
Author: Jakub Jelinek <ja...@redhat.com>
Date:   Sat Mar 23 11:19:09 2024 +0100

    bitint: Handle complex types in build_bitint_stmt_ssa_conflicts [PR114425]

    The task of the build_bitint_stmt_ssa_conflicts hook for
    tree-ssa-coalesce.cc next to special casing the
    multiplication/division/modulo is to ignore statements with
    large/huge _BitInt lhs which isn't in names bitmap and on the
    other side pretend all uses of the stmt are used in a later stmt
    (single user of that SSA_NAME or perhaps single user of lhs of
    the single user etc.) where the lowering will actually emit the
    code.

    Unfortunately the function wasn't handling COMPLEX_TYPE of the large/huge
    BITINT_TYPE, while the FE doesn't really support such types, they are
    used under the hood for __builtin_{add,sub,mul}_overflow{,_p}, they are
    also present or absent from the names bitmap and should be treated the
same.

    Without this patch, the operands of .ADD_OVERFLOW were incorrectly
pretended
    to be used right in that call statement rather than on the cast stmt from
    IMAGPART_EXPR of .ADD_OVERFLOW return value to some integral type.

    2024-03-23  Jakub Jelinek  <ja...@redhat.com>

            PR tree-optimization/114425
            * gimple-lower-bitint.cc (build_bitint_stmt_ssa_conflicts): Handle
            _Complex large/huge _BitInt types like the large/huge _BitInt
types.

            * gcc.dg/torture/bitint-67.c: New test.

Reply via email to