On 9/6/05, Richard Kenner <[EMAIL PROTECTED]> 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.