This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/20623] ICE: fold check: original tree changed by fold with --enable-checking=fold
- From: "spop at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 21 Jun 2007 08:21:41 -0000
- Subject: [Bug middle-end/20623] ICE: fold check: original tree changed by fold with --enable-checking=fold
- References: <bug-20623-7559@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #23 from spop at gcc dot gnu dot org 2007-06-21 08:21 -------
Subject: Re: ICE: fold check: original tree changed by fold with
--enable-checking=fold
On 6/21/07, Richard Guenther <richard.guenther@gmail.com> wrote:
>
> The fold_binary change looks unnecessary.
ok.
> The rest is ok.
>
There was something wrong in the rest, so I'm proposing this fix instead,
as we were not using the modified base anymore for building the result 't'.
@@ -14191,14 +14220,15 @@ build_fold_addr_expr_with_type (tree t,
}
else
{
- tree base = t;
+ tree copy_t = copy_node (t);
+ tree base = copy_t;
while (handled_component_p (base))
base = TREE_OPERAND (base, 0);
if (DECL_P (base))
TREE_ADDRESSABLE (base) = 1;
- t = build1 (ADDR_EXPR, ptrtype, t);
+ t = build1 (ADDR_EXPR, ptrtype, copy_t);
}
return t;
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20623