This is the mail archive of the gcc-patches@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: 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);
> >


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