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

--- Comment #2 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:c1680bd2df187e06089b06ffe211c4abe4c440b0

commit r14-7179-gc1680bd2df187e06089b06ffe211c4abe4c440b0
Author: Jakub Jelinek <ja...@redhat.com>
Date:   Fri Jan 12 11:19:08 2024 +0100

    lower-bitint: Fix up handling of uninitialized large/huge _BitInt call
arguments [PR113316]

    The code to assign large/huge _BitInt SSA_NAMEs to partitions intentionally
    ignores uninitialized SSA_NAMEs:
              /* Also ignore uninitialized uses.  */
              if (SSA_NAME_IS_DEFAULT_DEF (s)
                  && (!SSA_NAME_VAR (s) || VAR_P (SSA_NAME_VAR (s))))
                continue;
    because there is no need to store them into memory, all we need is when
    trying to extract some limb from them use uninitialized SSA_NAME for the
    limb.

    The following testcase shows this is a problem for call arguments though,
    for those we need to create replacement SSA_NAMEs which are loaded from
    the underlying variable.  For uninitialized SSA_NAMEs because we didn't
    create underlying variable for them var_to_partition doesn't work, the
    following patch handles it by just creating an uninitialized replacement
    SSA_NAME.

    2024-01-12  Jakub Jelinek  <ja...@redhat.com>

            PR tree-optimization/113316
            * gimple-lower-bitint.cc (bitint_large_huge::lower_call): Handle
            uninitialized large/huge _BitInt arguments to calls.

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

Reply via email to