http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53914
Bug #: 53914 Summary: poor code generated for offset addressing on ppc32 Classification: Unclassified Product: gcc Version: 4.8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target AssignedTo: unassig...@gcc.gnu.org ReportedBy: amo...@gmail.com /* -m32 -O2 code for f5 thru f12 store y to a stack slot, load that to a fpr, then store the fpr. The other function store y directly from the input r5 and r6 as expected. */ void f1 (void *x, long long y) { *(long long *) (x + 32767) = y; } void f2 (void *x, long long y) { *(long long *) (x + 32766) = y; } void f3 (void *x, long long y) { *(long long *) (x + 32765) = y; } void f4 (void *x, long long y) { *(long long *) (x + 32764) = y; } void f5 (void *x, long long y) { *(long long *) (x + 32763) = y; } void f6 (void *x, long long y) { *(long long *) (x + 32762) = y; } void f7 (void *x, long long y) { *(long long *) (x + 32761) = y; } void f8 (void *x, long long y) { *(long long *) (x + 32760) = y; } void f9 (void *x, long long y) { *(long long *) (x + 32759) = y; } void f10 (void *x, long long y) { *(long long *) (x + 32758) = y; } void f11 (void *x, long long y) { *(long long *) (x + 32757) = y; } void f12 (void *x, long long y) { *(long long *) (x + 32756) = y; } void f13 (void *x, long long y) { *(long long *) (x + 32755) = y; } void f14 (void *x, long long y) { *(long long *) (x + 32754) = y; } void f15 (void *x, long long y) { *(long long *) (x + 32753) = y; } void f16 (void *x, long long y) { *(long long *) (x + 32752) = y; } void f17 (void *x, long long y) { *(long long *) (x + 32751) = y; } void f18 (void *x, long long y) { *(long long *) (x + 32750) = y; } void f19 (void *x, long long y) { *(long long *) (x + 32749) = y; } void f20 (void *x, long long y) { *(long long *) (x + 32748) = y; }