This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: PATCH: PR tree-optimization/35494: [4.4 Regression]: Revision 132991 breaks 483.xalancbmk
On Fri, Mar 07, 2008 at 04:19:01PM +0100, Richard Guenther wrote:
> On Fri, Mar 7, 2008 at 4:00 PM, H.J. Lu <hjl.tools@gmail.com> wrote:
> > We can't fold glocal variables with NULL DECL_INITIAL. I am testing it
> > on Linux/x86 and Linux/Intel64 as well as 483.xalancbmk. OK to install
> > if all pass?
>
> Hm, use targetm.binds_local_p instead?
>
I don't think targetm.binds_local_p is appropriate here.
targetm.binds_local_p tells me if a symbol is local to
the module, which may consist of many files, and a symbol
local to the module may be initialized to a different value
in another file. But here we want to check if a symbol local
to the file.
H.J.
----
> Thanks,
> Richard.
>
> > H.J.
> > ----
> > gcc/testsuite/
> >
> > 2008-03-07 H.J. Lu <hongjiu.lu@intel.com>
> >
> > PR tree-optimization/35494
> > * g++.dg/tree-ssa/ssa-store-ccp-1.C: New.
> > * gcc.dg/tree-ssa/ssa-store-ccp-2.c: Likewise.
> >
> > gcc/
> >
> > 2008-03-07 H.J. Lu <hongjiu.lu@intel.com>
> >
> > PR tree-optimization/35494
> > * tree-ssa-ccp.c (get_symbol_constant_value): Only fold local
> > variables with NULL DECL_INITIAL.
> >
> > --- gcc/testsuite/g++.dg/tree-ssa/ssa-store-ccp-1.C.local 2008-03-07 06:45:42.000000000 -0800
> > +++ gcc/testsuite/g++.dg/tree-ssa/ssa-store-ccp-1.C 2008-03-07 06:44:53.000000000 -0800
> > @@ -0,0 +1,19 @@
> > +/* { dg-do compile } */
> > +/* { dg-options "-O2 -fdump-tree-optimized" } */
> > +
> > +class bar
> > +{
> > +public:
> > + static const int conststaticvariable;
> > +};
> > +
> > +
> > +int f(void)
> > +{
> > + return bar::conststaticvariable;
> > +}
> > +
> > +/* There should be a reference to conststaticvariable since it is
> > + global. */
> > +/* { dg-final { scan-tree-dump-times "conststaticvariable" 1 "optimized"} } */
> > +/* { dg-final { cleanup-tree-dump "optimized" } } */
> > --- gcc/testsuite/gcc.dg/tree-ssa/ssa-store-ccp-2.c.local 2008-03-07 06:58:07.000000000 -0800
> > +++ gcc/testsuite/gcc.dg/tree-ssa/ssa-store-ccp-2.c 2008-03-07 06:58:38.000000000 -0800
> > @@ -0,0 +1,14 @@
> > +/* { dg-do compile } */
> > +/* { dg-options "-O2 -fdump-tree-optimized" } */
> > +
> > +const int conststaticvariable;
> > +
> > +int f(void)
> > +{
> > + return conststaticvariable;
> > +}
> > +
> > +/* There should be 1 reference to conststaticvariable since it is
> > + global. */
> > +/* { dg-final { scan-tree-dump-times "conststaticvariable" 1 "optimized"} } */
> > +/* { dg-final { cleanup-tree-dump "optimized" } } */
> > --- gcc/tree-ssa-ccp.c.local 2008-03-06 14:18:27.000000000 -0800
> > +++ gcc/tree-ssa-ccp.c 2008-03-07 06:21:57.000000000 -0800
> > @@ -306,9 +306,10 @@ get_symbol_constant_value (tree sym)
> > if (val
> > && ccp_decl_initial_min_invariant (val))
> > return val;
> > - /* Variables declared 'const' without an initializer
> > + /* Local variables declared 'const' without an initializer
> > have zero as the intializer. */
> > if (!val
> > + && !TREE_PUBLIC (sym)
> > && (INTEGRAL_TYPE_P (TREE_TYPE (sym))
> > || SCALAR_FLOAT_TYPE_P (TREE_TYPE (sym))))
> > return fold_convert (TREE_TYPE (sym), integer_zero_node);
> >