This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: DCE eliminating valid statement for ACATS c34007p
- From: Richard Guenther <richard dot guenther at gmail dot com>
- To: Richard Kenner <kenner at vlsi1 dot ultra dot nyu dot edu>
- Cc: gcc at gcc dot gnu dot org
- Date: Tue, 6 Sep 2005 10:29:14 +0200
- Subject: Re: DCE eliminating valid statement for ACATS c34007p
- References: <10509060214.AA03293@vlsi1.ultra.nyu.edu>
On 9/6/05, Richard Kenner <kenner@vlsi1.ultra.nyu.edu> wrote:
> Here's a fragment of the SSA dump for a shortened version of that
> test.
>
>
> D.860_8 = __gnat_malloc (20);
> # D.861_10 = V_MUST_DEF <D.861_9>;
> D.861 = (struct c34007p__designated *) D.860_8;
> # VUSE <D.861_10>;
> VIEW_CONVERT_EXPR<struct c34007p__T7b>(*D.861).b = 1;
> # VUSE <D.861_10>;
> VIEW_CONVERT_EXPR<struct c34007p__T7b>(*D.861).l = 3;
>
> There last two statements are confusing to me. First of all, why isn't
> the *D.861 in SSA form? But more importantly, those statements are
> modifying memory, but there's no V_MAY_DEF operand. Why not?
>
> I'm stepping through update_ssa_operands but can't figure out exactly
> where it's supposed to be written here.
You want to look at tree-ssa-operands.c:get_expr_operands() and see where
things go wrong. Also for D.861 not in SSA form, there might be a missing
call to mark_vars_to_rename and/or update_ssa somewhere. At which point
in the pass flow does the above happen? Is it ever "correct"?
Richard.