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

--- Comment #3 from CVS 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:bca558de2a24b2a78c6a321d6cec384e07759d77

commit r10-7921-gbca558de2a24b2a78c6a321d6cec384e07759d77
Author: Jakub Jelinek <ja...@redhat.com>
Date:   Thu Apr 23 21:11:36 2020 +0200

    tree: Fix up get_narrower [PR94724]

    In the recent get_narrower change, I wanted it to be efficient and avoid
    recursion if there are many nested COMPOUND_EXPRs.  That builds the
    COMPOUND_EXPR nest with the right arguments, but as build2_loc computes
some
    flags like TREE_SIDE_EFFECTS, TREE_CONSTANT and TREE_READONLY, when it
    is called with something that will not be the argument in the end, those
    flags are computed incorrectly.
    So, this patch instead uses an auto_vec and builds them in the reverse
order
    so when they are built, they are built with the correct operands.

    2020-04-23  Jakub Jelinek  <ja...@redhat.com>

            PR middle-end/94724
            * tree.c (get_narrower): Instead of creating COMPOUND_EXPRs
            temporarily with non-final second operand and updating it later,
            push COMPOUND_EXPRs into a vector and process it in reverse,
            creating COMPOUND_EXPRs with the final operands.

            * gcc.c-torture/execute/pr94724.c: New test.

Reply via email to