This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [tree-ssa] live analysis on local static functions


> On Tue, 2003-10-14 at 12:10, Jan Hubicka wrote:
> 
> > ;; Function q (q)
> > 
> > q ()
> > {
> >   char * <Ub244>;
> > 
> >   {
> >     <Ub244> = a;
> >     <Ub1d0>:;;
> >   };
> >   return <Ub244>;;
> > }
> > 
> > so we miss the initializer.  I've tracked down the problem to fact that
> > variable a does not have flag used set in it's annotation.  It has, when
> > I disable the inlining.  It is marked in create_ssa_var_map by seeing
> > VUSE attached to the return statement.  With inline enabled the set also
> > has VUSE but it's operand is not VAR_DECL itself, but SSA_NAME
> > 
> The assignment seems to be killed by DCE, so it should not be related to
> the used flag.  We may be missing the use-def link between the use of
> 'a' and its initialization.  Could you add it as a test case and open a

Should be there a link when the initialization happens outside the
function?
> bugzilla report?
> 
> There should be a VDEF of 'a' in that initialization.  What does
> -fdump-tree-all-vops show?

No VDEFs are emit for static initailizers.
There is VUSE <a_1> but as I've explained earlier it points to SSA_NAME
so we don't set tree-used flag on the original.

Honza
> 
> 
> Thanks.  Diego.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]