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 expand_builtin_stpcpy to only expand for string constants


 > From: Jakub Jelinek <jakub@redhat.com>
 > 
 > On Sun, May 04, 2003 at 02:22:38PM -0400, Kaveh R. Ghazi wrote:
 > > As mentioned by Jakub here:
 > > http://gcc.gnu.org/ml/gcc-patches/2003-04/msg02122.html
 > > 
 > > expanding stpcpy can pessimize code when calculating the return value  if the src string is a runtime
 > > expression.  This patch limits the expansion
 > > 
 > > 2003-05-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 > > 
 > > 	* builtins.c (expand_builtin_stpcpy): Only expand when the length
 > > 	of the source string can be evaluated at compile-time.
 > > 
 > > diff -rup orig/egcc-CVS20030504/gcc/builtins.c egcc-CVS20030504/gcc/builtins.c
 > > --- orig/egcc-CVS20030504/gcc/builtins.c	2003-05-04 01:32:45.000000000 -0400
 > > +++ egcc-CVS20030504/gcc/builtins.c	2003-05-04 13:57:06.965181974 -0400
 > > @@ -2469,8 +2469,14 @@ expand_builtin_stpcpy (arglist, target, 
 > >    else
 > >      {
 > >        tree newarglist;
 > > -      tree len = c_strlen (TREE_VALUE (TREE_CHAIN (arglist)));
 > > -      if (len == 0)
 > > +      tree src = TREE_VALUE (TREE_CHAIN (arglist));
 > > +      tree len = c_strlen (src);
 > > +
 > > +      /* Ensure we get an actual string who length can be evaluated at
 > > +         compile-time, not an expression containing a string.  This is
 > > +         because the latter will potentially produce pessimized code
 > > +         when used to produce the return value.  */
 > > +      if (!len || !c_getstr(src))
 > 
 > Why do you need both c_strlen and c_getstr calls? IMHO just
 > if (!c_getstr(src)) return 0; should be enough.
 > 	Jakub

I needed `len' as a tree (+1) to add it as the third argument needed
by expand_builtin_memcpy.  So since I had gotten `len' I checked it.

I suppose I could have calculated strlen(c_getstr)+1 and built a brand
new tree integer out of that.  Then added that tree as the third arg.

<shrug>

I don't feel strongly either way, I'll let the reviewer make the call.

--
Kaveh R. Ghazi			ghazi@caip.rutgers.edu


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