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: PR tree-optimization/19337


> On Thu, 2005-01-13 at 08:50 +0100, Jan Hubicka wrote:
> > Hi,
> > the problem here is link pointer being mapped incorrectly during
> > recursive inlining.
> > 
> > Honza
> > 
> > void write_char(char);
> > int len(char*);
> > void f(char *a)
> > {
> >   int col = 0;
> >   int i;
> >   void wchar(char c)
> >   {
> >     if (c == '\t')
> >      {
> >       do {
> >        wchar(' ');
> >       } while ((col%8)!=0);
> >      }
> >     else
> >      {
> >        write_char (c);
> >        col++;
> >      }
> >   }
> >   for(i =0;i<len(a);i++)
> >   {
> >    wchar(*a);
> >   }
> > }
> > 
> > 2005-01-13  Jan Hubicka  <jh@suse.cz>
> > 
> > 	PR tree-optimize/19337
> > 	* tree-inlie.c (initialize_inlined_parameters): Copy
> > 	saved_static_chain_decl only.
> Why not this instead?
> 
>   if (fn == current_function_decl)
>     p = DECL_STRUCT_FUNCTION (fn)->saved_static_chain_decl;
> 
> 
> That seems to work just as well and matches the test used for using
> the saved_args earlier in the same function.

void write_char(char);
int len(char*);
void f(char *a)
{
  int col = 0;
  int i;
  void wchar(char c)
  {
    if (c == '\t')
     {
      do {
       wchar(' ');
      } while ((col%8)!=0);
     }
    else
     {
       write_char (c);
       col++;
     }
  }
  for(i =0;i<len(a);i++)
  {
   wchar(*a);
  }
}

2005-01-13  Jan Hubicka  <jh@suse.cz>

	PR tree-optimize/19337
	* tree-inlie.c (initialize_inlined_parameters): Copy
	saved_static_chain_decl only.

Index: tree-inline.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/tree-inline.c,v
retrieving revision 1.162
diff -c -3 -p -r1.162 tree-inline.c
*** tree-inline.c	4 Jan 2005 01:54:25 -0000	1.162
--- tree-inline.c	13 Jan 2005 00:04:22 -0000
*************** initialize_inlined_parameters (inline_da
*** 808,813 ****
--- 809,816 ----
  
    /* Initialize the static chain.  */
    p = DECL_STRUCT_FUNCTION (fn)->static_chain_decl;
+   if (fn == current_function_decl)
+     p = DECL_STRUCT_FUNCTION (fn)->saved_static_chain_decl;
    if (p)
      {
        /* No static chain?  Seems like a bug in tree-nested.c.  */


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