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

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

https://gcc.gnu.org/g:98dc0471d5409701ae700cd7aba8716fdc500401

commit r14-10677-g98dc0471d5409701ae700cd7aba8716fdc500401
Author: Richard Biener <rguent...@suse.de>
Date:   Thu Jul 18 13:35:33 2024 +0200

    middle-end/115641 - invalid address construction

    fold_truth_andor_1 via make_bit_field_ref builds an address of
    a CALL_EXPR which isn't valid GENERIC and later causes an ICE.
    The following simply avoids the folding for f ().a != 1 || f ().b != 2
    as it is a premature optimization anyway.  The alternative would
    have been to build a TARGET_EXPR around the call.  To get this far
    f () has to be const as otherwise the two calls are not semantically
    equivalent for the optimization.

            PR middle-end/115641
            * fold-const.cc (decode_field_reference): If the inner
            reference isn't something we can take the address of, fail.

            * gcc.dg/torture/pr115641.c: New testcase.

    (cherry picked from commit 3670c70c561656a19f6bff36dd229f18120af127)

Reply via email to