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

--- Comment #5 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:25860fd2a674373a6476af5ff0bd92354fc53d06

commit r15-1455-g25860fd2a674373a6476af5ff0bd92354fc53d06
Author: Jakub Jelinek <ja...@redhat.com>
Date:   Wed Jun 19 21:10:39 2024 +0200

    bitint: Fix up lowering of COMPLEX_EXPR [PR115544]

    We don't really support _Complex _BitInt(N), the only place we use
    bitint complex types is for the .{ADD,SUB,MUL}_OVERFLOW internal function
    results and COMPLEX_EXPR in the usual case should be either not present
    yet because the ifns weren't folded and will be lowered, or optimized
    into something simpler, because normally the complex bitint should be
    used just for extracting the 2 subparts from it.
    Still, with disabled optimizations it can occassionally happen that it
    appears in the IL and that is why there is support for lowering those,
    but it doesn't handle optimizing those too much, so if it uses SSA_NAME,
    it relies on them having a backing VAR_DECL during the lowering.
    This is normally achieves through the
                          && ((is_gimple_assign (use_stmt)
                               && (gimple_assign_rhs_code (use_stmt)
                                   != COMPLEX_EXPR))
                              || gimple_code (use_stmt) == GIMPLE_COND)
    hunk in gimple_lower_bitint, but as the following testcase shows, there
    is one thing I've missed, the load optimization isn't guarded by the
    above stuff.  So, either we'd need to add support for loads to
    lower_complexexpr_stmt, or because they should be really rare, this
    patch just disables the load optimization if at least one load use is
    a COMPLEX_EXPR (like we do already for PHIs, calls, asm).

    2024-06-19  Jakub Jelinek  <ja...@redhat.com>

            PR tree-optimization/115544
            * gimple-lower-bitint.cc (gimple_lower_bitint): Disable optimizing
            loads used by COMPLEX_EXPR operands.

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

Reply via email to