[PATCH] Fix tree-opt/29788, plain CONST_DECL leaking through

Andrew Pinski pinskia@gmail.com
Wed Nov 15 05:12:00 GMT 2006


On Tue, 2006-11-14 at 10:36 -0800, Andrew Pinski wrote:
> On Tue, 2006-11-14 at 10:14 -0800, Ian Lance Taylor wrote:
> > Andrew Pinski <pinskia@gmail.com> writes:
> > 
> > > 	* tree-inline.c (copy_body_r): Call fold after folding indirect
> > > 	reference.
> > > 
> > > 	* gfortran.fortran-torture/compile/inline_1.f90: New test.
> > 
> > > +	      *tp = fold (*tp);
> > 
> > I don't understand why this call to fold is needed if
> > fold_indirect_ref_1 returned a non-NULL value.  In that case, it seems
> > to me that we will have already folded the value.
> 
> The reason issue is fold_indirect_ref_1 does not fold a CONST_DECL after
> folding *&CONST_DECL.  I have a better fix which was recommended by
> Roger.

Here is the patch which fixes the problem but moves the folding of
*&CONST_DECL -> DECL_INITIAL (CONST_DECL) to fold_indirect_ref.

OK ? Bootstrapped and tested on i686-linux-gnu with no regressions.

Thanks,
Andrew Pinski

ChangeLog:

	* fold-const.c (fold_indirect_ref_1): Fold *&CONST_DECL down
	to what is the const decl is a place holder for.

	* gfortran.fortran-torture/compile/inline_1.f90: New testcase.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: fixfoldconst.diff.txt
Type: text/x-patch
Size: 1212 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20061115/940b1817/attachment.bin>


More information about the Gcc-patches mailing list