On MIPS we can get better code by having can_store_by_pieces differentiate between the cases where it's used for memset operations, and those where it's used to copy a string constant. This patch introduces new SET_RATIO and SET_BY_PIECES_P macros, with appropriate defaults to preserve the existing behavior. I checked other targets and made the ones that override the default STORE_BY_PIECES_P clone the same definition for SET_BY_PIECES_P. I used CSiBE to run some code size measurements with -Os. Together, these bits add up to about 0.5% total space savings for both MIPS32R2 and MIPS64. With -mips16 there was just a tiny improvement. Look OK? I haven't yet tested on other platforms besides MIPS but will do a bootstrap on i686 before checking it in, if there are no objections to the patch otherwise. -Sandra