On Wednesday, 15 January 2014 at 01:42:07 UTC, Manu wrote:
Right, thanks for that.
I'm quite surprised by how bad that turned out actually, and with LDC,
which is usually the best at optimising that sort of thing.
Need to do some intensive experimentation... but this is a bit concerning.

GCC might do some loop merging, I haven't checked. It's just that this pattern doesn't tend to appear too much in traditional C/C++ code (after all, who splits up their loops into two parts just for fun?), so it could be that the LLVM people just never really bothered to write a pass to merge single loops that have been split (as opposed to classical loop fusion, where the loop ranges are the same, but the operations performed/target data different).

Maybe it would be possible to implement something like this fairly easily using the existing LLVM loop analyses though.

David

Reply via email to