middle-end/94479 - fix gimplification of address

    When gimplifying an address operand we may expose an indirect
    ref via DECL_VALUE_EXPR for example.  This is dealt with in the
    code already but it fails to consider that INDIRECT_REFs get
    gimplified to MEM_REFs.

    Fixed which makes the ICE observed on x86_64-netbsd go away.

    2020-04-07  Richard Biener  <rguenther@suse.de>

            PR middle-end/94479
            * gimplify.c (gimplify_addr_expr): Also consider generated
            MEM_REFs.

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

Fixes -fstack-check ICE when building devel/git-base.
This commit is contained in:
wiz 2020-04-08 06:49:28 +00:00
parent f247c48be2
commit 15604ae0df

View File

@ -6072,7 +6072,9 @@ gimplify_addr_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p)
/* For various reasons, the gimplification of the expression
may have made a new INDIRECT_REF. */
if (TREE_CODE (op0) == INDIRECT_REF)
if (TREE_CODE (op0) == INDIRECT_REF
|| (TREE_CODE (op0) == MEM_REF
&& integer_zerop (TREE_OPERAND (op0, 1))))
goto do_indirect_ref;
mark_addressable (TREE_OPERAND (expr, 0));