[Bug tree-optimization/50382] New: Reassoc doesn't optimize pointer arithmetics
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Sep 13 13:09:00 GMT 2011
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50382
Bug #: 50382
Summary: Reassoc doesn't optimize pointer arithmetics
Classification: Unclassified
Product: gcc
Version: 4.7.0
Status: UNCONFIRMED
Keywords: missed-optimization
Severity: normal
Priority: P3
Component: tree-optimization
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: jakub@gcc.gnu.org
This is something I've noticed while writing strlen optimization.
Reassoc doesn't optimize:
typedef __UINTPTR_TYPE__ uintptr_t;
char *
foo (char *p, const char *q, const char *r)
{
char *a = p + __builtin_strlen (p);
char *b = __builtin_stpcpy (a, q);
uintptr_t c = (uintptr_t) b - (uintptr_t) p;
__builtin_memcpy (b, "abcd", 4);
uintptr_t d = c + 4;
return __builtin_stpcpy (p + d, r);
}
and only RTL passes figure out that p + d is b + 4.
More information about the Gcc-bugs
mailing list