This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/31849] [4.2/4.3 Regression] Code size regression caused by fix to PR 31360
- From: "rearnsha at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 7 May 2007 09:43:21 -0000
- Subject: [Bug rtl-optimization/31849] [4.2/4.3 Regression] Code size regression caused by fix to PR 31360
- References: <bug-31849-374@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #7 from rearnsha at gcc dot gnu dot org 2007-05-07 10:43 -------
Here's another example of code that is now significantly worse (~20% larger).
Rather than incrementing the base pointers on each iteration of the loop, we
now maintain both base pointers and and offset. This costs two extra registers
for no benefit at all.
char * strncat(char *dest, const char *src, unsigned count)
{
char *tmp = dest;
if (count) {
while (*dest)
dest++;
while ((*dest++ = *src++)) {
if (--count == 0) {
*dest = '\0';
break;
}
}
}
return tmp;
}
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31849