This is the mail archive of the gcc-bugs@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]

[Bug rtl-optimization/31849] [4.2/4.3 Regression] Code size regression caused by fix to PR 31360



------- 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


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