> Now when I think about this some more, I have a vague recollection > that a long time ago it used to be something like that. The problem > is that MIN_EXPR<CONSTANT, NON-CONSTANT> will of course be > NON-CONSTANT, so the memcpy call can't be inlined. Hence it was > changed to two separate __builtin_memmove() calls to have better > opportunity to inline. So probably a no-go to change it back. :(
I don't get that. From the former only one of the memmove's could have been inlined assuming that only CONSTANT sizes are inlined. The other one had a NON-CONSTANT as long as pointer following and constant propagation was not effective together. In our case the "NON-CONSTANT branch" would have been used, which is resolved by constant propagation (of the size of constant memory p points to). I assume the warning is triggered, because dead-code elimination has not removed the else part. Following this thought the MIN_EXPR would be propagated to 5 and the inliner can do its magic. Albeit it may be that now some other optimization level will trigger a warning, because some part has not been removed/constant replaced. What do you think of that? -- Andre Vehreschild * Email: vehre ad gmx dot de