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

qinzhao at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |qinzhao at gcc dot gnu.org

--- Comment #3 from qinzhao at gcc dot gnu.org ---
(In reply to Richard Biener from comment #2)
> 
> The gimplifier instead of
> 
>       _1 = t ();
>       D.2389 = _1;
>       e = &D.2389;
>       _2 = *e;
>       f (_2);
> 
> produces
> 
>       _1 = .DEFERRED_INIT (4, 2, &"D.2389"[0]);
>       D.2389 = _1;
>       e = .DEFERRED_INIT (8, 2, &"e"[0]);
>       _2 = t ();
>       D.2389 = _2;
>       e = &D.2389;
>       _3 = *e;
>       f (_3);
> 
> which is odd and sub-optimal at least.  Doing such things makes us rely
> on DSE to elide the uninit "inits".

Looks like that "_1 = t ()" was not treated as an initializer, therefore "_1"
was identified as an uninitialized var. "e = &D.2389" has the same issue. 
should "_1 = t ()" be treated as an initializer to _1?

Reply via email to