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

Reply via email to