so..I was bemaining to self extra #ifs, extra autoconf.. the checking for puts_locked... the fact that asm_fprintf calls putc one character at a time, which probably benefits from _unlocked.
1) asm_fprintf probably should skip from % to %, calling puts on each span, instead of putc one at a time. Granted, its input strings tend to be short. 2) But more so.. given, e.g.: asm_fprintf(file, "%Rfoo"); one could instead say #ifndef REGISTER_PREFIX #define REGISTER_PREFIX "" #endif fprintf(file, "%sfoo", REGISTER_PREFIX); That works for all of asm_fprintf (I, L, R, U) except %O, and %O appears little used or unused. And it doesn't handle {. jbook2:gcc jay$ grep asm_fprintf */*/* | grep { | wc -l 33 jbook2:gcc jay$ grep asm_fprintf */*/* | wc -l 318 Maybe something else could be done for those 10%? like: before: asm_fprintf (file, "\t{l|lwz} %s,", reg_names[0]); after: fprintf (file, "\t%s %s,", dialect_number ? "lwz" : "l", reg_names[0]); or bigger/faster: fprintf (file, dialect_number ? "\tlwz %s," : \tl %s,", reg_names[0]); (Really I'd rather gcc just output .o files directly...) - Jay